
<!-- ©webmasta [www.w3coders.com] prizonerz is not an option!

var hidForm;
var shipPrice =0;
var usdPrice;  //usd realtime price string to populate hidform on submit

function doQuantity(hidForm, itmId, pQuan, pPrice) {

	var totQuan =0;
	var itmArr =hidForm['itmId'].value.split('|');  //alert(itmArr)
	var quaArr =hidForm['pQuan'].value.split('|');
	hidForm['pQuan'].value ='';

	for(var i=0; i< itmArr.length; ++i) { //alert(itmId +' == '+ itmArr[i])
		if(itmId ==itmArr[i]) {
			totQuan  =parseFloat(pQuan) + parseFloat(quaArr[i]);
			quaArr[i] =totQuan;
		}
	}
	
	for(var j=0; j< quaArr.length; ++j) {                 //rewrite the quantity field value with the new amount
		if(j >0) { hidForm['pQuan'].value +='|' +quaArr[j]; }
		else { hidForm['pQuan'].value =quaArr[0]; }             //one item only
	}
	pt_viewCart();
};

function addToCart(ordType, pQuan, itmId, pPrice, descript, pColor, sNumber, sOnline, pInfo1, pInfo2, pInfo3, message) { //alert('addToCart')
		
	hidForm =document.forms['hiddenElements'];
	
	if(ordType =='itemOrder' && hidForm['itmId'].value.indexOf(itmId) !=-1) {     //found the itm
		return doQuantity(hidForm, itmId, pQuan, pPrice);
	}
	
	var aLen =hidForm.length;
	for(var a=0; a<aLen; ++a) {
		if(hidForm[a].name =='currenc' || hidForm[a].name =='shippin') { continue; }
		if(arguments[a]== undefined) { arguments[a]= '-'; }	//item orders will come with many arguments missing
		if(arguments[a]== '') { arguments[a]= '-'; }	    //text area can come defined but with no value

		if(hidForm[a].value) { hidForm[a].value += '|' +arguments[a]; }  //already added a val
		else { hidForm[a].value =arguments[a]; }
	}

	pt_viewCart();
};
//---------------------------

function fixP(xVal) {	//35.99593106990704 : **35.100** : 18.884267139360854 (result from adding 17.11 to 18.99 when converting to USD at 0.99289)
	var result =Math.floor(xVal)+".";  var cents =100*(xVal-Math.floor(xVal))+0.5; //alert(cents)
	result += Math.floor(cents/10); result += Math.floor(cents%10);
	//var aftDeci =result.substring(result.indexOf('.')+1, result.length);
	//if(aftDeci =='100') {
	//	result =result.substring(0,result.indexOf('.')+1);
	//	result +=99;
	//}
	return(result); 
	
};
//---------------------------

function pt_viewCart(arg) {
	
	var subTotal =0;
	var linTotal =0;
	var bigTotal =0;
	var ticTotal =0;  //total ticks in cart
	usdPrice     ='';
	
	hidForm  =document.forms['hiddenElements'];  //if pg refreshed define again
	//var curr =(hidForm.currenc.value =='CDN')? 'priceToCDN':'priceToUSD';
	var currType  =(hidForm.currenc.value =='CDN')? 'CDN':'USD';

	if(!arg) {
		doFlyinCart(700, window.frames['plates'].document.getElementById('cartDisplay').innerHTML, 'theCart');
	}
	var iCart ='<table width="100%" border="0" cellpadding="2" cellspacing="1" bgcolor="#FFCBCA" class="grnSml">'
          +'<tr align="center" height="20" bgcolor="#F0FEEA">'
            +'<td width="50"><b>Qty</b></td>'
            +'<td width="50"><b>Item ID</b></td>'
            +'<td><b>Description</b></td>'
            +'<td width="65"><b>Unit</b></td>'
            +'<td width="65"><b>Line Total</b></td>'
            +'<td width="70">&nbsp;</td>'
          +'</tr>';

	if(hidForm['ordType'].value) {      //we have an item
		
		var splitsArr =hidForm['ordType'].value.split('|');
		var sLen =splitsArr.length;
		var dis  ='disabled';
		
			for(var s=0; s< sLen; ++s) {   //

				var quaArr =hidForm['pQuan'].value.split('|');
				var itmArr =hidForm['itmId'].value.split('|');
				var desArr =hidForm['descript'].value.split('|');
				var priArr =hidForm['pPrice'].value.split('|');

					if(splitsArr[s] =='itemOrder') {   //only do line tote for items and not ticket order
						linTotal =  parseFloat(quaArr[s]) * parseFloat(priArr[s]);
					} else { 
						linTotal   = parseFloat(priArr[s]);
						ticTotal +=parseFloat(quaArr[s]);  //for shipping dpDwn
					}
					                                 //have to fixP here cos its fucjking up when the two totals =100 after the deci point (see fixP func)
					linTotal =(currType =='USD')? fixP(linTotal*(top.USD)) : linTotal;   //alert(linTotal);
					usdPrice +=(currType =='USD' && usdPrice =='')? linTotal : '|'+linTotal; 
					
					subTotal += parseFloat(linTotal); //comes from fixP as a str
				
				iCart +='<tr style="background-color:#FDF5E9" id="row'+s+'">';
				
					if(splitsArr[s] =='itemOrder') {
						iCart +='<td width="50"><input name="qty'+s+'" value="' +quaArr[s]+ '" type="text" class="txFld" style="width:50px" onKeyPress="return numsOnly(event)" maxlength="5" onBlur="updateQuantity(this.form)" /></td>';   //pQuan
						dis =''; //only enable update butt if its an item order
					}
					else {
						iCart +='<td width="50"><input name="qty'+s+'" value="' +quaArr[s]+ '" type="text" class="txFld" style="width:50px;background:#ffff00;border:1px solid #ff0000" onKeyPress="return numsOnly(event)" maxlength="5" onBlur="updateQuantity(this.form)" disabled /></td>';   //pQuan
					}
					
				iCart +='<td>' +itmArr[s]+ '</td>';   //itmId
				iCart +='<td>' +desArr[s]+ '</td>';   //descript
				
					if(currType =='USD') {
						iCart +='<td align="right">' +fixP(priArr[s]*(top.USD))+ '&nbsp;</td>';   //usd unit
					}
					else {
						iCart +='<td align="right">' +priArr[s]+ '&nbsp;</td>';   //cdn unit
					}

				iCart +='<td align="right">' +fixP(linTotal)+ '&nbsp;</td>';   //line total
				iCart +='<td><input id="rem'+s+'" onClick="removeItem(hidForm, \''+s+'\')" value="&laquo; remove" class="bb1" style="width:100%;margin:0px;padding:0px" onMouseOver="ovB(this.id);hiliteRow(\'ova\', \''+s+'\')" onMouseOut="ovB(this.id);hiliteRow(\'out\', \''+s+'\')" onFocus="focLin(this.id)" type="button" /></td>';   //remove butt
				iCart +='</tr>';
			}
			
			var sValue =0.00;
			sValue =hidForm.shippin.value;
			if(sValue.indexOf('_')!= -1) { shipPrice =sValue.substring(0,sValue.indexOf('_')); } //weed out da blank values
			else { shipPrice =0.00; }
			
			if(currType =='USD') {
				shipPrice =fixP(shipPrice*(top.USD));   //usd unit
			}
			bigTotal =(subTotal+parseFloat(shipPrice));

		//------
		iCart +='<tr bgcolor="#ffffff">'
		iCart +='<td width="50" align="center"><input id="upd0" onClick="updateQuantity(this.form)" value="update" class="xb1" style="width:100%;margin:0px;padding:0px" onMouseOver="ovB(this.id)" onMouseOut="ovB(this.id)" onFocus="focLin(this.id)" type="button"' +dis+ ' /></td>';   //clear cart
		iCart +='<td colspan="2" align="right"><b>SubTotal $' +currType+ '</b>&nbsp;</td>';
		iCart +='<td colspan="2" align="right"><b>' + fixP(subTotal) +'</b>&nbsp;</td>';
		iCart +='<td>&nbsp;</td></tr>';
		iCart +='<tr bgcolor="#ffffff" class="bluSml">'
		iCart +='<td colspan="3" align="right"><b>Shipping $' +currType+ '</b>&nbsp;</td>';
		iCart +='<td colspan="2" align="right"><b>' +fixP(shipPrice)+ '</b>&nbsp;</td>';
		iCart +='<td>&nbsp;</td></tr>';
		iCart +='<tr bgcolor="#F0FEEA">'
		iCart +='<td colspan="3" align="right" class="blkMed"><b>TOTAL $' +currType+ '</b>&nbsp;</td>';			
		iCart +='<td colspan="2" align="right" class="blkSml"><b>' +fixP(bigTotal)+ '</b>&nbsp;</td>';
		iCart +='<td>&nbsp;</td></tr>';
		iCart +='<tr>'
		iCart +='<td colspan="6" bgcolor="#FDF5E9" align="right"><input id="clr0" onClick="clearCart(hidForm)" value="clear cart" class="xb1" style="width:70px;margin:0px;padding:0px" onMouseOver="ovB(this.id)" onMouseOut="ovB(this.id)" onFocus="focLin(this.id)" type="button" /></td>';   //clear cart
		iCart +='</tr>';
		iCart +='</table>';

		iCart +='<table class="blkSml" width="100%" align="center" border="0" cellpadding="2" cellspacing="1" bgcolor="#FFCBCA" style="border-top:1px solid #ffffff">';
		iCart +='  <tr bgcolor="#ffffff">';
		iCart +='   <td>';
	    iCart +='  <select name="shipping" class="dpDwn" style="" onChange="window.focus();chooseShip(this.form)">';
        iCart +='    <option value="">Shipping Options</option>';
        iCart +='    <option value="0.00_Pick up">I will pick up at Ticket Gateway</option>';
        iCart +='    <option value=""></option>';
        iCart +='    <option value="">---- Shipping within Canada ----</option>';
			
			if(ticTotal <=500) {
        		iCart +='    <option value="9.50_FedEx Ground 2 to 3 day">FedEx Ground 2 to 3 day costs $CDN 9.50 (500 tickets or less)</option>';
        	}
			if(ticTotal>500 && ticTotal<=5000) {
        		iCart +='    <option value="12.50_FedEx Ground 2 to 3 day">FedEx Ground 2 to 3 day costs $CDN 12.50 (501 to 5000 tickets)</option>';
        	}
			if(ticTotal>5000) {
				var tPrice =fixP((14.50/1500)*ticTotal);
		        iCart +='    <option value="' +tPrice+ '_FedEx Ground 2 to 3 day">FedEx Ground 2 to 3 day costs $CDN '+tPrice+' (' +ticTotal+ ' tickets)</option>';
        	}
        	
        iCart +='    <option value=""></option>';
        iCart +='    <option value="">---- Shipping to US ----</option>';
			if(ticTotal <=500) {
 		       iCart +='    <option value="16.00_FedEx 2 Day">FedEx 2 Day costs $CDN 16.00 (500 tickets or less)</option>';
        	}
			if(ticTotal>500 && ticTotal<=1500) {
        		iCart +='    <option value="25.00_FedEx 2 Day">FedEx 2 Day costs $CDN 25.00 (501 - 1500 tickets)</option>';
        	}
			if(ticTotal>1500) {
				var tPrice =fixP((25.00/1500)*ticTotal);
		        iCart +='    <option value="' +tPrice+ '_FedEx 2 Day">FedEx 2 Day costs $CDN '+tPrice+' (' +ticTotal+ ' tickets)</option>';
        	}
        iCart +='    <option value=""></option>';
        iCart +='  </select>';
		iCart +='   </td>';
		iCart +='    <td width="30" align="center" bgcolor="#FF0000"><input name="currency" type="radio" class="radio10" value="CDN" onClick="setCurrency(this.value)" onFocus="if(this.blur)blur(this)" /></td>';
		iCart +='    <td width="31"><img src="grafx/flag_canada.gif" width="31" height="20"></td>';
		iCart +='    <td width="31"><img src="grafx/flag_usa.gif" width="31" height="20"></td>';
		iCart +='    <td width="30" align="center" bgcolor="#0066FF"><input type="radio" name="currency" class="radio10" value="USD" onClick="setCurrency(this.value)" onFocus="if(this.blur)blur(this)" /></td>';
		iCart +='    <td width="20"><input id="q1" onClick="cHelp(this.id)" value="?" class="xb1" style="width:20px; height:20px; margin:0px; cursor:help" onMouseOver="ovB(this.id)" onMouseOut="ovB(this.id)" onFocus="focLin(this.id)" type="button" /></td>';
		iCart +='    <td width="70">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>';
		iCart +='  </tr>';
		iCart +='</table>';

		iCart +='<table class="blkSml" width="100%" align="center" border="0" cellpadding="2" cellspacing="1" bgcolor="#FFCBCA" style="border-top:1px solid #ffffff;">';
		iCart +='  <tr>';
		iCart +='   <td align="center" style="padding-top:5px">This section is only applicable to customers with approved credit (on proceeding you will bypass our payment processor)</td>';
		iCart +='    <td width="70">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>';
		iCart +='  </tr><tr>';
		iCart +='   <td align="right" style="padding-bottom:5px">Company Name: <input name="cusName" type="text" value="" class="txFld" style="width:200px;text-align:center" maxlength="50" />';
		iCart +='   &nbsp;O.A.C#: <input name="cusNum" type="text" value="" class="txFld" style="width:200px;text-align:center" maxlength="20" />';
		iCart +='   &nbsp;Tel: <input name="cusTel" type="text" value="" class="txFld" style="width:140px;text-align:center" maxlength="20" />';
		iCart +='   <input id="q2" onClick="cHelp(this.id)" value="?" class="xb1" style="width:20px; height:20px; margin:0px; cursor:help" onMouseOver="ovB(this.id)" onMouseOut="ovB(this.id)" onFocus="focLin(this.id)" type="button" />';
		iCart +='   </td>';
		iCart +='    <td width="70">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>';

		iCart +='  </tr>';
		iCart +='</table>';

		//alert(iCart)
	}
	else {   //cart mty
			iCart +='<tr bgcolor="#FDF5E9">'
			iCart +='<td colspan="6" align="center" class="brnLrg"><br><br><b><br><br>Your Shopping cart is empty!</b><br><br><br><br><br></td>';   //pQuan
			iCart +='</tr></table>';
			document.getElementById('pro1').disabled =1;

	}
	document.getElementById('itmSpread').innerHTML =iCart;
	
	if(hidForm['ordType'].value) {                       //we have an item
		var f =document.forms['cartForm'];               //above form declared/named in plates
		if(hidForm.currenc.value =='CDN') { f.currency[0].checked =true; }
		else { f.currency[1].checked =true; }

		var shipOps =f.shipping.options;
		for(var i=0; i< shipOps.length; ++i) {
			if(sValue =='') { f.shipping.selectedIndex =0; break; }  //show def if user selects a blank line
			if(sValue ==shipOps[i].value) {
				f.shipping.selectedIndex =i; break;
			}
		} 
	}
};
//---------------------------

function chooseShip(form) {
	var sValue =form.shipping.options[form.shipping.selectedIndex].value;
	shipPrice =sValue.substring(0,sValue.indexOf('_'));
	hidForm.shippin.value =sValue;
	pt_viewCart('addship');
};
//---------------------------

function setCurrency(val) {
	hidForm.currenc.value =val;
	//if(val =='USD') {
		pt_viewCart('changecurr');
	//} else { pt_viewCart('changecurr'); }
};
//---------------------------

function cHelp(id) {
	if(id=='q1') {
		return alert('Our cart calculates in $canadian.\nHowever, your Credit Card will be billed in whatever currency you select here.          \n\n'+
			'Your selection cannot be changed after our Secure Payment Processor is loaded.\n\n');
	}
	if(id=='q2') {
		return alert('1. Please supply your Company name.\n\n2. Your customer O.A.C (On Approved Credit) number supplied by The Printing Press Inc.          \n\n'+
			'3. And your current telephone number in the event we need to contact you.\n\n');
	}
};
//---------------------------

var flyCart;
var isCartOpen =0;
var tPosCart   =0;

function doFlyinCart(oHigh, oCode) {
	
	scrubDiv();
	document.getElementById("dyCart").innerHTML ='&nbsp;';
	isVis  =0;                       //var in tDesigner to indicate if ticketModule visible
									 //need to reset this every time the designer flys in(for logo choice)
	clearInterval(flyCart);                         //not really neccessary
	oHigh+= 40;
	xFac      = Math.ceil(oHigh/10);
	tPosCart  = -(oHigh);
	
		dyC =document.getElementById("flyinCart");
		dyC.style.top =tPosCart; sPos =(10-tPosCart)+1; 
		myTop=0;      
		dyC.style.visibility ='visible';
		
		flyCart =setInterval( "if(myTop< sPos) { dyC.style.top =eval(tPosCart +myTop); } "+
						"else {clearInterval(flyCart), isCartOpen=1, dyC.style.top=1; }; myTop +=xFac", 20);
	
		document.getElementById("dyCart").innerHTML =oCode;
};
//---------------------------

function numsOnly(e) {
var keynum;
var keychar;
var numcheck;

	if(window.event) {         //ie
		keynum = e.keyCode;
	}
	else if(e.which) {         //nn/ff/fat lady
		keynum = e.which;
	}
	keychar = String.fromCharCode(keynum);
	numcheck = /\d/;
	return(numcheck.test(keychar));
};
//---------------------------

function scrubCart() { //
	document.getElementById("dyCart").innerHTML ='scrubbed';
	document.getElementById("flyinCart").style.visibility ='hidden';
	//document.getElementById("flyinCart").style.top ='-1000px'; //to deal with buggy firefox with divs over divs visibility renders flash buttin behaviour erratic
	isCartOpen =0;
};
//---------------------------

function removeItem(form, itmPos) {  //itmPos= position in hidden element str
	var aLen =form.length;
	var tmpArr =[]; 
	parseFloat(itmPos);
	
	for(var a=0; a< aLen; ++a) { 
		tmpArr =form[a].value.split('|');       //alert(tmpArr)
		form[a].value ='';
		
		tmpArr.splice(itmPos, 1);               //alert(tmpArr)
			
		for(var k=0; k< tmpArr.length; ++k) {                 //rewrite each field less the removed itm
			if(k >0) { form[a].value +='|' +tmpArr[k]; }
			else { form[a].value =tmpArr[0]; }             //one item only
		}
	}
	pt_viewCart('remove');
	return true;
};
//---------------------------

function clearCart(form) {
	var ans = confirm('OK to clear all items...?          ');
	if(ans) {
		var aLen =form.length;
		for(var a=0; a< aLen; ++a) { 
 			form[a].value ='';
 			if(form[a].name =='currenc') { form[a].value ='CDN'; }
 			if(form[a].name =='shippin') { form[a].value ='0.00'; }
 		}
 		pt_viewCart('clear');
		return true;
	}
	return false;
};
//---------------------------

//function getShippingPg() { 
//	openCartWin('about:blank', 'cartWin', 900, 600);
//};
//---------------------------

function processPayment() {

	var f =document.forms['cartForm'];               //above form declared/named in plates
	hidForm.cusName.value =f.cusName.value;
	hidForm.cusNum.value  =f.cusNum.value;
	hidForm.cusTel.value  =f.cusTel.value;
	
	if(hidForm.shippin.value =='' || hidForm.shippin.value =='0.00') {
		return(alert('You must choose a shipping method.          '));
	}

	openCartWin('about:blank', 'cartWin', 900, 700);
	hidForm.action ="https://www.TicketGateway.com/cgi-bin/=tg_doCart.cgi";
	hidForm.method ="POST";
	hidForm.subType.value ='processCart';
	hidForm.target ='cartWin';
	hidForm.submit();

};
//---------------------------

function updateQuantity(cart) {  //onBlur in textfield: another firefox (PieceOfShit[TM]) bug (see setIt() for workaround)
                              //https://bugzilla.mozilla.org/show_bug.cgi?id=53579
	var qArr =[];
	var cLen =cart.length;                //cartForm
	for(var i =0; i< cLen; ++i) {
		if(cart.elements[i].type =='text' && cart.elements[i].name.substr(0,3)== 'qty') {
			qArr.push(cart.elements[i].value);
		}
	}
	
	for(var q=0; q< qArr.length; ++q) {                 //rewrite each field with new quan
		if(q >0) { hidForm['pQuan'].value +='|' +qArr[q]; }
		else { hidForm['pQuan'].value =qArr[0]; }             //one item only
	}

	//alert('qArr: '+qArr);
	
	
	pt_viewCart('update');
	return true;

};
//---------------------------

function hiliteRow(state, rNum) {
	var cRow ='row'+rNum;
	document.getElementById(cRow).style.backgroundColor =(state =='ova')? '#FBF475':'#FDF5E9';
};
//---------------------------

//-->

