var upgradeModal="upgradeModal";
var upgradeTargetContainer='upgradeModalContent';
var upgradeXHRId='upgradeXHR';
var upgradeDialog=null;
var upgradeLoadingContent='<div style="width:200px;height:150px;background-color:#000000;margin:10px;"><p style="text-align:center;padding:10px 0px 0px 0px;color:#FFFFFF;font-size:12px;">Loading, please wait...</p><br /><img style="margin-left:70px;" src="/assets/images/shop/checkout_trans_spin.gif" alt="Loading"/></div>';

Events.add('upgradeLinkClick','click',function(e,el){
	Events.kill(e);
	var href=el.getAttribute('href');
	doUpgradeXHR(href);
});

Events.add('upgradeTRHoverOn','mouseover',function(e,el){
	el.setStyle('cursor','pointer');
	el.addClass('lightYellowBg');
});
Events.add('upgradeTRHoverOff','mouseover',function(e,el){
	el.setStyle('cursor','auto');
	el.removeClass('lightYellowBg');
});

function upgradeFormSubmitHandler(e,el,url){
	try{
		Events.kill(e);
	}catch(err){}
	var act=el.action;
	if(url){
		act=url;
	}
	var data="?";
	for(var x=0; x<el.elements.length; x++){
		var frm=el.elements[x];
		if(frm.type==="text" || frm.type==="password" || frm.type==="hidden"){
			data=data.addParam(frm.name,frm.value);
		}
		else if(frm.type==="radio"){			
			for(var y=0; y<frm.length; y++){
				if(frm[y].checked){
					data=data.addParam(frm[y].name,frm[y].value);
					break;
				}
			}

		}
		else if(frm.nodeName==="SELECT"){
			data=data.addParam(frm.name,frm[frm.selectedIndex].value);
		} 
	}
	doUpgradeXHR(act,data.substring(1));
}

Events.add('upgradeFormSubmit','submit',upgradeFormSubmitHandler);

Events.add('upgradeModalCloseClick','click',function(e,el){
	Events.kill(e);
	XHR.closeRequest(upgradeXHRId);
	Events.cleanUp(upgradeTargetContainer);
	$(upgradeTargetContainer).setHTML('');
	upgradeDialog.hide();
	// check refresh var here
	if((typeof upgradeModalRefreshURL!='undefined') && (upgradeModalRefreshURL!=null)){
		location.href=upgradeModalRefreshURL;
	}
});

var upgradeLinks=new Behavior({
	css:'#'+upgradeTargetContainer+' a.XHRIntercept,#'+upgradeTargetContainer+' tr.XHRIntercept ,#'+upgradeTargetContainer+' td.XHRIntercept ',
	events:{
		upgradeLinkClick:true
	},
	exec:[function(el){
		if(el._nn()=='tr'){
			Events.attach(el,'upgradeTRHoverOn');
			Events.attach(el,'upgradeTRHoverOff');
		}
	}]
});

var upgradeForms=new Behavior({
	css:'#'+upgradeTargetContainer+' form.XHRIntercept',
	events:{
		upgradeFormSubmit:true
	}
});

var loginTemplate='<div id="upgradeModal">'
	+'<div class="outer">'
	+'<div class="aRight"><a href="#" class="actionBox">CLOSE X</a></div>'
	+'<div class="content" id="upgradeModalContent">'
	+'</div>'
	+'</div>'
	+'</div>';

function doUpgradeXHR(lnk,data){
	data=data||'';
	if(!upgradeDialog){
		initUpgradeDialog();
	}
	Events.cleanUp(upgradeTargetContainer);
	$(upgradeTargetContainer).setHTML(upgradeLoadingContent);
	upgradeDialog.center();    
	upgradeDialog.show(); 
	XHR.quickSend({
		id:upgradeXHRId,
		url:lnk,
		method:'POST',
		data:data,
		handler:receiveUpgradeContent
	});
}

function receiveUpgradeContent(response){
	if(isValidText(response.getResponseHeader('XHR-Redirect'))) {  // XHR has response in header for redirect
		//alert('Redirecting: '+response.getResponseHeader('XHR-Redirect'));
		var redirectURL=response.getResponseHeader('XHR-Redirect');
		location.href=redirectURL;
	}
	else{
		var t=$(upgradeTargetContainer);
		t.setHTML(response.responseText);  
		Behaviors.run([upgradeLinks,upgradeForms]);
		widgets.Popups.runManual('#'+upgradeTargetContainer);
		if (typeof TeaLeaf!='undefined'){
			if(TeaLeaf.Client && TeaLeaf.Client.tlDetachFromControls && TeaLeaf.Client.tlProcessNode){
				TeaLeaf.Client.tlProcessNode();
				TeaLeaf.Client.tlSingleAttach();
			}
		}
		upgradeDialog.center();    
		upgradeDialog.show();
		if (typeof Analytics.eComStore!='undefined'){
			Analytics.eComStore.upgradeModalHandler();
		}
	}
}

function makeUpgradeModal(){
	if(!upgradeModal){
		upgradeModal=new Dialog(/*parameters*/);
	}
	return upgradeModal;
}

// make functon for links on cart here
function cartLinkFunction(){
	Events.kill(e);
	var href=el.href;
	doUpgradeXHR(href);
}

function initUpgradeDialog(){ 
	upgradeDialog=new widgets.dialog({id:'upgradeModalDialogId',className:'upgradeModalDialogClass',backingClass:'upgModalBackgroundClass',css:'position:absolute; z-index:200;'},true,true);
	upgradeDialog.setContent(loginTemplate);  
	Events.attach($css('#upgradeModal a.actionBox'),'upgradeModalCloseClick');
}  

// Function to hide the dialog widget when invoked
function hideUpgradeDialog(){
	upgradeDialog.hide(); 
}    

function doNextLoginStep(url,data){
	doUpgradeXHR(url,null);
}
