/********************* timeline logging, remove all after testing. *************************/
		/*
		var logHideCounter=0;
		var logImageCounter=0;
		var logSwatchCounter=0;
		var logSelectCounter=0;
		var logRatingCounter=0;
		var logDetailCounter=0;
		var logGalleryCounter=0;
		// Logs.addLog('Timeline',['Page','Start']);
	*/	
/********************* timeline logging, remove all after testing. *************************/

Events.deQ("DOMLoad",function(e,n){widgets.tabs.setup(n)});
Events.deQ('DOMLoad',nxInitPageScripts);
Events.deQ('DOMLoad',legacyTablePageFix);
Behaviors.DOMLoadItems.pop();


var compareOpts=new Hash();
var compareCount=0;
var compareImgOnSrc="/assets/images/common/icons/icon_checkbox_on.gif";
var compareImgOffSrc="/assets/images/common/icons/icon_checkbox_off.gif";
var filter_1_key=[];
var filter_2_key=[];
var rowFilterStore=new Hash();

var hidePreFilterWarning=false;
var globalUrl="";
var globalParamName="";
var globalBehaviors=new Array();
var filterBehaviors=new Array();
var phoneRows=null;
var isUpgrade=false;

var waitingId="";

var phoneDataSets=new Hash();
var phoneFamilyMap=new Hash();
var phoneRatingSets=new Hash();

//Added the following for the rating&reviews project

var executeWriteReview=true;

function mapFamily(pId){
	var fam=$(pId+'-row').getAttribute('family').strip().split(' ');
	fam.forEach(function(v){
		phoneFamilyMap[v]=pId;
	});
}

function setUpPhones(){
	
/********************* timeline logging, remove all after testing. *************************/
// // Logs.addLog('Timeline',['SetUpPhones','Start']);
/********************* timeline logging, remove all after testing. *************************/
	var list=$('phoneList')
	globalUrl=list.getAttribute('url');
	globalParamName=list.getAttribute('paramName');	
/********************* timeline logging, remove all after testing. *************************/
// Logs.addLog('Timeline',['SetUpPhones','Pre filter behavior']);
/********************* timeline logging, remove all after testing. *************************/	
	if($("preFilterMessageBox")){
		hidePreFilterWarning=true;
	}
	Behaviors.run(filterBehaviors,document);
/********************* timeline logging, remove all after testing. *************************/
// Logs.addLog('Timeline',['SetUpPhones','post filter behavior']);
/********************* timeline logging, remove all after testing. *************************/
/********************* timeline logging, remove all after testing. *************************/
// Logs.addLog('Timeline',['SetUpPhones','Pre upgrade/non-upgrade behaviors']);
/********************* timeline logging, remove all after testing. *************************/
	phoneRows=$css('#phoneList tr.phone-row');
	if(phoneRows.length>0){
		phoneRows.forEach(function(el){
			rowFilterStore[el.id]={
				f1:el.getAttribute('filter1').toArray().map(function(val){return parseInt(val)}),
				f2:el.getAttribute('filter2').toArray().map(function(val){return parseInt(val)})
			};
		});		
		isUpgrade=(phoneRows[0].$css('td.col56').length>0);
		runFilters();
	}
/********************* timeline logging, remove all after testing. *************************/
// Logs.addLog('Timeline',['SetUpPhones','Post upgrade/non-upgrade behaviors']);
/********************* timeline logging, remove all after testing. *************************/
	if(isUpgrade&&location.hash.length>0){
		var upgStyle=$css(location.hash+'-row td.col56 div.opener img');
		if(upgStyle.length>0){
			openUpgradePrice(null,upgStyle[0]);
		}
	}
	
	globalBehaviors=void 0;
	
	var getPhonesSKU=location.href.getParam('phone_SKU');
	if(getPhonesSKU){
		getPhoneDetails(null, getPhonesSKU+'-row');
	}
	
/********************* timeline logging, remove all after testing. *************************/
// Logs.addLog('Timeline',['SetUpPhones','End']);
/********************* timeline logging, remove all after testing. *************************/
}

/****************************** Sort behaviors *************/
var sortCSS='#sortList td a';
var ASC='&#9650;';
var DES='&#9660;';
var savedSorts=new Hash();

	assignSort=new Behavior({
		css:sortCSS,
		events:{sortClick:[false,true,true]},
		exec:[setSort]
	});
	
	function setSort(e){
		var grp=$('sortList');
		var stype=grp.getAttribute('sortType');
		var sDir=grp.getAttribute('sortDir');
		var s=e.$t('span')[0];
		if(e.getAttribute('sortType')==stype){
			setHTML(s,sDir=='a'?ASC:DES);
			e.setAttribute('currentsort',sDir);
		}
		else{
			setHTML(s,'');
			e.setAttribute('currentsort','');
		}
	}

	function callSort(e,el){
		var url=$('sortList').getAttribute('url');
		var sType=el.getAttribute('sortType');
		var sDir=null;
		var cDir=getHTML(el.$t('span')[0]);
		if(cDir==''){
			sDir=el.getAttribute('defaultSort');
		}
		else{
			sDir=el.getAttribute('currentsort')=='a'?'d':'a';
		}
		showLoadingMessage();
		if(savedSorts[sType+sDir]){
			doSort(sType+sDir);
		}
		else{
			XHR.quickSend({id:'sorting',url:url.addParam('sortType',sType).addParam('sortDir',sDir),method:'GET',handler:retrieveSort});
		}
	}
	function retrieveSort(cont,target,rid){
		var c=cont.responseXML;
		var phones=c.getElementsByTagName('phones')[0];
		var sType=phones.getAttribute('sortType');
		var sDir=phones.getAttribute('sortDir');
		var dList=phones.getElementsByTagName('phone');
		var pList=[];
		for(var x=0; x<dList.length; x++){
			pList[x]=dList[x];
		}
		var rList=[];
		pList.forEach(function(val){
			var id=val.getAttribute('id');
			var fam=val.getAttribute('family');
			var ids=[id];
			if(fam!=null){
				ids=ids.concat(fam.split(/\s*,\s*/));
			}
			ids.removeDuplicates();
			rList=rList.concat(ids);
		});
		savedSorts[sType+sDir]={
			sortType:sType,
			sortDir:sDir,
			values:rList.clone()
		};
		doSort(sType+sDir);
		XHR.deleteRequest(rid);
		cont=null;
	}
	
	function doSort(id){
		var ids=savedSorts[id].values;
		var grp=$('sortList');
		grp.setAttribute('sortType',savedSorts[id].sortType);
		grp.setAttribute('sortDir',savedSorts[id].sortDir);		
		var nodeList=[];
		var t=$('phoneList').$t('tbody')[0];		
		ids.forEach(function(v){
			if($(v+'-row')){
				nodeList.push(t.removeChild($(v+'-row')));
			}
		});
		nodeList.forEach(function(v){
			t.appendChild(v);
		});
		$css(sortCSS).forEach(function(v){
			setSort(v);
		});
		hideLoadingMessage();
	}

	Events.add('sortClick','click',callSort);


/****************************** Row behaviors *************/
	function doSwatchClick(e,targ){
		var v=targ.getAttribute('colorvalue');
		var f=$(v+'-row');
		var fam=f.getAttribute('family').strip().split(' ');
		fam.forEach(function(val){
			if(val==v){
				$(val+'-row').toggleOn();
			}
			else{
				$(val+'-row').toggleOff();
			}
		});			
	};	
/**********************************************************************/
	
/* compare button functions */
	globalBehaviors[globalBehaviors.length]=new Behavior({
		css:'#compareBar img.compareButton',
		events:{compareButtonClick:[false,true,true],
			compareButtonEnable:true,
			compareButtonDisable:true
			},
		exec:[function(e){
				setOpacity(e,'50');
			}
		]
	});

	function doCompareDisable(e,el){
		setOpacity(el,'50');
	};
	function doCompareEnable(e,el){
		setOpacity(el,'100');
	};
	
	var msgCompareLess2=(nxVars.lang=='en')?'Please select at least two phones to compare':'Por favor, selecciona al menos dos teléfonos para comparar';
	var msgCompareMore5=(nxVars.lang=='en')?'You may select no more than five phones to compare':'No puedes seleccionar más de cinco teléfonos para comparar';
	
	function doCompareClick(e,el){
		if(compareCount<2){
			setHTML('compareMessage',msgCompareLess2);
		}
		else if(compareCount>5){
			setHTML('compareMessage',msgCompareMore5);
		}
		else{
			var url=$('compareBar').getAttribute('url');
			var ext=compareOpts.filterKeys(function(val){return val}).join('|');
			nxPopup('comparePhones',url.addParam('phones',ext),true);
			showCompareWithInq();
		}
	};
	
	Events.add('compareButtonClick','click',doCompareClick);
	Events.add('compareButtonEnable','enable',doCompareEnable);
	Events.add('compareButtonDisable','disable',doCompareDisable);
	
/* list page Color drop down functions */
/*modded this function per multi browser*/	
	function doListSelectChange(e,el){
		if($($(el).$anc('tr'))==$($(el).options[$(el).selectedIndex].value+'-row'))
			return;
		$($(el).$anc('tr')).toggleOff();
		$($(el).options[$(el).selectedIndex].value+'-row').toggleOn();
		for(var x=0; x<$(el).options.length; x++){
			if($(el).options[x].defaultSelected){
				$(el).options[x].selected=true;
				break;
			}
		}	
	};

	/* compare checkbox functions */
	globalBehaviors[globalBehaviors.length]=new Behavior({
		css:'#phoneList img.compareImage',
		events:{compareBoxClick:true},
		exec:[function(e){
				compareOpts[e.id.split('-')[0]]=false;
/********************* timeline logging, remove all after testing. *************************/
	
	//	logImageCounter++;
		// Logs.addLog('Timeline',['Compare Images',logImageCounter]);
	
/********************* timeline logging, remove all after testing. *************************/	
			}
		]
	});
	
	function doCompareBoxClick(e,el){
		setHTML('compareMessage','');
		if(hasClass(el,'compareOff')){
			replaceClass(el,'compareOff','compareOn');
			swap(el,compareImgOnSrc);
			compareOpts[el.id.split('-')[0]]=true;
			compareCount++;
			if(compareCount>=2){
				Events.send('enable',$css('#compareBar img.compareButton')[0]);			
			}
		}
		else{
			replaceClass(el,'compareOn','compareOff');
			swap(el,compareImgOffSrc);
			compareOpts[el.id.split('-')[0]]=false;
			compareCount--;
			if(compareCount<2){
				Events.send('disable',$css('#compareBar img.compareButton')[0]);			
			}
		}		
	};
	Events.add('compareBoxClick','click',doCompareBoxClick);
	
	
/**********************************************************************/		
	
/* filtering events */
	globalBehaviors[globalBehaviors.length]=new Behavior({
		css:'#phone-filters',
		events:{submitAutoStop:[false,true,true]}
	});
	
	function runFilters(){
		var vCount=0;
		rowFilterStore.forEach(function(row,rowId){		
			var f1k=(filter_1_key.length>0)?filter_1_key.every(function(val,key){
				return row.f1[key]>=val;
			}):true;	
			var f2k=(filter_2_key.length>0)?filter_2_key.every(function(val,key){
				return row.f2[key]>=val;
			}):true;	
			var hideMe=(!(f1k&&f2k)||!($(rowId).hasClass('family-current')));
			if(hideMe){
				$(rowId).toggleOff();				
			}
			else{
				$(rowId).toggleOn();
				vCount++;
			}
		});
		noPhonesMessage(vCount);
/************************Omniture Code********************************************/
				
	};
	
	// handle a filter click event
	filterBehaviors[filterBehaviors.length]=new Behavior({
		css:'#phone-filters input[name=filter1]',
		events:{filterClick:true},
		exec:[function(el){filter_1_key.push(el.checked?1:0);}]
	});
	filterBehaviors[filterBehaviors.length]=new Behavior({
		css:'#phone-filters input[name=filter2]',
		events:{filterClick:true},
		exec:[function(el){filter_2_key.push(el.checked?1:0);}]			
	});
	function doFilterClick(e,el){
		var fm=el.form;
		var nm=el.name;
		for(var x=0; x<fm.elements[nm].length;x++){
			var v=fm.elements[nm][x].checked?1:0;
			if(nm=='filter1'){filter_1_key[x]=v}
			else{filter_2_key[x]=v}
		}
		runFilters();
	};
	Events.add('filterClick','click',doFilterClick);
	
	
	/* filter reset event */

	filterBehaviors[filterBehaviors.length]=new Behavior({
		 css:'#phone-filters td.last a, #filterResetButton',
		 events:{filterReset:[false,true,true]}
	});

	function resetFilters(){
		filter_1_key.clear();
		filter_2_key.clear();
		var fm=$('phone-filters');
		for(var x=0; x<fm.elements['filter1'].length;x++){
			fm.elements['filter1'][x].checked=false;
		}
		for(var x=0; x<fm.elements['filter2'].length;x++){
			fm.elements['filter2'][x].checked=false;
		}
		phoneRows.toggleOn();
		if(hidePreFilterWarning){
			setDisplay("preFilterMessageBox","none");
			hidePreFilterWarning=false;
		}
		runFilters();
		//setDisplay('no-phones','none');
	};	
	Events.add('filterReset','click',resetFilters);

	//No phones message when there are no phones for filter selection
	function noPhonesMessage(phoneCount){
		if(phoneCount>0){
			setDisplay('no-phones','none');
		} else { 
			setDisplay('no-phones','block');
		}
	}
	
	
/******************* non-Upgrade Only Functions *********************************/
	

	
	
/* List Form Submission	functions */

	function checkListPurchaseQuantity(ev,el){
		if ((!validatePurchaseType(el)) || (!validateQuantityField(el))){
			return false;
		} else {
			//Events.kill(ev);
			return true;
    	}
	};
	
/* list page quantity box functions */	
	function doQuantityChange(e,el){
		var a=$(el).$anc('tr');
		var nm=a.getAttribute('id').split('-')[0];
		var fm=$(el).$anc('tr').getAttribute('family').strip().split(' ');
		fm.forEach(function(val){
			if(val==nm){return}
			var nd=$(val+'-row').$a('name','phoneQuantity','input');
			if(nd.length>0){
				nd[0].value=el.value;
			}
		});
	};
	
	function doRadioClick(e,el){
		var a=$(el).$anc('tr');
		var nm=a.getAttribute('id').split('-')[0];
		var fm=$(el).$anc('tr').getAttribute('family').strip().split(' ');
		fm.forEach(function(val){
			if(val==nm){return}
			var nd=$(val+'-row').$a('name','purchaseType','input');
			if(nd.length>0){
				nd.forEach(function(v){
					if(v.value==el.value){
						v.checked=true;
					}
				});
			}
		});
	};
	
/******************** Upgrade Only functions ************************************/
	/* ratings functions */		
	function closeUpgradePrice(e,el){
		var row=$(el).$anc('tr');
		var fam=row.getAttribute('family').strip().split(' ');
		fam.forEach(function(v){
			//var pBox=$css('#'+v+'-row td.col56 div.open')[0];
			var pBox=$(v+'-row').$css('td.col56 div.open')[0];
			if(pBox){
				setClass(pBox,'closed');
			}			
		});
	};
	
	/* upgrade activation checkbox functions */	

	function doUpgradeFamilyActivate(e,el){
		var fam=$(el).$anc('tr').getAttribute('family').strip().split(' ');
		var cVal=$(el).checked;
		fam.forEach(function(val){
			var rads=$(val+'-row').$a('name','isUpgradeNow','input');
			rads.forEach(function(v){
				v.checked=cVal;
			});
		});			
	};	

	/* upgrade opener functions */	
	
	function openUpgradePrice(e,el){
		var row=$(el).$anc('tr');
		var fam=row.getAttribute('family').strip().split(' ');
		fam.forEach(function(v){
			//var pBox=$css('#'+v+'-row td.col56 div.closed')[0];
			var pBox=$(v+'-row').$css('td.col56 div.closed')[0];
			if(pBox){
				setClass(pBox,'open overlay');
			}			
		});
	}

	/* upgrade radio functions */	
	
	function doUpgradeRadioSingle(e,el){
		var grp=$(el).$anc(4);
		var opts=grp.$a('name','contractLength','input');
		opts.forEach(function(val){
			var group=val.$anc('div.priceOption');
			if(val.checked){
				addClass(group,'selected');					
			}
			else{
				removeClass(group,'selected');
			}
		});
	}
	
	function doUpgradeRadioFamily(e,el){
		var fam=$(el).$anc('tr').getAttribute('family').strip().split(' ');
		var cVal=$(el).value;
		fam.forEach(function(val){
			var rads=$(val+'-row').$a('name','contractLength','input');
			rads.forEach(function(v){	
				if(v.value==cVal){
					v.checked=true;
					doUpgradeRadioSingle(null,v);
				}
			});
		});
	}

/******************** Misc. Behaviors ************************/
/* ratings pop-up functions */

	
	function showRatings(e,el){
		var pId=$(el).$anc('tr').id.split('-')[0];
		var mId=(phoneFamilyMap.hasKey(pId))?phoneFamilyMap[pId]:null;
		if(mId==null){
			mapFamily(pId);
			mId=pId;
		}
		if(!phoneRatingSets[mId]){				
			var obj={
				id:mId,
				message:ratingsLoadMessage,
				close:ratingsCloseText
			}
			var u = el.getAttribute('href');
			phoneRatingSets[mId]=new widgets.dialog({id:mId+'-RatingsOverlay',className:'phoneNonModal',backingClass:'phoneNonModal',css:'position:absolute; z-index:50;',autoClose:true});
			phoneRatingSets[mId].setContent(ratingsTemplate.template(obj));
			phoneRatingSets[mId].show();
			phoneRatingSets[mId].moveTo(getLeft(el)+getWidth(el),getTop(el)+getHeight(el));
			Events.attach($css('#'+mId+'-RatingsOverlay a.actionBox')[0],'ratingsCloseClick',false,true,true);				
			XHR.quickSend({id:'ratings-'+mId,url:u,method:'GET',target:mId+'-rating-content', handler:setRatingContent});
		}		
		else{
			phoneRatingSets[mId].moveTo(getLeft(el)+getWidth(el),getTop(el)+getHeight(el));
			phoneRatingSets[mId].show();
		}
	};
//CNET Rating function

	function showCNETRatings(e,el){
		var pId=$(el).$anc('tr').id.split('-')[0];
		var mId=(phoneFamilyMap.hasKey(pId))?phoneFamilyMap[pId]:null;
		if(mId==null){
			mapFamily(pId);
			mId=pId+'CNET';
		} else {
			mId=mId+'CNET';
		}
		if(!phoneRatingSets[mId]){				
			var obj={
				id:mId,
				message:ratingsLoadMessage,
				close:ratingsCloseText
			}
			var u = el.getAttribute('href');
			phoneRatingSets[mId]=new widgets.dialog({id:mId+'-RatingsOverlay',className:'phoneNonModal',backingClass:'phoneNonModal',css:'position:absolute; z-index:600;',autoClose:true});
			phoneRatingSets[mId].setContent(ratingsCNETTemplate.template(obj));
			phoneRatingSets[mId].show();
			phoneRatingSets[mId].moveTo(getLeft(el)+getWidth(el),getTop(el)+getHeight(el));
			Events.attach($css('#'+mId+'-RatingsOverlay a.actionBox')[0],'ratingsCloseClick',false,true,true);				
			XHR.quickSend({id:'ratings-'+mId,url:u,method:'GET',target:mId+'-rating-content', handler:setRatingContent});
		}		
		else{
			phoneRatingSets[mId].moveTo(getLeft(el)+getWidth(el),getTop(el)+getHeight(el));
			phoneRatingSets[mId].show();
		}
	};
		
		
	function setRatingContent(content, target,rid) {
		setHTML(target,content.responseText);
		var mId=target.replace('-rating-content','');
		phoneRatingSets[mId].matchSize();
		Behaviors.run(phoneDetailLinkBehavior,$(target));
		XHR.deleteRequest(rid);
		content=null;
	}

var ratingsLoadMessage=(nxVars.lang=='en')?'Loading....':'Espera un momento por favor...';
var ratingsCloseText=(nxVars.lang=='en')?'CLOSE':'CERRAR';
var ratingsTemplate='<div class="ratingsLayer overlay" id="<=id=>-rating-overlay">'
+'<div class="outer">'
+'<div class="aRight"><a href="#" class="actionBox"><=close=> X</a></div>'
+'<div class="content" id="<=id=>-rating-content">'
+'<=message=>'
+'</div>'
+'</div>'
+'</div>';
var ratingsCNETTemplate='<div class="cnetRatingsLayer overlay" id="<=id=>-rating-overlay">'
+'<div class="outer">'
+'<div class="aRight"><a href="#" class="actionBox"><=close=> X</a></div>'
+'<div class="content" id="<=id=>-rating-content">'
+'<=message=>'
+'</div>'
+'</div>'
+'</div>';

function hideRatings(e,el){
	phoneRatingSets[$(el).$anc('div.overlay').id.split('-')[0]].hide();
}
Events.add('ratingsCloseClick','click',hideRatings);


/***************************** gallery functions *****************************/
function showGalleryList(ev,e){
	var row=$(e).$anc('tr');
	var sku=row.getAttribute('id').split('-')[0];
	var img=row.$c('phoneImage','img')[0];
	var iTop=getTop(img);
	var iHgt=getHeight(img);
	var iLft=getLeft(img);
	var iWid=getWidth(img);	
	var dName='devicename-'+sku;
	var phoneName=$(dName).value;
	displayGallery(sku,1,iHgt,iWid,iTop,iLft,false,phoneName);	
/********************************Omniture Code*************************************/
	try{
		s_linkTrackVars='prop8';
		s_linkType='o';
		s_prop8='360 View: '+sku;
		s_lnk=s_co(this);
		s_gs('sprintglobal');
	}
	catch(e){}
};

/***************************** details functions *****************************/
var phoneDetailLinkBehavior=new Behavior({
		css:'a.phoneDetailLink',
		events:{phoneDetailsLinkClick:[false,true,true]}
/********************* timeline logging, remove all after testing. *************************/
	,exec:[function(){
		// logDetailCounter++;
		// Logs.addLog('Timeline',['details',logDetailCounter]);
		
	}]
/********************* timeline logging, remove all after testing. *************************/	
	});

Events.add('phoneDetailsLinkClick','click',getPhoneDetails);

var detailsContent="";
detailsContent+='<div class="phonesModalContent">';
detailsContent+='	<div class="inner">';
detailsContent+='		<div class="aRight"><a href="#" class="actionBox" id="detailsOverlayClose">'+ratingsCloseText+' X</a>'+_Clearer+'</div>';
detailsContent+='		<div id="phones-detail-overlay">';
detailsContent+='		</div>';
detailsContent+='	</div>';
//detailsContent+=' <!--[if lte IE 6.5]><iframe></iframe><![endif]-->';
detailsContent+='</div>';
var detailsLayer=null;

function initDetails(){
	detailsLayer=new widgets.dialog({id:'detailsOverlay',className:'phoneModal',backingClass:'phoneModalBack'},true);
	detailsLayer.setContent(detailsContent);	
	setOpacity(detailsLayer.backer.id,70);	
		
	Events.add('detailsCloseClick','click',function(){detailsLayer.hide();});
	
	var closer=$('detailsOverlay').$c('actionBox','a')[0];
	
	Events.attach(closer,'detailsCloseClick',false,true,false);
	phonedetail.setup(detailQuantityChange,detailSkuChange,detailPurchaseChange,detailContractChange,detailActivateChange);
	
};
/****************Tab name*************************************************/
var setDefaultTab="";

function getPhoneDetails(ev,e){
	//alert("In detail function::"+isNode(e));
	var row="";
	if(isNode(e)){
		row=$(e).$anc('tr');
	}else{
		row=$(e);
	}
	var phId="";
	if(!row){  
		row=$(e).$anc('div.phoneNonModal');  
		phId=row.id.split('-')[0];  
		row=$(phId+'-row'); 
		setDefaultTab=$(e).$anc('div').hasClass('aRight')?"tab-ratings":"tab-write-ratings"; //Added this line to work for the added write a review tab from the listing page.
    }  
    else{     
		phId=row.getAttribute('id').split('-')[0]; 
		setDefaultTab=$(e).$anc('div.userRatings')?"tab-write-ratings":"";
    }
	waitingId=phId;
	var uMod=row.$css('form input[name=upgradeModel]')[0].value;
	var mId=(phoneFamilyMap.hasKey(phId))?phoneFamilyMap[phId]:null;
	if(mId==null){
		mapFamily(phId);
	}
	if(!phoneDataSets[mId]){
		showLoadingMessage();
		var pUrl=$('phoneList').getAttribute('url');
		var param=$('phoneList').getAttribute('param');		
		XHR.quickSend({id:'phone-'+phId,url:pUrl,method:'GET',handler:setPhone,data:param+'='+phId+'&upgradeModel='+uMod});
	}
	else{
		waitingId="";
		displayPhoneContent(phoneDataSets[phoneFamilyMap[phId]],phId);
	}
/***********************************Omniture code*******************************************/
	try{
		s_linkTrackVars='prop7,prop8,events,products';
		s_linkTrackEvents='prodView,event25';
		s_linkType='o';
		s_prop8='Store: Phone Detail Layer';
		s_events='prodView,event25';
		s_products='Phone: '+phId; 
		s_lnk=s_co(this);
		s_gs('sprintglobal');
	}
	catch(error){}
};

function setPhone(data, target, rId){
	var pId=rId.split('-')[1];
	phoneDataSets[phoneFamilyMap[pId]]=data.responseText;
	if(pId==waitingId){		
		displayPhoneContent(data.responseText+_Clearer,pId);
	}
	waitingId="";
	XHR.deleteRequest(rId);
	data=null;
}
/*
function loadReadRatingsTab(){
	Events.detach('tab-ratings','loadReadRatingsTabClick');
	Events.detach('tab-ratings','loadReadRatingsTabOn');
	$('BVFrame').src="";
	setTimeout(bvLoadRR,1);
	
}
*/
function loadWriteReviewsTab(){
	if(executeWriteReview){
		Events.detach('tab-write-ratings','loadWriteReviewsTabClick');
		Events.detach('tab-write-ratings','loadWriteReviewsTabOn');
		$('BVSubmissionFrame').src="";
		setTimeout(bvLoadRRSubmission,1);
	}
}

//Events.add('loadReadRatingsTabClick','click',loadReadRatingsTab);
Events.add('loadWriteReviewsTabClick','click',loadWriteReviewsTab);
//Events.add('loadReadRatingsTabOn','tabOn',loadReadRatingsTab);
Events.add('loadWriteReviewsTabOn','tabOn',loadWriteReviewsTab);
/*
var readReviewTabBehavior=new Behavior({
	css:'#tab-ratings',
	events:{
		loadReadRatingsTabClick:true,
		loadReadRatingsTabOn:true
	}
});
*/
var writeReviewTabBehavior=new Behavior({
	css:'#tab-write-ratings',
	events:{
		loadWriteReviewsTabClick:true,
		loadWriteReviewsTabOn:true
	}
});

function displayPhoneContent(data,rId){
	if(!detailsLayer){
		initDetails();
	}	
	hideLoadingMessage();
	Events.cleanUp('phones-detail-overlay');
	setHTML('phones-detail-overlay',data);	
	detailsLayer.show();
	var o=$('detailsOverlay');
	var row=$(rId+'-row');
	var quantity=row.$a('name','phoneQuantity','input');
	quantity=(quantity.length>0)?quantity[0].value:null
	var ptype=null;
	var upgVal=null;
	var upgAct=null;
	if(!isUpgrade){
		var ptypeopt=row.$a('name','purchaseType','input');
		if(ptypeopt.length>0){
			ptypeopt.forEach(function(pel){
				if(ptype==null && pel.checked){
					ptype=(pel.value=='upgrade')?true:false;
				}
			});
		}
	}
	else{
		var upg=row.$a('name','contractLength','input');
		if(upg.length>0){
			for(var x=0; x<upg.length; x++){
				if(upg[x].checked){
					upgVal=upg[x].value;
				}
			}
		}
		var act=row.$a('name','isUpgradeNow','input');
		if(act.length>0){
			upgAct=act[0].checked;
		}
	}
	widgets.tabs.defaultTabs[0]=setDefaultTab;
	Behaviors.run(writeReviewTabBehavior,$('detailsOverlay'));
	widgets.tabs.setup(o);
	phonedetail.initDt(o,rId,quantity,ptype,upgVal,upgAct);	
	var de=document.documentElement||document.body;
	if(bis.safari){de=document.body}
	detailsLayer.moveTo(getWidth(de)-(bis.ie?40:20)-getFullWidth(detailsLayer.id),20+de.scrollTop);
	if(isValidText(setDefaultTab)){
		window.scroll(0,getTop(setDefaultTab)+40);
	}
	if(isValidText(setDefaultTab)){
		window.scroll(0,getTop(setDefaultTab)+40);
	}
	setTimeout(function(){$('BVFrame').src="";bvLoadRR();},1);
	/*Omniture 2.0*/
	if (typeof(Analytics.eComStore)!='undefined'){
			Analytics.eComStore.productDetailListener(rId);	
	}
	if (typeof(TeaLeaf)!='undefined'){
		if(TeaLeaf.Client && TeaLeaf.Client.tlDetachFromControls && TeaLeaf.Client.tlProcessNode){
			TeaLeaf.Client.tlProcessNode();
			TeaLeaf.Client.tlSingleAttach();
		}
	}
};


Behaviors.addToDOMLoad(globalBehaviors);
Behaviors.addToDOMLoad(assignSort);
Events.inQ('DOMLoad',setUpPhones);
//Events.inQ('DOMLoad',addExtraPromo);


/********************* detail callbacks *************************/

function detailQuantityChange(sku,quantity){
	var rows=$(sku+'-row').getAttribute('family').strip().split(' ');
	rows.forEach(function(v){
		var inp=$(v+'-row').$a('name','phoneQuantity','input')[0];
		if(inp){
			inp.value=quantity;
		}
	});
};

function detailSkuChange(sku){
	var r=$(sku+'-row');
	$(r).toggleOn();
	var f=r.getAttribute('family').strip().split(' ');
	f.forEach(function(val){
		if(val!=sku){
			$(val+'-row').toggleOff();
		}
	});		
};

function detailPurchaseChange(sku,upgrade){
	var rows=$(sku+'-row').getAttribute('family').strip().split(' ');
	rows.forEach(function(v){
		var inp=$(v+'-row').$a('name','purchaseType','input');
		if(inp.length>0){
			inp.forEach(function(v){
				if(v.value=="upgrade"){
					v.checked=upgrade;
				}
				else{	
					v.checked=!upgrade;
				}
			});
		}
	});
};

function detailContractChange(sku,months){
	var rows=$(sku+'-row').getAttribute('family').strip().split(' ');
	rows.forEach(function(v){
		var inp=$(v+'-row').$a('name','contractLength','input');
		for(var x=0; x<inp.length; x++){
			inp[x].checked=(inp[x].value==months);
			var desc=$(inp[x]).$anc(3).$css('div.desc');
			if(inp[x].checked){
				if(desc.length>0){
					setDisplay(desc[0],'block');
				}
			}
			else{
				if(desc.length>0){
					setDisplay(desc[0],'none');
				}
			}
		}
	});
};

function detailActivateChange(sku,on){
	var rows=$(sku+'-row').getAttribute('family').strip().split(' ');
	rows.forEach(function(v){
		var inp=$(v+'-row').$a('name','isUpgradeNow','input');
		if(inp.length>0){
			inp[0].checked=on;
		}
	});
};

//Added for short term

function addExtraPromo(){
	if ($c('gridLast', 'div').length>0){
		var htmlStr='<a href="http://nextelonline.nextel.com/NASApp/onlinestore/'+nxVars.lang+'/Action/DisplayUpgradeLanding?id12=SHOP_PhonesPromo_042508_0Upgrade"><img alt="promotion" src="/assets/images/promos/upgrade_186x125_'+nxVars.lang+'.gif "/></a>';
			htmlStr+='<a href="javascript:nxPopup(\'generic5\', \'https://nextelonline.nextel.com/'+nxVars.lang+'/legal/os_shipping_taxes_popup.shtml?id12=ALLPHONES_promo_0120108_Shipping\')"><img style="margin:5px 0px 0px 0px" alt="promotion" src="/assets/images/promos/christmas_shipping_186x125_'+nxVars.lang+'.jpg "/></a>';
			nxVars.lang
		$c('gridLast', 'div').setHTML(htmlStr);
	}
}

/********************* timeline logging, remove all after testing. *************************/
//Events.inQ('DOMLoad',function(){// Logs.addLog('Timeline',['DOMLoad','End'])});
//Events.inQ('BodyLoad',function(){// Logs.addLog('Timeline',['BodyLoad','End'])});
/********************* timeline logging, remove all after testing. *************************/


