$(document).ready(function(){
	UNCG.SearchSetup();
	$('ul#navlist-yellow').superfish();

});

var text_sz = 0;
var hcontent = null;

/* **************************************************** BEGIN FUNCTION DEFINITIONS */
function init_nav() {
	// Find the current text size from the page
	var htext_sz = $("#text");
	if(htext_sz.hasClass("large")) { text_sz = 1; }
	if(htext_sz.hasClass("larger")) { text_sz = 2; }
	// Bind text controls
	$("#text_size").find("a.up").bind( 'click', function(el){ text_size(1); $(this).blur(); return false; } );
	$("#text_size").find("a.down").bind( 'click', function(el){ text_size(-1); $(this).blur(); return false; } );
}
function text_size(sz) {
	text_sz += sz;
	if(text_sz<0){ text_sz = 0; }
	if(text_sz>2){ text_sz = 2; }
	if(!hcontent)
	{
		hcontent = $("#text");
	}
	// Set the classes and cookie
  document.cookie = "text_size="+text_sz;
	// Session only for now... +"; expires="+(24*3600000);
	switch(text_sz)
	{
		case 2:
			hcontent.removeClass('large');
			hcontent.addClass('larger');
			break;
		case 1:
			hcontent.removeClass('larger');
			hcontent.addClass('large');
			break;
		default:
			hcontent.removeClass('large');
			hcontent.removeClass('larger');
			break;
	}
	return false;
}

function writeCookie(name, value, hours) {
  var expire = "";
  if(hours != null)
  {
  expire = new Date((new Date()).getTime() + hours * 3600000);
    expire = "; expires=" + expire.toGMTString();
  }
  document.cookie = name + "=" + escape(value) + expire;
}

/*function find_external_links() {
	$("a[@rel=external]").bind( 'click', function(el){ external_link(el); } );
}*/

var timeout    = 500;
var closetimer = 0;
var closetimerMain = 0;
var homeItem = 0;
var mainItem = 0;

function homeNav_open() {
	homeNav_canceltimer();
	homeNav_close();
	$("#callout_home").hide();
	homeItem = $(this).find('.home_nav_rollover_box').css('visibility', 'visible');
}

function homeNav_close() {
	if(homeItem) homeItem.css('visibility', 'hidden');
	$("#callout_home").show();
}

function homeNav_timer() {
	closetimer = window.setTimeout(homeNav_close, timeout);
}

function homeNav_canceltimer() {
	if(closetimer) {
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

function mainNav_open() {
	mainNav_canceltimer();
	mainNav_close();
	$("#home_nav").hide();
	if($(this).hasClass('nav_discover')) { currItem = $(this).addClass('nav_discover_on'); }
	if($(this).hasClass('nav_majors')) { currItem = $(this).addClass('nav_majors_on'); }
	if($(this).hasClass('nav_visit')) { currItem = $(this).addClass('nav_visit_on'); }
	if($(this).hasClass('nav_apply')) { currItem = $(this).addClass('nav_apply_on'); }
	if($(this).hasClass('nav_cost')) { currItem = $(this).addClass('nav_cost_on'); }
	if($(this).hasClass('nav_students')) { currItem = $(this).addClass('nav_students_on'); }
	if($(this).hasClass('nav_parents')) { currItem = $(this).addClass('nav_parents_on'); }
	if($(this).hasClass('nav_counselors')) { currItem = $(this).addClass('nav_counselors_on'); }
	mainItem = $(this).find('.rollover_box').css('visibility', 'visible');
}

function mainNav_close() {
	if(mainItem) mainItem.css('visibility', 'hidden');
	$("#home_nav").show();
}

function mainNav_timer() {
	if($(this).hasClass('nav_discover_on')) { $(this).removeClass('nav_discover_on'); }
	if($(this).hasClass('nav_majors_on')) { $(this).removeClass('nav_majors_on'); }
	if($(this).hasClass('nav_visit_on')) { $(this).removeClass('nav_visit_on'); }
	if($(this).hasClass('nav_apply_on')) { $(this).removeClass('nav_apply_on'); }
	if($(this).hasClass('nav_cost_on')) { $(this).removeClass('nav_cost_on'); }
	if($(this).hasClass('nav_students_on')) { $(this).removeClass('nav_students_on'); }
	if($(this).hasClass('nav_parents_on')) { $(this).removeClass('nav_parents_on'); }
	if($(this).hasClass('nav_counselors_on')) { $(this).removeClass('nav_counselors_on'); }
	closetimerMain = window.setTimeout(mainNav_close, timeout);
}

function mainNav_canceltimer() {
	if(closetimerMain) {
		window.clearTimeout(closetimerMain);
		closetimerMain = null;
	}
}



/* **************************************************** END FUNCTION DEFINITIONS */

$(document).ready(function() {
	init_nav();
	//find_external_links();
	// Find expandables
	$(".expand_cont").hide();
	$(".expand_link").bind('click', function(ev) {
		var target = $("#"+ev.target.id+"_cont");
		$(this).html( (target.css("height")=="auto") ? "hide" : "show" );
		target.slideToggle("normal");
		ev.preventDefault();
	});
	$('#home_nav > ul > li').hoverIntent( homeNav_open, homeNav_timer );
	$('#nav_top > ul > li').not('.nav_home').hoverIntent(mainNav_open, mainNav_timer);
	//$('#home_nav > ul > li').bind('mouseenter', homeNav_open);
	//$('#home_nav > ul > li').bind('mouseleave',  homeNav_timer);
	//$('#nav_top > ul > li').not('.nav_home').bind('mouseenter', mainNav_open);
	//$('#nav_top > ul > li').bind('mouseleave',  mainNav_timer);
	
	$(".internal_callout_bg").height($(".internal_callout .padding").height() + 30);
	
	$(".img-swap").hover(
          function(){this.src = this.src.replace("_off","_on");},
          function(){this.src = this.src.replace("_on","_off");
     });
	$('a.back').click(function(){
        parent.history.back();
        return false;
    });
});

document.onclick = mainNav_close;

// COMMON.js begins

var UNCG = {
		SearchSetup: function(){
			$('#q').focus(function(){
				 if(this.value=='Search UNCG')this.value='';
			});
		
			if(!$('meta[name=unit]')[0])return;
			
			var unit = $('meta[name=unit]').attr('content');
			$('input[name=site]').remove();
			var radios = '<div id="searchInContainer"><label><input id="eduSearch" name="site" type="radio"x value="default_collection" checked="checked" /> UNCG.edu</label><label><input id="siteSearch" name="site" type="radio" value="site"/> this site</label></div>';
			$('#q').after(radios);
			$('#siteSearch').val(unit);
			$('#searchSub').css('margin-left','170px');
			$('[name=site]:radio').change(
				function(){
					
					if($(this).attr('id')=='eduSearch'){
						$('input[name=client]').val('default_frontend');
						$('input[name=proxystylesheet]').val('default_frontend');
					}else{
						var unit = $('meta[name=unit]').attr('content');
						$('input[name=client]').val(unit);
						$('input[name=proxystylesheet]').val(unit);
					}
					
			});
		}
	};

(function($){

	$.fn.hoverIntent = function(f,g) {
		
		var cfg = {
			sensitivity: 7,
			interval: 100,
			timeout: 0
		};

		cfg = $.extend(cfg, g ? { over: f, out: g } : f );

		var cX, cY, pX, pY;

		var track = function(ev) {
			cX = ev.pageX;
			cY = ev.pageY;
		};

		var compare = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);

			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
				$(ob).unbind("mousemove",track);

				ob.hoverIntent_s = 1;
				return cfg.over.apply(ob,[ev]);
			} else {

				pX = cX; pY = cY;

				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
			}
		};


		var delay = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			ob.hoverIntent_s = 0;
			return cfg.out.apply(ob,[ev]);
		};


		var handleHover = function(e) {

			var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
			while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
			if ( p == this ) { return false; }


			var ev = jQuery.extend({},e);
			var ob = this;


			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }


			if (e.type == "mouseover") {

				pX = ev.pageX; pY = ev.pageY;

				$(ob).bind("mousemove",track);

				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}


			} else {

				$(ob).unbind("mousemove",track);

				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
			}
		};


		return this.mouseover(handleHover).mouseout(handleHover);
	};
	
})(jQuery);

(function($){
	$.fn.superfish = function(op){

		var sf = $.fn.superfish,
			c = sf.c,
			$arrow = $(['<span class="',c.arrowClass,'"></span>'].join('')),
			over = function(){
				var $$ = $(this), menu = getMenu($$);
				clearTimeout(menu.sfTimer);
				$$.showSuperfishUl().siblings().hideSuperfishUl();
			},
			out = function(){
				var $$ = $(this), menu = getMenu($$), o = sf.op;
				clearTimeout(menu.sfTimer);
				menu.sfTimer=setTimeout(function(){
					o.retainPath=($.inArray($$[0],o.$path)>-1);
					$$.hideSuperfishUl();
					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
				},o.delay);	
			},
			getMenu = function($menu){
				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
				sf.op = sf.o[menu.serial];
				return menu;
			},
			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
			
		return this.each(function() {
			var s = this.serial = sf.o.length;
			var o = $.extend({},sf.defaults,op);
			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
				$(this).addClass([o.hoverClass,c.bcClass].join(' '))
					.filter('li:has(ul)').removeClass(o.pathClass);
			});
			sf.o[s] = sf.op = o;
			
			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
				if (o.autoArrows) addArrow( $('>a:first-child',this) );
			})
			.not('.'+c.bcClass)
				.hideSuperfishUl();
			
			var $a = $('a',this);
			$a.each(function(i){
				var $li = $a.eq(i).parents('li');
				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
			});
			o.onInit.call(this);
			
		}).each(function() {
			var menuClasses = [c.menuClass];
			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
			$(this).addClass(menuClasses.join(' '));
		});
	};

	var sf = $.fn.superfish;
	sf.o = [];
	sf.op = {};
	sf.IE7fix = function(){
		var o = sf.op;
		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
			this.toggleClass(sf.c.shadowClass+'-off');
		};
	sf.c = {
		bcClass     : 'sf-breadcrumb',
		menuClass   : 'sf-js-enabled',
		anchorClass : 'sf-with-ul',
		arrowClass  : 'sf-sub-indicator',
		shadowClass : 'sf-shadow'
	};
	sf.defaults = {
		hoverClass	: 'sfHover',
		pathClass	: 'overideThisToUse',
		pathLevels	: 1,
		delay		: 800,
		animation	: {opacity:'show'},
		speed		: 'normal',
		autoArrows	: true,
		dropShadows : true,
		disableHI	: false,
		onInit		: function(){},
		onBeforeShow: function(){},
		onShow		: function(){},
		onHide		: function(){}
	};
	$.fn.extend({
		hideSuperfishUl : function(){
			var o = sf.op,
				not = (o.retainPath===true) ? o.$path : '';
			o.retainPath = false;
			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
					.find('>ul').hide().css('visibility','hidden');
			o.onHide.call($ul);
			return this;
		},
		showSuperfishUl : function(){
			var o = sf.op,
				sh = sf.c.shadowClass+'-off',
				$ul = this.addClass(o.hoverClass)
					.find('>ul:hidden').css('visibility','visible');
			sf.IE7fix.call($ul);
			o.onBeforeShow.call($ul);
			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
			return this;
		}
	});

})(jQuery);

