// Common functions

function loadRandomHeader() {
	if(window.headers === undefined) {
		headers = [
			{file: "img/label_luv_blue_header.jpg"},
			{file: "img/label_luv_red_header.jpg"},
			{file: "img/label_luv_yellow_header.jpg"}
		];
	}
	var headerIndex = Math.floor(Math.random() * 3);
    var headerO = headers[headerIndex];
    var img = document.getElementById("headerImg");
    img.src = headerO.file;
}

function loadRotatingBanner(level, dir, oldBanner) {
	// Get the banners the first time
	if(level === undefined) {
		var xhr = createServiceXHR("GET", "rotatingBanners", "inactive=0");
		xhr.onreadystatechange = function() {
			if(xhr.readyState == 4) {
				if(xhr.status == 200) {
					window.banners = JSON.parse(xhr.responseText);
					loadRotatingBanner(5, -1);
				} else {
					alert("There was an unexpected error. Please try again later or contact support. We are sorry for the inconveniences.");
				}					
			}
		};
		xhr.send(null);
	} else { // We already have the banners
		if(dir > 0) {
			level += 5; // Fading in (showing the image slowly)
			timeout = 50;
		} else if(dir < 0) {
			level -= 5; // Fading out (hiding the image slowly)
			timeout = 150;
		}
		
		var rotatingBanner = document.getElementById("rotatingBanner");
		
		// The image is fully hidden - remove the img from the DOM and create a new 
		// one so we don't get the side effect of seeing a previous image on IE, Safari 
		// before the new one finishes downloading
		if (level == 0) {
			var rotatingBanners = document.getElementById('rotatingBanners');
			rotatingBanners.removeChild(rotatingBanner);

			rotatingBanner = document.createElement('img');
			rotatingBanner.setAttribute('id', 'rotatingBanner');
			rotatingBanner.setAttribute('width', 230);
			rotatingBanner.setAttribute('height', 160);
			rotatingBanner.setAttribute('border', '0');
			
			rotatingBanners.appendChild(rotatingBanner);
		}
		

		// Apply CSS styles for fading in / out according to 'level'. If
		// level grows we are fading in (showing the image slowly), otherwise we 
		// are fading out (hiding the image slowly)

		// opacity varies from 0.0 to 1.0. A lower value makes the element
		// more transparent and a value of '0' will make it disappear from screen
		rotatingBanner.style.opacity = (level / 100); 

		// MozOpacity applies to Firefox and ranges from 0 - 1 making 0 
		// invisible and 1 totally opaque (which means 100% visible)		
		rotatingBanner.style.MozOpacity = (level / 100); 

		// KhtmlOpacity is supported in Safari
		rotatingBanner.style.KhtmlOpacity = (level / 100); 
		
		// filter varies from 0 to 100. A lower value makes the element
		// more transparent until it disappears when it reaches a value of 0
		rotatingBanner.style.filter = "alpha(opacity=" + level + ")"; 
		
		if(level == 0) {
			// The image is hidden and we have to start showing it slowly (fading in)
			// every 100 milliseconds
			dir = 1;
			timeout = 100;
			
			// Choose a new random banner if there isn't only one
			if (banners.length > 1) {
				if (oldBanner !== undefined) {
					// Make sure we don't repeat any
					do {
						next = Math.floor(Math.random() * banners.length);
					} while(next == oldBanner);
				} else {
						next = Math.floor(Math.random() * banners.length);
				}
			} else {
					var newBanner = banners[0];
			}
	
			// Assigns banner object to payload
			var newBanner = banners[next];
						
			rotatingBanner.src = newBanner.file;
				
			rotatingBanner.payload = newBanner;
			
			// Check if the banner has a link assigned to it
			if(newBanner.link == null) {
				rotatingBanner.onclick = null;
				rotatingBanner.className = "bannerNoPointer";
			} else {
				rotatingBanner.onclick = function() {
					location = this.payload.link;
					//var bannerPopup = window.open(this.payload.link); //, "bannerPopup","width=495,height=315,menubar=no,status=no,location=no,toolbar=no,scrollbars=no,resizable=no");
				}
				rotatingBanner.className = "bannerPointer";
			}
		} else if (level == 100) { 
			// The image is completely visible, start fading out every 2 seconds
			dir = -1;
			timeout = 4000;
		}	
		
		setTimeout(function() {
			loadRotatingBanner(level, dir, next)
		}, timeout); // 1 second before start fading
	} // end else
}

function createServiceXHR(method, service, params) {
	var url = "/services/" + service + ".json.php";
	if(params != undefined) {
		url += "?" + params;
	}
	var xhr;
	if(window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xhr.open(method, url);
	xhr.setRequestHeader("Cache-Control", "no-cache");
	return xhr;
}

function menuOver(menu, item) {
	menuStatus[menu].over = item;
	if(item != menuStatus[menu].down) {
		var img = document.getElementById(menu + "/" + item);
		img.src = "/assets/img/" + menu + "/" + item + "/on.jpg";
	}
}

function menuOut(menu) {
	if(menuStatus[menu].over != menuStatus[menu].down) {
		var img = document.getElementById(menu + "/" + menuStatus[menu].over);
		img.src = "/assets/img/" + menu + "/" + menuStatus[menu].over + "/off.jpg";
	}
	menuStatus[menu].over = null;
}

function menuClick(menu, item) {
	if(item != menuStatus[menu].down) {
		if(menuStatus[menu].down != null) {
			img = document.getElementById(menu + "/" + menuStatus[menu].down);
			img.src = "/assets/img/" + menu + "/" + menuStatus[menu].down + "/off.jpg";
		}
		menuStatus[menu].down = item;
		img = document.getElementById(menu + "/" + item);
		img.src = "/assets/img/" + menu + "/" + item + "/on.jpg";
	}
}

function openCheckBalance() {
	// https://wbiprod.storedvalue.com/WBI/lookupservlet?language=en
	var checkBalanceWin = window.open("https://wbiprod.storedvalue.com/WBI/lookupservlet?language=en", "WBI","scrollbars=no,dependent=no,directories=no,hotkeys=no,resizable=no,screenX=0,screenY=0,menubar=no,toolbar=no,location=no,personalbar=no,status=no,height=315,width=495");
	//checkBalanceWin.document.title = "Jean Machine - Check Gift Card Balance";
}

// Dreamweaver functions

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function callGA() {
	try {
		var pageTracker = _gat._getTracker("UA-2630129-1");
		pageTracker._trackPageview();
	} catch(err) {}
}

function loadGA() {
	var script = document.createElement("script");
	script.type = "text/javascript";
	
	var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
	script.src = gaJsHost + "google-analytics.com/ga.js";
	
	var called = false;
	
	script.onload = function () {
		if(!called) {
			called = true;
			callGA();
		}
	}
	script.onreadystatechange = function () {
		if (this.readyState == "complete" || this.readyState == "loaded") {
			if(!called) {
				called = true;
				callGA();
			}
		}
	}
	
	document.getElementsByTagName('head')[0].appendChild(script);
}
