var LEFT_NAV;
var IMG_PATH;
var preLoadArray = new Array();
var navlinkCount = 0;
var crosslinkCount = 1;
var buylinkCount = 6;
var planlinkCount = 2;
var imageMapCount = 4;
var pageLocation = window.location.toString();
var queryStart = pageLocation.indexOf('?');
var locationQueryString = pageLocation.substring(queryStart + 1);
var equalStart = pageLocation.indexOf('=');
function navUI() {
	var self = this;
	this.sections = new Array();
	this.flatItemsCollection =  new Object();
	this.buildFlatCollection = function() {
		for(var i=0; i < self.sections.length; i++) {
			var section = self.sections[i];
			for(var ii=0; ii < section.navItems.length; ii++) {
				var item = section.navItems[ii];
				self.flatItemsCollection[item.id] = item;
			}
		}
	};
	this.returnItem = function(id) {
		var item = null;
		item = self.flatItemsCollection[id];
		return item;
	};
}

navUI.prototype.SECTION_NORMAL = "normal";
navUI.prototype.SECTION_END = "end";

function navSection(identifier, graphic) {
	this.id = identifier;
	this.headerGraphic = graphic;
	this.navItems = new Array();
	if(arguments.length == 3) {
		this.type = LEFT_NAV.SECTION_END;
		this.backgroundImage = arguments[2];
	}
	else {
		this.type = LEFT_NAV.SECTION_NORMAL;
		this.backgroundImage = null;
	}
	
}

function navItem(identifier, img, rollOver, selected) {
	this.id = identifier;
	this.target = identifier; //identifier is of the form "/i710/index.html";
	this.image = img;
	this.rollOverImage = rollOver;
	this.selectedImage = selected;

}

function navMouseEvent(refImg, eventType) {
	var id = refImg.id;
	var wrapper = LEFT_NAV.returnItem(id);
	
	if(wrapper) {
		if(eventType == "over") {
			refImg.src = wrapper.rollOverImage;
		} 
		else if(eventType == "out") {
			refImg.src = wrapper.image;
		}
	}
}

function buildNav(selected) {
	var navMarkup = "";
	navMarkup += " <table cellpadding='0' cellspacing='0'>\n ";
	navMarkup += " <tbody>\n ";
	for(var i=0; i < LEFT_NAV.sections.length; i++) {
		var section = LEFT_NAV.sections[i];
		if(section.type == LEFT_NAV.SECTION_NORMAL) {
			navMarkup += " <tr>\n ";
			navMarkup += " <td><img id='" + section.id + "' src='" + section.headerGraphic + "' /></td>\n ";
			navMarkup += " </tr>\n ";
			for(var ii=0; ii < section.navItems.length; ii++) {
				var item = section.navItems[ii];
				var path;
				navMarkup += " <tr>\n ";
				if(selected == item.id) {
					navMarkup += " <td><img id='" + item.id + "' src='" + item.selectedImage + "' /></td>\n ";
				}
				else {
					navMarkup += " <td><a href='" + item.target + "' id='navLink" + navlinkCount + "'><img border='0' id='" + item.id + "' src='" + item.image + "' onmouseover='navMouseEvent( this, \"over\" )' onmouseout='navMouseEvent( this, \"out\")' /></a></td>\n ";
					navlinkCount += 1;
				}
				
				navMarkup += " </tr>\n ";
			}
		}
		else {
			navMarkup += " <tr>\n ";
			navMarkup += " <td style='height:72px; background-image:url(" + section.backgroundImage + "); background-repeat:no-repeat;'> \n";
			for(var ii=0; ii < section.navItems.length; ii++) {
				var item = section.navItems[ii];
				navMarkup += "<div style='margin-left:15px; margin-top:15px;'><a href='" + item.target + "' id='navLink" + navlinkCount + "'><img border='0' id='" + item.id + "' src='" + item.image + "' onmouseover='navMouseEvent( this, \"over\" )' onmouseout='navMouseEvent( this, \"out\")' /></a></div>";
				navlinkCount += 1;
				
			}
			navMarkup += " </td>\n ";
			navMarkup += " </tr>\n ";
		}
	}
	
	navMarkup += " </tbody>\n ";
	navMarkup += " </table>\n ";
	return navMarkup;
}

function preLoadImages() {
	for(key in LEFT_NAV.flatItemsCollection) {
		var item = LEFT_NAV.flatItemsCollection[key];
		//there are 3 images/item which we need to preload:
		preLoadArray[preLoadArray.length] = new Image();
		preLoadArray[preLoadArray.length - 1].src = item.image;
		
		preLoadArray[preLoadArray.length] = new Image();
		preLoadArray[preLoadArray.length - 1].src = item.rollOverImage;
		
		preLoadArray[preLoadArray.length] = new Image();
		preLoadArray[preLoadArray.length - 1].src = item.selectedImage;
		
	}
}


function resetPaths() {

	//Record all arguments in an associative array
	var args = new Object();
	var query = location.search.substring(1);
	var pairs = query.split("&");
	for (var i=0; i < pairs.length; i++) {
		var pos = pairs[i].indexOf('=');
		if (pos == -1) continue;
		var argname = pairs[i].substring(0,pos);
		var value = pairs[i].substring(pos+1);
		args[argname]=unescape(value);
	}

	var docUrl = document.location.toString();
	var isInternal = (docUrl.indexOf('id12=') != -1)?true:false;//Is true if window url contains id12
	//Reset Omniture Vars
	if (isInternal) {
		s_eVar1=args['id12']; //Set custom commerce evar
	} else {
		s_campaign=args['id9']; //Set campaign var
	}
	
	if (queryStart != -1) {
		for (i = 0; i < navlinkCount; i++) {
			if (document.getElementById('navLink'+i)) {
				var nlink = document.getElementById('navLink'+i);
				if (nlink.href.indexOf('?') != -1) {
					nlink.href = nlink.href.substring(0, nlink.href.indexOf('=')) + pageLocation.substring(equalStart, pageLocation.length);
				} else {
					nlink.href += pageLocation.substring(queryStart, pageLocation.length);
				}
			}
		}
		for (i = 0; i < crosslinkCount; i++) {
			if (document.getElementById('crossLink'+i)) {
				var clink = document.getElementById('crossLink'+i);
				if (clink.href.indexOf('?') != -1) {
					//save the current href, minus its query
					var currentClinkHref = clink.href.substring(0, clink.href.indexOf('?'));
					//save the current query, minus the initial '?':
					var currentClinkQuery = clink.href.substring(clink.href.indexOf('?') + 1);
					clink.href = currentClinkHref + "?" + currentClinkQuery + "&" + locationQueryString;
				} else {
					clink.href += pageLocation.substring(queryStart, pageLocation.length);
				}
			}
		}
		for (i = 0; i < buylinkCount; i++) {
			if (document.getElementById('buyLink'+i)) {
				var blink = document.getElementById('buyLink'+i);
				var isSprintLink = (blink.href.indexOf('sprintpcs.com') != -1)?true:false; // Is true if link contains sprintpcs.com 
				var ThirdPartyURL = '';
				var LegacyURL = '';
				//Check if the buy link goes to Sprint or Nextel
				if (isSprintLink) {
					if (isInternal) {
						ThirdPartyURL = "ATR_ExtraOne";
					} else {
						ThirdPartyURL = "ATR_pCode"
					}
				} else { //Is Nextel Link
					if (isInternal) {
						ThirdPartyURL = "id12";						
					} else {
						ThirdPartyURL = "id9";												
					}
				}
				//Rewrite URL
				if (blink.href.indexOf('&') != -1){
					//set & url, appending url string
					blink.href = blink.href.substring(0, blink.href.indexOf('&')) + "&" + ThirdPartyURL + pageLocation.substring(equalStart, pageLocation.length);
				} else {
					//set no & url, appending url string
					blink.href += "&" + ThirdPartyURL + pageLocation.substring(equalStart, pageLocation.length);
				}
			}
		}

		for (i = 0; i < planlinkCount; i++) {
			if (document.getElementById('planLink'+i)) {
				var plink = document.getElementById('planLink'+i);
				var isSprintLink = (plink.href.indexOf('sprintpcs.com') != -1)?true:false; // Is true if link contains sprintpcs.com 
				var ThirdPartyURL = '';
				var LegacyURL = '';
				//Check if the buy link goes to Sprint or Nextel
				if (isSprintLink) {
					if (isInternal) {
						ThirdPartyURL = "ATR_ExtraOne";
					} else {
						ThirdPartyURL = "ATR_pCode"
					}
				} else { //Is Nextel Link
					if (isInternal) {
						ThirdPartyURL = "id12";						
					} else {
						ThirdPartyURL = "id9";												
					}
				}
				//Rewrite URL
				if (plink.href.indexOf('&') != -1){
					//set & url, appending url string
					plink.href = plink.href.substring(0, plink.href.indexOf('&')) + "&" + ThirdPartyURL + pageLocation.substring(equalStart, pageLocation.length);
				} else {
					//set no & url, appending url string
					plink.href = plink.href.substring(0, plink.href.indexOf('?')+1) + ThirdPartyURL + pageLocation.substring(equalStart, pageLocation.length);
				}
			}
		}
	}
}

function 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=findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function resetMaps() {
	var docUrl = document.location.toString();
	var isInternal = (docUrl.indexOf('id12=') != -1)?true:false;//Is true if window url contains id12

	if (queryStart != -1) {
		for (var i = 0; i < imageMapCount; i++) {
			if (document.getElementById("Map"+i)) {
				myMap = document.getElementById("Map"+i);
				for (var nodes = 0; nodes < myMap.childNodes.length; nodes++) {
					mlink = myMap.childNodes[nodes];
					if(mlink.href) {
	
						var isSprintLink = (mlink.href.indexOf('sprintpcs.com') != -1)?true:false; // Is true if link contains sprintpcs.com 
						var ThirdPartyURL = '';
						var LegacyURL = '';
						//Check if the buy link goes to Sprint or Nextel
						if (isSprintLink) {
							if (isInternal) {
								ThirdPartyURL = "ATR_ExtraOne";
							} else {
								ThirdPartyURL = "ATR_pCode"
							}
						} else { //Is Nextel Link
							if (isInternal) {
								ThirdPartyURL = "id12";						
							} else {
								ThirdPartyURL = "id9";												
							}
						}
						//Rewrite URL
						if (mlink.href.indexOf('&') != -1){
							//set & url, appending url string
							mlink.href = mlink.href.substring(0, mlink.href.indexOf('&')) + "&" + ThirdPartyURL + pageLocation.substring(equalStart, pageLocation.length);
						} else {
							//set no & url, appending url string
							mlink.href = mlink.href.substring(0, mlink.href.indexOf('?')+1) + ThirdPartyURL + pageLocation.substring(equalStart, pageLocation.length);
						}
					}
				}
			}
		}
	}
}

/********************************************************
** Code for roll over DHTML layer on product page      **
********************************************************/
var delayHideLayer = null;

function getFile(filename)
{ oxmlhttp = null;
    try
      { oxmlhttp = new XMLHttpRequest();
        oxmlhttp.overrideMimeType("text/html");
      }
    catch(e)
      { try
          { oxmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
          }
        catch(e)
          { return null;
          }
      }
    if(!oxmlhttp) return null;
    try
      { oxmlhttp.open("GET",filename,false);
        oxmlhttp.send(null);
      }
    catch(e)
      { return null;
      }
    return oxmlhttp.responseText;
}

function delayHideFlashLayer(parentLayer, layerName) {
	var myFunc = "alt_destroyFlashLayer('"+parentLayer+"', '"+layerName+"')";
	delayHideLayer=setTimeout(myFunc,100);
}

function clearHideFlashLayer(){
	if (typeof delayHideLayer!="undefined") {
		clearTimeout(delayHideLayer)
	}
}

function alt_makeLayer(parentLayer, layerName,flashW,flashH,flashVars,flashPath,pageName,docLang){
	if(!d.getElementById(layerName)){
		
		/* Tracking addition */
		if (queryStart != -1) {
			pageName += pageLocation.substring(queryStart, pageLocation.length);
		}
		
		var newLayerContent = getFile(flashPath);
		if(newLayerContent == null) newLayerContent = MSG_UNAVAIL;
		newLayer = d.createElement('DIV');
		newLayer.id = layerName;
		newLayer.className = "floatingWindow hidden";
		
		newLayerGuts = '	<div class="popOver" onMouseover="clearHideFlashLayer()" onMouseout="delayHideFlashLayer(\''+parentLayer+'\',\''+layerName+'\')">';
		newLayerGuts += '			<a href="'+pageName+'"></a><div class="popOverContent">';
		newLayerGuts += newLayerContent;
		newLayerGuts += '			</div></a>';
		newLayerGuts += '	</div>';
		
		newLayer.innerHTML = newLayerGuts;
		try {
			d.getElementById(parentLayer).appendChild(newLayer);
		} catch(e) {
		
		}
	}
}
	
function alt_destroyFlashLayer(parentLayer, layerName){
	var theLayer = d.getElementById(layerName);
	d.getElementById(parentLayer).removeChild(theLayer);
	lastWindow = "";
}

var lastWindow;

function sprint_slide(slideWhat,startFrom,dir,offsetX,offsetY,winX,winY,winW,winH){
	theBox = d.getElementById(slideWhat);
	if(slideWhat != lastWindow && theBox.className.indexOf('show') == "-1"){
		if(!startFrom.nodeName) startFrom = d.getElementById(startFrom);
		imgs = startFrom.getElementsByTagName('img'); // firefox bug with anchors/images
		if(imgs.length >="1")startFrom = imgs[0];
		if(lastWindow){
			hideLayer(lastWindow);
		}
		
		if(winW >= "1") theBox.style.width = winW+"px";
		if(winH >= "1") theBox.style.height = winH+"px";
		
		newLeft = findPosX(startFrom)+offsetX;
		if(!isNaN(winX))newLeft = winY+offsetX;
		if(winX == "left")newLeft = findPosX(startFrom)+offsetX;
		if(winX == "right")newLeft = findPosX(startFrom)+startFrom.offsetWidth+offsetX;

		newTop = findPosY(startFrom)-106+offsetY; // -106 to compensate for being in the bodyArea
		if(!isNaN(winY))newTop = winX-106+offsetY;
		if(winY == "top")newTop = findPosY(startFrom)-106+offsetY;
		if(winY == "bot")newTop = findPosY(startFrom)-106+startFrom.offsetHeight+offsetY;

		sprint_addClass(slideWhat,"seen"); // show layer
		
		if(dir == "left"){
			linkW = startFrom.offsetWidth;
			theW = theBox.offsetWidth;
			newLeft = newLeft-theW;
		}
		
		theBox.style.top = newTop+"px";
		theBox.style.left = newLeft+"px";
		
		if(dir == "right"){
			sprint_slideRight(theBox.id, 30, 30, 0, 0);
		}
		if(dir == "left"){
			sprint_slideLeft(theBox.id, 30, 30, theW, 0);
		}
		if(dir == "down"){
			sprint_slideDown(theBox.id, 0, 30, 0, 0);
		}
		lastWindow = slideWhat;
	}
}

function sprint_slideRight(layerName, xInt, yInt, xClip, yClip){
	var theLayer = d.getElementById(layerName);
	if (xClip < theLayer.offsetWidth || yClip < theLayer.offsetHeight){
		xClip += xInt;
		yClip += yInt;
		theLayer.style.clip = "rect(auto, "+xClip+"px, "+yClip+"px, auto)";
		slideagain = setTimeout("sprint_slideRight('"+layerName+"', "+xInt+", "+yInt+", "+xClip+", "+yClip+");", 0);
	}
}

function sprint_slideLeft(layerName, xInt, yInt, xClip, yClip){
	var theLayer = d.getElementById(layerName);
	if (xClip > 0 || yClip < theLayer.offsetHeight){
		xClip -= xInt;
		yClip += yInt;
		theLayer.style.clip = "rect(auto, "+theLayer.offsetWidth+"px, "+yClip+"px, "+xClip+"px)";
		slideagain = setTimeout("sprint_slideLeft('"+layerName+"', "+xInt+", "+yInt+", "+xClip+", "+yClip+");", 0);
	}
}

function sprint_slideDown(layerName, xInt, yInt, xClip, yClip){
	var theLayer = d.getElementById(layerName);
	if (yClip < theLayer.offsetHeight){
		yClip += yInt;
		theLayer.style.clip = "rect(auto, "+theLayer.offsetWidth+"px, "+yClip+"px, "+xClip+"px)";
		slideagain = setTimeout("sprint_slideDown('"+layerName+"', "+xInt+", "+yInt+", "+xClip+", "+yClip+");", 0);
	}
}

function sprint_slideClose(layerName){
	var theLayer = d.getElementById(layerName);
	hideLayer(layerName);
	lastWindow = "";
}


var IMG_DIR = "../images/";
//Function to draw days left banner
//Implementation:  document.write(drawBanner(new Date(105, 10, 16), new Date(105, 10, 25), 'prefix', 'optinal class string'));

function drawBanner(startDate, endDate, imgPrefix, className) {
	//Last day of sale (note month is 0 based)
	var curDate = new Date();
	var stubbedBanner = IMG_DIR + imgPrefix + "_nodays.gif"; 
	var classString = "";
	if (className != null) {
		classString = "class='" + className + "' ";
	}
	//Milliseconds per day:
	oneDay = 86400000;
	if (curDate.getTime() - endDate.getTime() > oneDay) { return "<img src='" + stubbedBanner +"' " + classString + "/>" }
	
	numDays = ((endDate.getTime() - startDate.getTime()) / oneDay ) + 1 ;
	
	//Banners count down from 10 to 0
	var bannerArray = new Array();
	bannerArray[0] = IMG_DIR + imgPrefix + "_today.gif";
	bannerArray[1] = IMG_DIR + imgPrefix + "_1days.gif";
	bannerArray[2] = IMG_DIR + imgPrefix + "_2days.gif";
	bannerArray[3] = IMG_DIR + imgPrefix + "_3days.gif";
	bannerArray[4] = IMG_DIR + imgPrefix + "_4days.gif";
	bannerArray[5] = IMG_DIR + imgPrefix + "_5days.gif";
	bannerArray[6] = IMG_DIR + imgPrefix + "_6days.gif";
	bannerArray[7] = IMG_DIR + imgPrefix + "_7days.gif";
	bannerArray[8] = IMG_DIR + imgPrefix + "_8days.gif";
	bannerArray[9] = IMG_DIR + imgPrefix + "_9days.gif";
	bannerArray[10] = IMG_DIR + imgPrefix + "_10days.gif";
	
	
	whichBanner = Math.floor((endDate.getTime() - curDate.getTime()) / oneDay) + 1;
	
	if (whichBanner >= numDays) { return "<img src='" + stubbedBanner +"' " + classString + "/>"; }
	
	return "<img src='" + bannerArray[whichBanner] +"' " + classString + "/>";
}
