/* ============================================ */
/*			Title: JS Utils						*/
/*			Author: Jim M. & Aaron G.			*/
/*			Usage: Base Structure				*/
/* ============================================ */

document.write("<style type='text/css'>#site{display:none;}</style>");


/*	Onload Handling 							*/
/* ============================================ */

// USAGE: onloadHandlers[onloadHandlers.length] = 'functionName();';

var onloadHandlers = [];
window.onload = function(){
	for(var i=0;i<onloadHandlers.length;i++){
		eval(onloadHandlers[i]);
	}
}


/*	GetElement Shortcut							*/
/* ============================================ */

// USAGE: var myElement  = $('myElementID');
//		  var myElements = $('myElementID-1', 'myElementID-2');

// RETURNS: DOM element for single argument or array of elements
//			if you pass multiple arguments

function $() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    if (arguments.length == 1)
      return element;
    elements.push(element);
  }
  return elements;
}




/*	Visual Effects								*/
/* ============================================ */

var visFX = {
	appear: function(){},
	fade: function(){},
	init: function(){}
}
onloadHandlers[onloadHandlers.length] = 'visFX.init();';



/*	Page Tracking								*/
/* ============================================ */
/* page handling for bookmarking, report etc.	*/

var ext=".php"
var page = "index";

function changeURL(me){
	window.location = "#"+me;
}

function redirectPage(){
	if (window.location.hash.length>1) {
		var newLoc = new String(window.location);
		newLoc = newLoc.slice(newLoc.indexOf('#')+1);
		newLoc = newLoc.split("|");
		var redir = "";
		for (i=0;i<newLoc.length;i++){
			redir = redir+"/"+newLoc[i];
		}
		if (newLoc.length==1){
			window.location.href=redir
		}else{
			window.location.href=redir+ext;
		}
	}
}

function callTrackingPage(page){
	if(window.XMLHttpRequest){
    	req = new XMLHttpRequest();
		req.onreadystatechange = requestStateChange;
		req.open("GET", "/tracking.php?page="+page, true);
		req.send(null);
	}else if(window.ActiveXObject){ //IE
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if(req){
			req.onreadystatechange = requestStateChange;
			req.open("GET", "/tracking.php?page="+page, true);
			req.send();
		}
	}
}

function requestStateChange(){
    /*
    readyState values
    0 = uninitialized
    1 = loading
    2 = loaded
    3 = interactive
    4 = complete
    */
    if(req.readyState == 1){
        //displayWaitingStatus(callingElement);
    }
	if(req.readyState == 4){
		eval(req.responseText);
	}
}

function trackme(me){
	//alert("tracking: "+me);
}

//onloadHandlers[onloadHandlers.length] = 'back = new BackButton();';
//onloadHandlers[onloadHandlers.length] = 'redirectPage()';

/*	External Links 								*/
/* ============================================ */
/* handling or target new	*/

function externalLinks(){
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");

	for (var i=0; i<anchors.length; i++) {
		
		var anchor = anchors[i];
		
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "mail") {
			//alert("ext-close");
			anchor.onclick = function(){
				//alert("mailed");
				// XiTi exit click
				xt_med('C',xiti_level2,this.href,'S');
			}
		}

		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "ext-close") {
			//alert("ext-close");
			anchor.onclick = function(){
				//alert("clicked");
				// XiTi exit click
				xt_med('C',xiti_level2,this.href,'S');
				redirectAfterXiti(this.href);
				return false;
			}
		}
		
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "ext") {
			if (anchor.href.indexOf('.pdf')!=-1){
				anchor.onclick = function(){
					// XiTi download click
					xt_med('C',xiti_level2,this.href,'T',this.href,1);
					return false;
				}
			}
			else{
				anchor.onclick = function(){
					// XiTi exit click
					xt_med('C',xiti_level2,this.href,'S',this.href,1);
					return false;
				}
			}
		}
		
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "int") {
			if (anchor.href.indexOf('.pdf')!=-1){
				anchor.onclick = function(){
					// XiTi download click
					xt_med('C',xiti_level2,this.href,'T',this.href,1);
					
				}
			}
			else{
				anchor.onclick = function(){
					// XiTi exit click
					xt_med('C',xiti_level2,this.href,'S',this.href,1);
					
				}
			}
		}
	}
}
onloadHandlers[onloadHandlers.length] = 'externalLinks()';


/*	Nomadic Link 								*/
/* ==================================================== */
/* This link and it's parent li needs special attention	*/
/* So we find it in the nav and give it a unique ID 	*/
/* We could move this to the structure.xsl but whatevs. */

function isolateMuseumLink(){
	var museumLink = $('nav-exhibition-nomadic-museum');
	if(!museumLink) return;
	var museumLinkLI = museumLink.parentNode;
	if(!museumLinkLI) return;
	museumLinkLI.id = 'museumLinkLI';
}
//commented out for now  onloadHandlers[onloadHandlers.length] = 'isolateMuseumLink()';


//cookie

//cookies for choosing language
function checkPop(){
	var pop = readCookie('pop');
	if(!pop){
		//openPopup();
		setPop('pop');
	}
}

function setPop(pop){
	createCookie('pop',pop,31);
	//alert('lang = ' + readCookie('lang'));
}

function clearPop(){
	eraseCookie('pop');
	//alert('lang = ' + readCookie('lang'));
}

function createCookie(name,value,days){
     if (days){
     var date = new Date();
     date.setTime(date.getTime()+(days*24*60*60*1000));
     var expires = "; expires="+date.toGMTString();
}
     
	 else var expires = "";
            document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name){
     var nameEQ = name + "=";
     var ca = document.cookie.split(';');
     for(var i=0;i < ca.length;i++)
         {
          	var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
         }
            return null;
}

function eraseCookie(name){
    createCookie(name,"",-1);
}
function closePopup(){
	document.getElementById('coming-soon-container').style.display = "none";
	document.getElementById('coming-soon').style.display = "none";
}
function openPopup(){
	if ((document.getElementById('coming-soon-container')) != null) {
		document.getElementById('coming-soon-container').style.display = "block";
	}
	if ((document.getElementById('coming-soon')) != null) {
		document.getElementById('coming-soon').style.display = "block";
	}
}
onloadHandlers[onloadHandlers.length] = 'checkPop()';

/*	Image Preloading			*/
/* ============================================ */

var preLoadedOut;
var preLoadedOver;
function preloadNavImages() {
	
	var navDiv = document.getElementById("nav");
	
     if (document.images && navDiv) {

		//alert("loading images");
		 
	  	imageNames = new Array();
		imageNames[0]="bookstore";
		imageNames[1]="exhibition";
		imageNames[2]="exhibition-acclaim";
		imageNames[3]="exhibition-journey";
		imageNames[4]="exhibition-education";
		imageNames[5]="codex";		
		// imageNames[5]="exhibition-preview";
		// imageNames[6]="exhibition-tickets";
		// imageNames[7]="exhibition-visitorInfo";
		imageNames[6]="home";
		imageNames[7]="nomadic-museum";
		imageNames[8]="portfolio";
		// imageNames[11]="selected-works";
		imageNames[9]="vision";
		imageNames[10]="vision-collaborators";
		imageNames[11]="vision-fef";
		// imageNames[15]="bookstore-selected-works";

		var imageDir = "/media/images/";
		var lang = "en";
		var imageNavDir = "/nav/";
		var imagePrefix = imageDir + lang + imageNavDir;
		var imageOutSuffix = "_0";
		var imageOverSuffix = "_1";
		var imageExtension = ".gif";

		
		preLoadedOut = new Array(imageNames.length);
		preLoadedOver = new Array(imageNames.length);

		for (var i=0; i<imageNames.length; i++){
			preLoadedOut[i] = new Image();
			preLoadedOut[i].src = imagePrefix + imageNames[i] + imageOutSuffix + imageExtension;
			preLoadedOver[i] = new Image();
			preLoadedOver[i].src =  imagePrefix + imageNames[i] + imageOverSuffix + imageExtension;
		}

	  }
}
onloadHandlers[onloadHandlers.length] = 'preloadNavImages()';


/*	Button Active State 								*/
/* ============================================ */

function setButtonStates() {
	if (document.getElementById('submit-button')) {
		submitButton = document.getElementById('submit-button');
		submitButton.onmousedown = function() { this.style.color = "#433222"; }
		submitButton.onmouseup = function() { this.style.color = "#994400"; }
		submitButton.onmouseout = function() { this.style.color = "#994400"; }
	}
}

onloadHandlers[onloadHandlers.length] = 'setButtonStates()';


/*	Cookie 								*/
/* ============================================ */

function setLanguageCookie(language_code){
	//alert(language_code);
	var exdate=new Date();
	exdate.setDate(365);
	document.cookie="userlang="+escape(language_code)+";expires="+exdate;
}

function closeWindow(){
	window.close();
}
function handleRedirect(to){
	// XiTi exit click
	xt_med('C',xiti_level2,to,'S');
	var handleWindow = function() {
		if ((window.opener) && (!window.opener.closed)){
			window.opener.location.href = to;
		}
		else {
			window.open(to);
		}
		closeWindow();
	}
	xt_img.onload = handleWindow;
	self.setTimeout(handleWindow, 2000)
}


/*	Language Toggle 								*/
/* ============================================ */

function initLangToggle(){
	if ((document.getElementById("languages")) && (document.getElementById("select-language"))){
		langLabel = document.getElementById("select-language");
		langMenu = document.getElementById("languages");
		langLabel.onclick = langMenu.onclick = function(){toggleSelectLang()}
	}
}

function toggleSelectLang(){
	if (document.getElementById("languages")){
		if (langMenu.className == "hidden"){
			langMenu.className = "shown";
		}
		else {
			langMenu.className = "hidden"
		}
	}
}

onloadHandlers[onloadHandlers.length] = 'initLangToggle()';


function redirectAfterXiti(url){
	var img_is_loaded = 0;
	var redirect = function() {if (img_is_loaded==0){document.location = url; img_is_loaded = 1;}}
	xt_img.onload = function(){redirect;}
	self.setTimeout(redirect, 2000)
}

function setXitiSite(lng){
	//alert(xtsite);
	xtsite = xiti_site_ids[lng];
	//alert(xtsite);
}

function setLanguage(lng_code){
	//alert(lng_code);
	
	if ((window.location.href.indexOf("flash-popup.php")!=-1) && (window.opener)){
		window.opener.location = window.location.protocol+ "//" + window.location.hostname + "/" + lng_code + "/thankyou.php";
	}
	
	setLanguageCookie(lng_code);
	setXitiSite(lng_code);
	xt_med("F",xiti_level2,xiti_flash_page);
}


/*	Error Message Suppression 					*/
/* ============================================ */

function handleError() {
	return true;
}

window.onerror = handleError;

/*	Deeplinking 								*/
/* ============================================ */

onloadHandlers[onloadHandlers.length] = 'isDeepLink(window.location.href)';

function isDeepLink(href){
	try{
		var urlParts = href.split('/');
		if (urlParts.length <= 4 || (urlParts.length == 5 && urlParts[4] == "" && !document.cookie.match("needToDeepLink=false"))){
			//if is homepage, user is on homepage, no need to deeplink
			createCookie("needToDeepLink", false);
			
			var high = $('high');
			var low = $('low');
			var deepLinkUrl = readCookie("deepLink");
			var flashLinkUrl = "";
			dluParts = deepLinkUrl.split('/');
			if (deepLinkUrl && dluParts.length > 4){
				for (var i = 4; i < dluParts.length; i++){
					if (dluParts[i] != ""){
						if (i > 4){
							flashLinkUrl += "|";
						}
						//remove file extension if any
						dirPart = dluParts[i].split('.');
						flashLinkUrl += dirPart[0];
					}
				}
				var hLinks = high.getElementsByTagName("a");
				var	lLinks = low.getElementsByTagName("a");
				for (i = 0; i < hLinks.length; i++){
					hLinks[i].href += "?flashvar=" + flashLinkUrl;
				}
				for (i = 0; i < lLinks.length; i++){
					lLinks[i].href = deepLinkUrl;
				}
			}
		}
		else{
			if (urlParts.length > 5 || (urlParts.length == 5 && urlParts[4] != "")){
				//if not cookied
				if(!document.cookie.match("needToDeepLink=false")){
					if(!document.cookie.match("needToDeepLink=true")){
						//store the deeplink in a cookie
						createCookie("needToDeepLink", true);
					}
					createCookie("deepLink", href);
					//redirect to the homepage
					 window.location.href = '/'+urlParts[3]+'/';
					
				}
			}
			
		}
	}catch(e){}
}


// Flash Deep linking and external linking


function callExternalInterface(link) {
/* Call a function registered as callPlayBall in the SWF named myMovie. */
getMovieName("shell").goExternalLink(link); 
}


function callInternalInterface(link) {
getMovieName("shell").goInternalLink(link); 
}


/* This utility function resolves the string movieName to a Flash object reference based on browser type. */
function getMovieName(movieName) {
return document.getElementById(movieName);


}
