var gBoolCartExpand=false;
var gMagH=100;
var gNavH=30;
var gSlipH=500;
var bAllowClose=true
var gMouseOver=false;
var strCookie="PCHMagCart";
var gMaxTop,gAutoRollUp
var gSmoothMove, gSmoothMoveWait, gSmoothMoveInc;
var gBumperH=340;
var gTopOffset;
var arrMags=new Array();
var gBoolCartLoad=false;
//SET THE "TOP" OF THE CART BASED ON BROWSER....
var gCartPos;
var browserName=navigator.appName; 
var browserVer=parseInt(navigator.appVersion);

if (browserName=="Microsoft Internet Explorer"){
	gSmoothMoveInc=5;
	gSmoothMoveWait=10;
	if (window.XMLHttpRequest){
		//IE 7 and above
		gCartPos=-315;
		gTopOffset=0;
	}else{
		//IE 6 and lower
		gCartPos=-317;
		gTopOffset=4;
	}
}else{
	gSmoothMoveInc=7;
	gSmoothMoveWait=10;
	//ALL OTHER BROWSERS!
	gCartPos=-317;
	gTopOffset=0;
}
var gCartPosClosed=gCartPos;

function fCart_Load(inExpand){
	//alert("wait")
	if (GetCookie(strCookie) == null){
		SetCookie(strCookie,"",false,"/");
	}
	fCart_SetMagArray();
	fCart_Build();
	fCart_RefreshCart();

	if(inExpand){
		fCart_ImmediateExpand("pCartContainer");
	}
	gBoolCartLoad=true;
}

function fCart_SetMagArray(){
//set the magazine array based upon the cookie data;
	strCkData=getNameVal(strCookie,"mags");
	if(strCkData!="" && strCkData!=null && strCkData!="null") {
		var arrCData=strCkData.split("|");
		var arrCDataSplit;
		for(i=0;i<arrCData.length;i++){
			arrCDataSplit=arrCData[i].split("^");
			arrMags[i]={
				mCode:arrCDataSplit[0],
				mTitle:arrCDataSplit[1],
				mNumIssue:arrCDataSplit[2],
				mQtrPay:arrCDataSplit[3],
				mImgSrc:arrCDataSplit[4],
				mLoc:arrCDataSplit[5]
				//
				,mPCHPrice:arrCDataSplit[6]
				//
				//
				,mCoverPrice:arrCDataSplit[7]
				//
			}
		}
	}
}

function fCart_updateMagCookie(){
//update the cookie with current array
	var strPut="";
	for(i=0;i<arrMags.length;i++){
		if(strPut.length) strPut+="|";//seperate mags with pipes
		//strPut+=arrMags[i].mCode+"^"+escape(arrMags[i].mTitle)+"^"+arrMags[i].mNumIssue+"^"+arrMags[i].mQtrPay+"^"+escape(arrMags[i].mImgSrc)+"^"+escape(arrMags[i].mLoc)
		//
		strPut+=arrMags[i].mCode+"^"+escape(arrMags[i].mTitle)+"^"+arrMags[i].mNumIssue+"^"+arrMags[i].mQtrPay+"^"+escape(arrMags[i].mImgSrc)+"^"+escape(arrMags[i].mLoc)+"^"+escape(arrMags[i].mPCHPrice)+"^"+escape(arrMags[i].mCoverPrice)
		//
	}
	setNameVal(strCookie,"mags",strPut);
}

function fCart_NavOver(){
	document.getElementById("pCartNavItemCnt").style.textDecoration="underline";
}

function fCart_ImmediateExpand(inStrObjID){
	//NO ANIMATION
	bAllowClose=false;
	gBoolCartExpand=true;
	document.getElementById("pCartCloseImg").style.display="none";
	
	document.getElementById("pCartNavOpenCart").style.cursor="default";
	
	document.getElementById("pCartClose").onclick=null;
	document.getElementById("pCartClose").onmouseover=null;
	document.getElementById("pCartClose").onmouseout=null;

	document.getElementById("pCartNavOpenCart").onclick=null;
	document.getElementById("pCartNavOpenCart").onmouseover=null;
	document.getElementById("pCartNavOpenCart").onmouseout=null;
	
	document.getElementById("pCartNavItemCnt").style.cursor="default";
	document.getElementById("pCartNavCheckout").style.cursor="default";
	document.getElementById("pCartNavCheckoutImg").style.display="none";

	switch(arrMags.length){
		case 0:
			gMaxTop=gCartPosClosed+gNavH+gMagH;;
			break;
		default:
			gMaxTop=gCartPosClosed+gNavH+(gMagH*arrMags.length);
			break;
	}
	
    if (browserName=="Microsoft Internet Explorer"){    
		
        if (!window.XMLHttpRequest){
            //IE 6 and lower
            gMaxTop-=10;
            gTopOffset=-10;
        }else{
            //IE 7 and above
            gMaxTop-=12;
            gTopOffset=-12;
        }
    }else{
	    //ALL OTHER BROWSERS!
		gTopOffset=-20;
	    gMaxTop-=20;
    }
    
	gCartPos=gMaxTop
	document.getElementById(inStrObjID).style.top = gCartPos+"px";
}

function fCart_View(){
	if(!gBoolCartExpand){
		gBoolCartExpand=true;
        if (browserName=="Microsoft Internet Explorer"){               
            if (!window.XMLHttpRequest){//ie 6...
				 if(document.getElementById("ctl00_MagMain_SortByDropDown")){
					//HIDE THE DROPDOWN IF IT EXISTS....
		        	document.getElementById("ctl00_MagMain_SortByDropDown").style.visibility="hidden";
				 }
            }
        }
		document.getElementById("pCartNavItemCnt").style.textDecoration="none";
		moveDiv("pCartContainer");
		fCart_AutoRollUp(gMouseOver);
	}
}

function fCart_Expand(){
	if(!gBoolCartExpand){
		gBoolCartExpand=true;
        if (browserName=="Microsoft Internet Explorer"){               
            if (!window.XMLHttpRequest){//ie 6...
				 if(document.getElementById("ctl00_MagMain_SortByDropDown")){
					//HIDE THE DROPDOWN IF IT EXISTS....
		        	document.getElementById("ctl00_MagMain_SortByDropDown").style.visibility="hidden";
				 }
            }
        }
		document.getElementById("pCartNavItemCnt").style.textDecoration="none";
		moveDiv("pCartContainer");
		fCart_AutoRollUp(gMouseOver);
	}
}

function fCart_NavOut(){
	document.getElementById("pCartNavItemCnt").style.textDecoration="none";
}

function fCart_Close(){
	if(gBoolCartExpand){
		document.getElementById("pCartNavItemCnt").style.textDecoration="none";
		gBoolCartExpand=false;
		moveDiv("pCartContainer");
	}
	clearTimeout(gAutoRollUp);
}

function moveDiv(inStrObjID){
	if(gBoolCartExpand){//expandING
		switch(arrMags.length){
			case 0:
				gMaxTop=gCartPosClosed+gNavH+gMagH;
				break;
			default:
				gMaxTop=gCartPosClosed+gNavH+(gMagH*arrMags.length);
				break;
		}
		gMaxTop+=gTopOffset
	}else{
		gMaxTop=gCartPosClosed;
	}
	smoothMove(inStrObjID);
}

function smoothMove(inStrObjID){
	var boolRecurse=true;	
	// if we haven't gone to far, call moveDiv() again in a bit
	if(gBoolCartExpand){//expandING
		gCartPos=gCartPos+gSmoothMoveInc;
		if (parseInt(gCartPos) >= parseInt(gMaxTop)){
			gCartPos=gMaxTop;
			boolRecurse=false;
			fCart_AutoRollUp(gMouseOver);
		}
	}else{//closING
		gCartPos=gCartPos-gSmoothMoveInc;
		if (parseInt(gCartPos) <= parseInt(gMaxTop)){
			gCartPos=gMaxTop;
			document.getElementById(inStrObjID).style.top = gCartPos+"px";
			boolRecurse=false;
            if (browserName=="Microsoft Internet Explorer"){               
                if (!window.XMLHttpRequest){//ie 6...
					 if(document.getElementById("ctl00_MagMain_SortByDropDown")){
						 //SHOW THE DROPDOWN IF IT EXISTS....
						document.getElementById("ctl00_MagMain_SortByDropDown").style.visibility="visible";
					 }
                }
            }
			clearTimeout(gAutoRollUp);
		}
	}
	document.getElementById(inStrObjID).style.top = gCartPos+"px";	
	
	if(boolRecurse){
		gSmoothMove = setTimeout('smoothMove("'+inStrObjID+'");',gSmoothMoveWait);
	}else{
		clearTimeout(gSmoothMove)
	}
}

function fCart_AddMag(){
	if(gBoolCartLoad){
		if(arrMags.length<3){
			var iAvailSpot=null
			var bDupe=false;
			for(var i=0;i<arrMags.length;i++){
				if(isNull(arrMags[i]) && isNull(iAvailSpot)){
					iAvailSpot=i;
				}else if(!isNull(arrMags[i])){
					if(arrMags[i].mCode==arrAddMag[0].mCode){
						bDupe=true;
					}
				}
			}
			
			if(isNull(iAvailSpot)) iAvailSpot=arrMags.length;
	
			if(bDupe){
				alert(arrAddMag[0].mTitle + " is already in your cart.");
			}else{
    			arrMags[iAvailSpot]=arrAddMag[0];
			
				fCart_updateMagCookie();
				fCart_RefreshCart();
				if(gBoolCartExpand){
					moveDiv("pCartContainer");	
				}else{
					fCart_Expand();
				}
			}
		}else{
			alert("You may only purchase 3 items.");
		}
	}else{
		alert("The shopping cart is loading, please try again in a moment.");
	}
}

function fCart_RemoveMag(inThis){
	inCartMagPos=inThis.id.substr(inThis.id.indexOf("_")+1);
	if(arrMags.length>0){
		arrMags[inCartMagPos]=null;

		for(var i=(arrMags.length-1);i>=0;i--){//reverse
			if(isNull(arrMags[i])){
				switch(i){
					case 2:
						arrMags.length=2;
						break;
					case 1:
						switch(arrMags.length){
							case 3:
								arrMags[1]=arrMags[2];
								arrMags.length=2;
								break;
							default:
								arrMags.length=1;
								break;
						}
						break;
					case 0:
						switch(arrMags.length){
							case 3:
								arrMags[0]=arrMags[1];
								arrMags[1]=arrMags[2];
								arrMags.length=2;
								break;
							case 2:
								arrMags[0]=arrMags[1];
								arrMags.length=1;
								break;
							default:
								arrMags.length=0;
								break;
						}
						break;
				}
			}
		}
		fCart_updateMagCookie();
		fCart_RefreshCart();
		if(gBoolCartExpand){
			moveDiv("pCartContainer");	
		}else{
			fCart_Expand();
		}

	}else{
		alert("No items to remove.");
	}
}

function fCart_RefreshCart(){
	var lBumperH=gBumperH
	var strCodeVal="";
	var strTimeVal="";
	document.getElementById("pCartMags").style.display="none";
	for(var i=0;i<3;i++){
		//hide them all
		document.getElementById("pCartMags_"+i).style.display="none";
	}
	if(arrMags.length){
		document.getElementById("pCartEmpty").style.display="none";
		if(document.getElementById("goContest")){
			document.getElementById("goContest").style.display="none";//hide the "go/enter" button
		}
		document.getElementById("pCartNavCheckoutImg").style.display="block";//Show the "checkout" button
		document.getElementById("pCartNavItemCnt").style.color="#ff9900"//orange

		document.getElementById("pCartMags").style.display="block";		
		lBumperH-=(gMagH*(arrMags.length-1));
		
		for(var i=0;i<arrMags.length;i++){
			if(!isNull(arrMags[i])){
				document.getElementById("pCartMagImg_"+i).src=arrMags[i].mImgSrc;

				if(arrMags[i].mTitle.length>15){
					document.getElementById("pCartMagTitle_"+i).title=arrMags[i].mTitle;
					document.getElementById("pCartMagTitle_"+i).innerHTML=arrMags[i].mTitle.substr(0,12) + "...";
				}else{
					document.getElementById("pCartMagTitle_"+i).title="";
					document.getElementById("pCartMagTitle_"+i).innerHTML=arrMags[i].mTitle;
				}
				document.getElementById("pCartMagIssues_"+i).innerHTML=arrMags[i].mNumIssue;
				document.getElementById("pCartMag4pay_Num_"+i).innerHTML=arrMags[i].mQtrPay;
				document.getElementById("pCartMags_"+i).style.display="block";

				if(strCodeVal.length)strCodeVal+=",";
				strCodeVal+=arrMags[i].mCode;
			}
		}
	}else{//NO MAGS...
		if(document.getElementById("goContest")){
			document.getElementById("goContest").style.display="block";//show the "go/enter" button
		}else if(document.getElementById("btSubmit")){
			document.getElementById("btSubmit").src=gAkamaiPath+"button_entry.png";//show the "go/enter" button
		}
		document.getElementById("pCartNavCheckoutImg").style.display="none";//Hide the "checkout" button
		document.getElementById("pCartNavItemCnt").style.color="#666";//grey
		document.getElementById("pCartEmpty").style.display="block";
	}

	if(strCodeVal.length)strTimeVal=SERVER_DATETIME.toString()
//set the cookie
	setNameVal(strCookie,"sc",strCodeVal);
	setNameVal(strCookie,"pTime",strTimeVal);

	var strMessage=arrMags.length;
	strMessage+=" Item";
	if(arrMags.length!=1)strMessage+="s";//plural
	strMessage+=" in Shopping Cart"	;
	document.getElementById("pCartNavItemCnt").innerHTML=strMessage;
	document.getElementById("pCartBumper").style.height=lBumperH+"px";
}

function fCart_CheckOut(){
	if(arrMags.length){
		document.location=chko;
	}else{
		fCart_Expand();
	}
}

function fCart_AutoRollUp(inOver){ 
    if(bAllowClose){
	    clearTimeout(gAutoRollUp);
	    if(!inOver){
		    if(gBoolCartExpand){
			    gAutoRollUp = setTimeout(fCart_Close,4000);
		    }
	    }
    }
	gMouseOver=inOver;
}

function fCart_ShowMag(inThis){
	inPos=inThis.id.substr(inThis.id.indexOf("_")+1);
	//alert("Show Mag " +arrMags[inPos].mTitle+ ".")	
	if(arrMags[inPos].mLoc && document.location!=arrMags[inPos].mLoc){
	    document.location=arrMags[inPos].mLoc
	}
}

function fCart_Build(){
//fObjCreator("div","",oLastParent);
	var oLastNewObj,oLastParent,oLastSubParent;
	var subElement;
	var oCart=document.getElementById("pCartContainer")
	var strClass;
	if(document.all){
		strClass="className";
	}else{
		strClass="class";
	}
	
	fObjCreator("div","id=pCartBumper,"+strClass+"=pCart",oCart);
	oLastParent=fObjCreator("div","id=pCartClose,"+strClass+"=pCart",oCart);
	oLastParent.onclick=fCart_Close;
	fObjCreator("img","id=pCartHeaderImg,src="+gAkamaiPath+"floating-scart-head.gif,border=0",oLastParent);
	fObjCreator("img","id=pCartCloseImg,src="+gAkamaiPath+"button_close-cart.jpg,border=0",oLastParent);

	var oMags = fObjCreator("div","id=pCartMags,"+strClass+"=pCart",oCart);
	for(var ifor=0;ifor<3;ifor++){
		oLastParent=fObjCreator("div","id=pCartMags_"+ifor+","+strClass+"=pCart pCartMags",oMags);
		
		oLastSubParent=fObjCreator("div","id=cartmyMagImg_"+ifor+","+strClass+"=cartMagImg",oLastParent);
		oLastSubParent.onclick=function(){fCart_ShowMag(this)}
		fObjCreator("img","id=pCartMagImg_"+ifor+",width=60px,height=80px,border=0",oLastSubParent);
		
		oLastNewObj=fObjCreator("div","id=pCartMagTitle_"+ifor+","+strClass+"=cartMagInfo cartMagTitle",oLastParent);
		oLastNewObj.onclick=function(){fCart_ShowMag(this)}
		fObjCreator("div","id=pCartMagIssues_"+ifor+","+strClass+"=cartMagInfo cartMagIssues",oLastParent);
		
		oLastSubParent=fObjCreator("div","id=pCartMag4pay_"+ifor+","+strClass+"=cartMagInfo cartMag4pay",oLastParent,"4 PAYMENTS EACH ONLY ");
		fObjCreator("span",""+strClass+"=cartMag4payDollar",oLastSubParent,"$");
		fObjCreator("span","id=pCartMag4pay_Num_"+ifor+","+strClass+"=cartMag4payNum",oLastSubParent);
		
		oLastParent=fObjCreator("div","id=pCartMagRemove_"+ifor+","+strClass+"=cartMagInfo cartMagRemove",oLastParent);
		
		oLastSubParent=fObjCreator("div","id=cartRemoveImg_"+ifor+","+strClass+"=cartRemoveImg",oLastParent);
		oLastSubParent.onclick=function(){fCart_RemoveMag(this)};
		fObjCreator("img","src="+gAkamaiPath+"button_remove-cart.jpg",oLastSubParent);
		subElement=fObjCreator("div","id=cartRemoveTxt_"+ifor+","+strClass+"=cartRemoveTxt",oLastParent,"remove");
		subElement.onclick=function(){fCart_RemoveMag(this)};
	}
	
	oLastParent=fObjCreator("div","id=pCartEmpty,"+strClass+"=pCart",oCart);
	fObjCreator("img","src="+gAkamaiPath+"scart_empty-icon.jpg,"+strClass+"=floatleft",oLastParent);
	fObjCreator("div","id=pCartEmpty_txt",oLastParent,"Your shopping cart is empty");
	
	oLastParent=fObjCreator("div","id=pCartNav,"+strClass+"=pCart",oCart);
	oLastNewObj=fObjCreator("div","id=pCartNavOpenCart",oLastParent);
	
	oLastNewObj.onclick=fCart_View;
	oLastNewObj.onmouseover=fCart_NavOver;
	oLastNewObj.onmouseout=fCart_NavOut;
	
	oLastSubParent=fObjCreator("div","id=pCartNavImg",oLastNewObj);
	fObjCreator("img","src="+gAkamaiPath+"scart_expanded.gif,width=46px,height=30px,border=0",oLastSubParent);
	
	fObjCreator("div","id=pCartNavItemCnt",oLastNewObj);
	oLastParent=fObjCreator("div","id=pCartNavCheckout",oLastParent);
	oLastNewObj=fObjCreator("img","id=pCartNavCheckoutImg,src="+gAkamaiPath+"button-floating-scart-checkout.gif",oLastParent);
	oLastNewObj.onclick = fCart_CheckOut ;
	fObjCreator("div","id=clearydiv,"+strClass+"=clearfix",oCart);
}

function fObjCreator(inStrObj,inStrAtt,inParent,inStrHTML){
	var arrMulti, arrAtts;
	var newObj = document.createElement(inStrObj);//create it
	if(inStrAtt.length){
		if(inStrAtt.indexOf(",")==-1){
			arrAtts=inStrAtt.split("=");
			newObj.setAttribute(arrAtts[0],arrAtts[1]);//set the attributes
		}else{
			arrMulti=inStrAtt.split(",");
			for(var i=0;i<arrMulti.length;i++){
				arrAtts=arrMulti[i].split("=");
				newObj.setAttribute(arrAtts[0],arrAtts[1]);//set the attributes
			}
		}
	}
	
	if (arguments.length == 4){
		newObj.innerHTML=inStrHTML;
	}
	inParent.appendChild(newObj);//place DIV in the Holder

	return newObj;
}

function fContest(){
	document.location=ctst;
}

function isNull(a){
	return typeof a == 'object' && !a;
}

function fCart_StripUnsafeCharacter(str)
{
    var text = str;
    text =  ReplaceText(text, ",", "");
    text = ReplaceText(text, "'", "");
    return text;
}


function ReplaceText(text, find, replacement)
{
	var oldString = text;
	var reg = new RegExp(find,"gi");
	var newString = oldString.replace(reg, replacement); 
	text = newString;
	return text;
}