(function($) {
// Init functions
function init() {
function checkAdBannerAlt() {
$( ".widget-adBanner .slide-img > img" ).each( function(){
if( $(this).attr( "alt" ) === "" ) {
$(this).attr( "alt", "AD Banner Image" );
}
});
}
// Add link and cursor class name on element that has data-link attribute
function addLinkOnADBanner( els ) {
$.each( els, function() {
if ( $( this ).data( "link" ) !== "" && !$( this ).hasClass( "youtube" ) ) {
$( this ).on( "click", function() {
var target = $( this ).data( "target" ),
link = $( this ).data( "link" );
if ( target === "_blank" ) {
window.open( link, target );
} else {
window.location.href = link;
}
}).addClass( "cursor" );
}
});
}
function heightCompare () {
var priHeight = $('.primary').height();
var secHeight = $('.secondary').height();
if( priHeight <= secHeight ) {
$('.primary')
.children('.inner')
.css('height', secHeight + 30);
}
}
function searchDetect () {
if( $('body').attr('data-module') == 'news' || $('body').attr('data-module') == 'announcement' ) {
if( window.location.search.length < 1 ) {
$('.search-result').addClass('hide');
}
}
}
function moveElement() {
var path = window.location.pathname.split('/');
if( path.indexOf('newss') || path.indexOf('announcement') ) {
$('.i-sidebar')
.insertBefore('.secondary .page_content');
}
}
// Doing this is to prevent directly change in the HTML
function removeSignUpItem() {
$(".login-body").find("a[href='/users/new']")
.addClass('hide')
.prev("div")
.addClass('hide');
$(".orbit-bar-search-sign-language")
.find(".icons-tools")
.closest('li')
.addClass('hide');
}
function bullsEye() {
$('.bullseye').bullseye({
effect: false
});
}
// Adding class to submenu that has dropdown items
function submenuFix() {
var item$ = $('.submenu__item.level-1');
var itemLen = item$.length;
var list$ = item$.find('.submenu__list.level-2');
for (var i = 0; i < itemLen; i++) {
if (list$.eq(i).find('li').length) {
list$
.eq(i)
.addClass('dropdown');
}
}
}
function navActive() {
var path = window.location.pathname.split('/');
var pathSlice = path.slice(1, path.length);
var url = pathSlice.join('/');
var nav$ = $('.page_menu.level_1');
var navLen = nav$.length;
$('.page_menu.level_1 > li a[href*="' + "/" + url + '"]')
.addClass('active');
}
// Specifically for IE8
function addClassOnLastMenuItem() {
// IE8 and blow don't support multiple backgrouds,
// hance using this class to detect if the current user agent is IE8
if( $( "html" ).hasClass( "no-multiplebgs" ) ) {
$( ".page_menu.level_1 > li:last-child" ).addClass( "last" );
}
}
// Main navigation dropdown
function dropdown() {
var navItemLevel1$ = $('.main-nav-item.level-1');
var dropdownMenu$ = $('.dropdown-menu.level-2');
// Adding class if nav item has dropdown
$(navItemLevel1$)
.has('.dropdown-menu')
.children('a')
.addClass('has-dropdown-menu');
// Hide all dropdowns when click on any HTML elements
$(document).on('click', function() {
$('.dropdown-menu.level-2')
.addClass('hide')
.removeClass('show');
})
// Hide all dropdown after page load
dropdownMenu$
.addClass('hide')
.removeClass('show');
$('.has-dropdown-menu').on('click', function() {
if ($(this).hasClass('has-dropdown-menu')) {
if ($(this).next('.dropdown-menu').hasClass('show')) {
dropdownMenu$.addClass('hide');
$(this)
.next('.dropdown-menu')
.removeClass('show')
.addClass('hide')
} else if ($(this).next('.dropdown-menu').hasClass('hide')) {
dropdownMenu$.addClass('hide');
dropdownMenu$.removeClass('show');
dropdownMenu$.addClass('hide');
$(this)
.next('.dropdown-menu')
.removeClass('hide')
.addClass('show')
}
}
return false;
})
}
// Targeting Home page
if ($('body').attr('class') === 'page-main') {
bullsEye();
dropdown();
// Internal page
} else {
submenuFix();
dropdown();
bullsEye();
moveElement();
searchDetect();
heightCompare();
}
removeSignUpItem();
addClassOnLastMenuItem();
addLinkOnADBanner( $(".cycle-slideshow > .slide-img") );
checkAdBannerAlt();
}
$(document).ready(function($) {
init();
getXmlFeedForCalendar();
});
}(jQuery));
var getXmlFeedForCalendar = function(){
var template = "
",
month = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
$.ajax({
"url" : "/nccu_calendar.xml",
"dataType" : "xml",
"type" : "get"
}).done(function(data){
xmldoc = $(data);
xmldoc.find("entry").each(function(i,entry){
var el = $(entry),
li = $(template),
summary_text = el.find("summary").text(),
indexA = summary_text.indexOf("-"),
indexB = summary_text.indexOf(" "),
indexC = summary_text.indexOf("/"),
startDate_text = null,
startMon_text = null,
endDate_text = null,
time_text = null;
//清除前後空白字元
summary_text = jQuery.trim(summary_text);
//篩選標題
if (summary_text.length == 31) {
startDate_text = summary_text.slice(0, indexA);
startMon_text = startDate_text.slice((indexC+1), (indexC+3));
startDay_text = startDate_text.slice(7);
endDate_text = summary_text.slice((indexA+1), indexB);
time_text = summary_text.slice((indexB+1));
} else {
startDate_text = summary_text.slice(0, indexB);
startMon_text = startDate_text.slice((indexC+1), (indexC+3));
startDay_text = startDate_text.slice(7);
endDate_text = '';
time_text = summary_text.slice((indexB+1));
}
if(startMon_text.slice(0, 1) == '0'){
console.log("slice")
startMon_text = month[startMon_text.slice(1)-1];
} else {
console.log("without slice")
startMon_text = month[startMon_text-1];
}
li.find("a").text(el.find("title").text()).attr("href", el.find("link").attr("href"));
li.find(".mon").text(startMon_text);
li.find(".day").text(startDay_text);
li.find(".event_info").text("時間:" + time_text);
$("#nccu_event_calendar").append(li);
})
bindHandler();
})
var $next = $('.events .links_next'),
$prev = $('.events .links_prev');
var bindHandler = function(){
var page_number = 1,
total_pages = Math.ceil($("#nccu_event_calendar li").length / 3);
showLis(page_number, total_pages);
$next.on("click", function(){
if(page_number < total_pages){
page_number++;
showLis(page_number,total_pages);
}
return false;
});
$prev.on("click", function(){
if(page_number > 1){
page_number--;
showLis(page_number,total_pages);
}
return false;
});
}
var showLis = function(page_number,total_pages){
var $ul = $("#nccu_event_calendar"),
start = (page_number - 1) * 3,
end = (page_number * 3) - 1;
$ul.find("li").hide();
for(var i = start; i <= end; i++){
$ul.find("li").eq(i).show();
}
if(page_number == 1 && total_pages > 1){
$prev.addClass("disabled");
$next.removeClass("disabled");
}else if(page_number > 1 && page_number < total_pages){
$prev.removeClass("disabled");
$next.removeClass("disabled");
}else if(page_number == total_pages){
$next.addClass("disabled");
}
}
}
var packagesJS = function() {
$('.open-mune').on('click', function(event) {
$(this).closest('.main_menu').toggleClass('in');
});
$('.level_1').on('click', '.dot', function(event) {
var $this = $(this);
if ($this.closest('.main_menu').hasClass('collapse')) {
// $this.closest('li').addClass('in').siblings('li').removeClass('in');
$this.siblings('.page_menu').slideToggle(300, function() {
$this.closest('li').toggleClass('in').siblings('li').removeClass('in');
}).end().parent('li').siblings('li').find('.page_menu').slideUp(300);
}
});
newsBlock();
$('.news').on('click', ".topic_prev, .topic_next", slideList);
};
var newsBlock = function() {
var $topicList = $('#topic_list');
var $listMask = $('.list_mask');
var $li = $topicList.children('li');
var $prev = $('.topic_prev');
var $next = $('.topic_next');
var _wn = $listMask.width() * -3;
var $maxWidth = $listMask.width() * -3;
$li.css('width', $listMask.width() / 3);
$topicList.css('width', $listMask.width() * 4);
if (window.innerWidth < 767 && window.innerWidth > 480) {
$li.css('width', $listMask.width() / 2);
$topicList.css('width', $listMask.width() * 6);
$maxWidth = $listMask.width() * -6;
_wn = $listMask.width() * -5;
} else if (window.innerWidth < 479) {
$li.css('width', $listMask.width());
$topicList.css('width', $listMask.width() * 12);
$maxWidth = $listMask.width() * -12;
_wn = $listMask.width() * -11;
}
checkPosition = function(left) {
if (left == 0) {
$prev.addClass('last');
} else if (left == _wn) {
$next.addClass('last');
} else if (left > 0) {
$topicList.animate({
'left': 0
});
$prev.addClass('last');
} else if (left < $maxWidth) {
$topicList.animate({
'left': 0
});
$prev.addClass('last');
} else {
$prev.removeClass('last');
$next.removeClass('last');
}
}
$prev.addClass('last');
slideList = function(e) {
var cn = e.target.className;
position = function() {
if (cn == 'topic_next') {
return '-=' + $listMask.width();
} else if (cn == 'topic_prev') {
return '+=' + $listMask.width();
}
}
$topicList.stop().animate({
'left': position()
}, 500, function() {
checkPosition($topicList.position().left)
});
}
}
$(function() {
if (getCookie("ipv6") == 'true') {
$("#ipv6").text("Now in IPv6");
} else {
$("#ipv6").text("Now in IPv4");
}
function getCookie(c_name) {
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1) {
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1) {
c_value = null;
} else {
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1) {
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start, c_end));
}
return c_value;
}
var _timer = 0;
var menuItem$ = $('.page_menu.level_1').children('li');
var menuLen = menuItem$.length;
for (var i = 0; i < menuLen; i++) {
var _this = menuItem$[i];
if ($(_this).find('.page_menu.level_2').length) {
$(_this).children('a').after('')
}
}
packagesJS();
function windowResize() {
if (window.innerWidth > 767) {
$('.main_menu').addClass('expansion').removeClass('collapse');
$('.page_menu').removeAttr('style');
} else {
$('.main_menu').addClass('collapse').removeClass('expansion');
}
$('#topic_list').css('left', 0);
$('.topic_next').removeClass('last')
newsBlock();
}
windowResize();
$(window).resize(function(event) {
clearTimeout(_timer);
_timer = setTimeout(windowResize, 30);
});
$(document).ajaxStop(function() {
if (location.pathname.split('/')[location.pathname.split('/').length - 1] == "NewsSearch") {
$('article').find('.dymanic_load').addClass("search");
}
});
});