// JavaScript Document
//var aMenusConentIds = ["sidebar-menu2","sidebar-menu3","sidebar-menu4","sidebar-menu1"];
var objMenu = new Array();
objMenu["sidebarLink2"] = "sidebar-menu2";
objMenu["sidebarLink3"] = "sidebar-menu3";
objMenu["sidebarLink4"] = "sidebar-menu4";
objMenu["sidebarLink1"] = "sidebar-menu1";
var searchDefaultText = "search library web site here";
var homepageQS = "homepage"; // text to append in the query string of all links on homepage

function getCheckLinkUrl(url){
	var baseURL = "http://validator.w3.org/checklink";
	var w3cParams = "&summary=on&hide_type=all&depth=&check=Check";
	var qdelim = "?";
	var loc = escape(url);
	if (loc.indexOf('?') != -1){qdelim = "&";}
	var retVal = baseURL + qdelim + "url="+ loc + w3cParams;
	return retVal
}

function resetSidebarMenu(){
	var obj;
	var key;
	for(key in objMenu){
		obj = document.getElementById(objMenu[key]);
		if (obj !=null){
			obj.style.display = "none";
			YAHOO.util.Dom.removeClass(key,'linkbox-on');
		}
		}
}

var setSideBarMenu= function(e) {
	YAHOO.util.Event.preventDefault(e);
	resetSidebarMenu();
	if (e.srcElement && !e.target) { // supplement IE with target
      e.target = e.srcElement;
	}
	setSideMenu(e.target.id);
}

function sendLink(e,h){
	window.location = h;
}

function isHome(){
	var testHREF,i,temp,absPath,script_name,liElem,loc,loc1,loc2,str;
	retVal = false;
	script_name = document.location.toString();
	temp = script_name.indexOf('//');
	tempString = script_name.substr(temp + 2).toString();
	temp2 = tempString.indexOf('/');
	absPath = tempString.substr(temp2).toString();
	loc = absPath.indexOf("#") ;
	if (loc < absPath.indexOf("?")){loc = absPath.indexOf("?")}
	if (loc == -1){loc = absPath.length}
	str = absPath.substring(0,loc);
	if(str == "/index.cfm" || str == '/'){retVal = true;}
	return retVal;
}

function setGlobalNav(){
	var gn = document.getElementById('globalNav');
	var aElem = gn.getElementsByTagName('a');
	var testHREF,i,temp,absPath,script_name,liElem;
	/*get absolute path of existing link*/
	script_name = document.location.toString();
	temp = script_name.indexOf('//');
	tempString = script_name.substr(temp + 2).toString();
	temp2 = tempString.indexOf('/');
	absPath = tempString.substr(temp2).toString();
	/*end find abs path*/
	for(i=0;i < aElem.length; i++){
		setTabBoxLink(aElem[i],"globalnav");
		testHREF = aElem[i].getAttribute('href').toString();
		if((testHREF == script_name)||(testHREF == absPath)){
			liElem = YAHOO.util.Dom.getAncestorByTagName(aElem[i],'li');
			YAHOO.util.Dom.addClass(liElem,'hover');
			}
	}
	if(isHome()){setHomePageTabBoxes();}
}

function setOrangeBar(){
	var ob = document.getElementById('orangebar');
	var aElem = ob.getElementsByTagName('a');
	for(var i=0;i < aElem.length; i++){
		setTabBoxLink(aElem[i],"orangebar");
	}
}

function setSideMenu(id){
		var obj = document.getElementById(objMenu[id]);
		obj.style.display = "block";
		YAHOO.util.Dom.addClass(id,'linkbox-on');
}

function searchBlur(){
	var el = document.getElementById('lookinfor');
	el.style.color="#999999";
}

function searchFocus(){
	var el = document.getElementById('lookinfor');
	if (el.value == searchDefaultText){
		el.value = "";
	}
		el.style.color="#000000";
}

function setAllLinkHighlights(){
	var aHighlight = YAHOO.util.Dom.getElementsByClassName("link-highlight");
	var i,tempHREF,hashObj,hashVal,hashParam,thisA;
	for(i=0;i < aHighlight.length;i++){
			thisA = aHighlight[i].getElementsByTagName('a')[0];
			// if home page add the tab value to the query string
			if(isHome()){setTabBoxLink(thisA,"hometabs");}
			tempHREF = thisA.getAttribute('href').toString();
			YAHOO.util.Event.addListener(aHighlight[i], "click",sendLink,tempHREF);
	}
}

function setHomePageTabBoxes(){
	var demo = document.getElementById('demo');
	var aTab = YAHOO.util.Dom.getElementsByClassName('textad','div',demo);
	var aH,hLen,hHeight,ii,test,nL,strLink;
	var qaObj = new Object();
	var aTabs = YAHOO.util.Dom.getElementsByClassName('allowLink','a',demo);
	// loop through tab content areas and find number of highlight boxes
	for(var i=0; i < aTab.length; i++){
		aH = YAHOO.util.Dom.getElementsByClassName('link-highlight','div',aTab[i]);
		hLen = aH.length;
		//calculate box heights (note:demo tabs has 18.em total. leave 2em for contact email and ph
		hHeight = 4.33;
		if(hLen <= 4){hHeight = 6.2;}
		if(hLen <= 2){hHeight = 15;}
		var increment = 2;
		if (hLen/2 != Math.floor(hLen/2)){increment = 1}
		//loop through boxes and set heights
		for(ii = 0; ii <  aH.length; ii++){
			aH[ii].style.height = hHeight + "em";
			if((ii/2) == (Math.floor(ii/2))){
				aH[ii].style.borderRightWidth = '1px';
				YAHOO.util.Dom.addClass(aH[ii],'link-highlight-homepage-left');
				}
			else{
				YAHOO.util.Dom.addClass(aH[ii],'link-highlight-homepage-right');
				}
			if(ii < aH.length - increment){aH[ii].style.borderBottomWidth = '1px';}
			
		}
	}
}

function setAllSideMenuLinks(){
	var objMenu1 = document.getElementById('sidebar-menu1');
	var objMenu2 = document.getElementById('sidebar-menu2');
	var objMenu3 = document.getElementById('sidebar-menu3');
	var aLinks1 = objMenu1.getElementsByTagName('a');
	var aLinks2 = objMenu2.getElementsByTagName('a');
	var aLinks3 = objMenu3.getElementsByTagName('a');
	var i;
	for(i=0; i < aLinks1.length; i++){
		setShowMenuLink(aLinks1[i],'1');
	}
	for(i=0; i < aLinks2.length; i++){
		setShowMenuLink(aLinks2[i],'2');
	}
	for(i=0; i < aLinks3.length; i++){
		setShowMenuLink(aLinks3[i],'3');
	}
}

function setShowMenuLink(aObj,n){
	var t = aObj;
	var href = t.getAttribute('href');
	var token = '?';
	var newhref;
	
	if(href){
		if(href.indexOf('?') != -1){token = '&';}
		newhref = href + token  + 'showMenuNumber=' + n ;
		newhref = newhref.toString();
		newText = t.innerHTML; 
		t.setAttribute('href',newhref);
		t.innerHTML = newText;
	}
	return true;
}

function setTabBoxLink(aObj,n){
	var t = aObj;
	var href = t.getAttribute('href');
	var token = '?';
	var newhref;
	
	if(href){
		if(href.indexOf('?') != -1){token = '&';}
		newhref = href + token  + 'tab=' + n ;
		newhref = newhref.toString();
		newText = t.innerHTML; 
		t.setAttribute('href',newhref);
		t.innerHTML = newText;
	}
	return true;
}

function setAllLinkDisplayStyle(){
			var hslmaincontent = document.getElementById('hsl-main-content');
			var aLinks = hslmaincontent.getElementsByTagName('a');
			for(var i = 0; i < aLinks.length; i++){
			aLinks[i].style.display='inline-block';
		}
}

/****start google analytics tracking functions****/

function startListening (obj,evnt,func) {
        if (obj.addEventListener) {
                obj.addEventListener(evnt,func,false);
        } else if (obj.attachEvent) {
                obj.attachEvent("on" + evnt,func);
        }
}
function trackMailto (evnt) {
        var href = (evnt.srcElement) ? evnt.srcElement.href : this.href;
        var mailto = "/mailto/" + href.substring(7);
        if (typeof(pageTracker) == "object"){
		 	pageTracker._trackPageview(mailto);
		 }
}
function stripAfterAmp(str){
	var isAmp = (str.indexOf('&') != -1);
	if(isAmp){
		var loc = str.indexOf('&') - 1;
		str = str.substr(1,loc);
	}
	return str;
}

function trackExternalLinks (evnt) {
        var e = (evnt.srcElement) ? evnt.srcElement : this;
        while (e.tagName != "A") {
                e = e.parentNode;
        }
        var lnk = (e.pathname.charAt(0) == "/") ? e.pathname : "/" + e.pathname;
        if (e.search && e.pathname.indexOf(e.search) == -1) lnk += e.search;
        if (e.hostname != location.host) lnk = "/external/" + e.hostname + lnk;
        if (typeof(pageTracker) == "object"){
			if(lnk.indexOf('hs-library/click.cfm') != -1){
				var token = (lnk.indexOf(homepageQS) != -1) ? "&"+homepageQS : "" ;
				lnk = stripAfterAmp(lnk) + token;
			}
			pageTracker._trackPageview(lnk);
		}
}

function trackBanner(imgPath) {
		var thisDomain = window.location.host.toLowerCase();
		if(thisDomain.indexOf('www.hsl.virginia.edu') != -1){ // track stats only if the domain is production
			pageTracker._trackPageview(imgPath);
		}
}

/****end google analytics tracking functions ****/

/**
* Parses a Query String, if one is not provided, it will look in location.href<br>
* NOTE: This function will also handle test[] vars and convert them to an array inside of the return object.<br>
* This now supports #hash vars, it will return it in the object as Obj.hash
* @param    {String}    str The string to parse as a query string
* @return An object of the parts of the parsed query string
* @type Object
*/
CMHSL_getQueryString = function(str) {
    var qstr = {};
    if (!str) {
        var str = location.href.split('?');
        if (str.length != 2) {
            str = ['', location.href];
        }
    } else {
        var str = ['', str];
    }
    if (str[1].match('#')) {
        var _tmp = str[1].split('#');
        qstr.hash = _tmp[1];
        str[1] = _tmp[0];
    }
    if (str[1]) {
        str = str[1].split('&');
        if (str.length) {
            for (var i = 0; i < str.length; i++) {
                var part = str[i].split('=');
                if (part[0].indexOf('[') != -1) {
                    if (part[0].indexOf('[]') != -1) {
                        //Array
                        var arr = part[0].substring(0, part[0].length - 2);
                        if (!qstr[arr]) {
                            qstr[arr] = [];
                        }
                        qstr[arr][qstr[arr].length] = part[1];
                    } else {
                        //Object
                        var arr = part[0].substring(0, part[0].indexOf('['));
                        var data = part[0].substring((part[0].indexOf('[') + 1), part[0].indexOf(']'));
                        if (!qstr[arr]) {
                            qstr[arr] = {};
                        }
                        //Object
                        qstr[arr][data] = part[1];
                    }
                } else {
                    qstr[part[0]] = part[1];
                }
            }
        }
    }
    return qstr;
}
/**
* Parses a Query String Var<br>
* NOTE: This function will also handle test[] vars and convert them to an array inside of the return object.
* @param    {String}    str The var to get from the query string
* @return The value of the var in the querystring.
* @type String/Array
*/
CMHSL_getQueryStringVar = function(str) {
    var qs = this.CMHSL_getQueryString();
    if (qs[str]) {
        return qs[str];
    } else {
        return false;
    }
}

function HSLinit(){
	/*add click events to sidebar buttons*/
	YAHOO.util.Event.addListener("sidebarLink3", "click", setSideBarMenu);
	YAHOO.util.Event.addListener("sidebarLink2", "click", setSideBarMenu);
	YAHOO.util.Event.addListener("sidebarLink4", "click", setSideBarMenu);
	YAHOO.util.Event.addListener("sidebarLink1", "click", setSideBarMenu);
	/*add vars to trigger showmenu added to menue anchor hrefs*/
	setAllSideMenuLinks();
	YAHOO.util.Event.addListener("lookinfor", "focus", searchFocus);
	YAHOO.util.Event.addListener("lookinfor", "blur", searchBlur);
	/*set link display properties to fix link icon problem in ie, note the links in the accordions are set to inline because the break*/

	document.getElementById('lookinfor').value = searchDefaultText;
	var aBody = document.getElementsByTagName('body');
	aBody[0].style.backgroundImage = "url('/assets/templates/global/images/footer/outsidefooterbg.gif')";
	/*set global nav button highlights if on a global nav item*/
	setGlobalNav();
	setOrangeBar();
	/*set link highlight areas as needed*/
	setAllLinkHighlights();
	setAllLinkDisplayStyle();
	/*look for captcha flag because we don't want to bother if the page is not using it*/
	initCaptcha();
    /*check if iphone or i touch*/
    CMHSL_mobileCheck();

}
/* if itouch or iphone redirect to mobile site otherwise */
function CMHSL_mobileCheck(){
    var browserBntHTML = '<div id="itouchContainer"><button type="button" onclick="document.location=\'http://m.hsl.virginia.edu\'">(mobile.hsl.virginia.edu)</button></div>';
	
	if(CMHSL_isIphone()){
		
		if(CMHSL_getQueryStringVar('itouch')){
			setCookie('itouch','1');
			$('body').prepend(browserBntHTML);
		}
		else if(getCookie('itouch')){
			$('body').prepend(browserBntHTML);
		}
		else{
			document.location = 'http://m.hsl.virginia.edu';
		}
		
	}
	
}

function CMHSL_isIphone(){
    /*if the user is on our site with an itouch or iphone, show them the back to mobile button*/
    var uagent = navigator.userAgent.toLowerCase();
	
	if ( (uagent.search('iphone') > -1) || (uagent.search('ipod') > -1) ){ 
			return true; 
		}else{
			return false;
		}
}
	
function setCookie(c_name,value,expiredays){
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name){
	if (document.cookie.length>0){
			c_start=document.cookie.indexOf(c_name + "=");
			if (c_start!=-1){
					c_start=c_start + c_name.length+1;
					c_end=document.cookie.indexOf(";",c_start);
					if (c_end==-1) c_end=document.cookie.length;
					return unescape(document.cookie.substring(c_start,c_end));
			}
	  }
	return "";
}

YAHOO.util.Event.onDOMReady(HSLinit); 