document.cookie = 'js=on';

var shipSetupLine='<td>Above <input name="ounces[[x]]" vdt="number" vname="Ounces" type="text" size="5" onchange="validateField(this);"> ounces charge <input name="value[[x]]" type="text" vdt="cost" vname="Value" size="5" onchange="makeCurrency(this);">&nbsp;<select name="valtype[[x]]"><option value="percent">%</option><option value="cost">Dollars</option></select></td></tr>';

var shipSetupCostLine='<td>Above $&nbsp;<input name="totalDollars[[x]]" vdt="cost" vname="Total Dollars" type="text" size="5" onchange="makeCurrency(this);"> charge $&nbsp;<input name="totalDollarsCharge[[x]]" type="text" vdt="cost" vname="Value" size="5" onchange="makeCurrency(this);">';

var taxLine='<td>Tax <input type="text" value="0.00" onchange="makeCurrency(this);" size="5" vname="salesTaxPercent" vdt="number" name="salesTaxPercent[[x]]"/>% when shipping address is in <select name="salesTaxState[[x]]"><option value="ALL">All States</option><option value="AA">AA-APO/FPO</option><option value="AE">AE-APO/FPO</option><option value="AL">Alabama</option><option value="AK">Alaska</option><option value="AZ">Arizona</option><option value="AR">Arkansas</option><option value="CA">California</option><option value="CO">Colorado</option><option value="CT">Connecticut</option><option value="DE">Delaware</option><option value="DC">District Of Columbia</option><option value="FL">Florida</option><option value="GA">Georgia</option><option value="HI">Hawaii</option><option value="ID">Idaho</option><option value="IL">Illinois</option><option value="IN">Indiana</option><option value="IA">Iowa</option><option value="KS">Kansas</option><option value="KY">Kentucky</option><option value="LA">Louisiana</option><option value="ME">Maine</option><option value="MD">Maryland</option><option value="MA">Massachusetts</option><option value="MI">Michigan</option><option value="MN">Minnesota</option><option value="MS">Mississippi</option><option value="MO">Missouri</option><option value="MT">Montana</option><option value="NE" selected="">Nebraska</option><option value="NV">Nevada</option><option value="NH">New Hampshire</option><option value="NJ">New Jersey</option><option value="NM">New Mexico</option><option value="NY">New York</option><option value="NC">North Carolina</option><option value="ND">North Dakota</option><option value="OH">Ohio</option><option value="OK">Oklahoma</option><option value="OR">Oregon</option><option value="PA">Pennsylvania</option><option value="RI">Rhode Island</option><option value="SC">South Carolina</option><option value="SD">South Dakota</option><option value="TN">Tennessee</option><option value="TX">Texas</option><option value="UT">Utah</option><option value="VT">Vermont</option><option value="VA">Virginia</option><option value="WA">Washington</option><option value="WV">West Virginia</option><option value="WI">Wisconsin</option><option value="WY">Wyoming</option></select></td>';

var shipWeightLineCount=0;
var shipCostLineCount=0;
var taxLineCount=0;

var rws;
function removeLastRow(obj){
 obj=document.getElementById(obj);
 rws=obj.getElementsByTagName('tr');
 obj.deleteRow(length-1);
}

function getTotalWithOptions(id) {
	
	span=document.getElementById('itemTotal'+id);
    if (span) {
        var qty=intval(document.getElementById('qty'+id).value);
        var cost=qty * intval(document.getElementById('basecost'+id).value);
        var elem=document.getElementById('product'+id).elements;
        var curcost=0;
        for (var i=0; i<elem.length; i++) {
          if (elem[i].checked) {
          	
            curcost=intval(cost);
            curcost=parseFloat(curcost)+(parseFloat(elem[i].getAttribute('cost')*qty));
            cost=curcost;
          }
        }
        cost=number_format(cost,2);
        
        span.firstChild.data="$"+cost;
        }
}

function removeCartItem(pos) {
	var base = location.href.substring(0,location.href.lastIndexOf('/')+1);
	var baseEncode = encode64('assets/templates/site/includes/cartfunc.php');
	var ajaxstr = base+"/functions.html?f=" + baseEncode + "&action=removefromcart&pos="+pos;
    $.ajax({
    type:"GET",
    url:ajaxstr,
    success:showRemoveCartItemSuccess
    });
    }

function showRemoveCartItemSuccess(pos) {
	var jgWidth=500;
	var docWidth=$(window).width();
	var jgLeft=(docWidth/2)-(jgWidth/2);
	$("#jGrowl").css({'left':jgLeft+"px"});
	$("#jGrowl").css({'top':"270px"});
	$("#jGrowl").css({'visibility':'visible'});
	$("#itemTable"+pos).fadeOut("normal", function() {
		//$.jGrowl("Item has been removed your cart.");
		location.reload(true);
	});
	}
	
function addProdToCart(file,id) {
	var elem=document.getElementById('product'+id).elements;
	var selectedOptions = new Array();
	var qty=document.getElementById('qty'+id).value;
	var instrField=document.getElementById('instructions'+id).value;
	var arrCount=0;
	for (var i=0; i<elem.length; i++) {
		if (elem[i].checked) {
				selectedOptions[arrCount]=elem[i].getAttribute('opt');
				arrCount++;
		}				
	}
	var base = location.href.substring(0,location.href.lastIndexOf('/')+1);
	var baseEncode = encode64('assets/templates/site/includes/cartfunc.php');
	var instrDirty = document.getElementById('instrDirty'+id).value;
	var instrEncode= "";
	
	if (instrDirty!="false") instrEncode = encode64(instrField);
	var ajaxstr = base+"/functions.html?f=" + baseEncode + "&action=addprodtocart&id="+id+"&qty="+qty+"&options=" + serialize(selectedOptions) + "&ins=" + instrEncode + "&fileDescrip=" + file;
    //alert(ajaxstr);
	$.ajax({
    type:"GET",
    url:ajaxstr,
    success:showAddProductToCartSuccess
    });
}

function showAddProductToCartSuccess(opt) {
	//$("#chooseButton"+opt).fadeOut("fast");
	//var jg=jQuery.jGrowl.instance;
	//jQuery.jGrowl.defaults.position = 'center';
	//jQuery.jGrowl.style.left="400px";
	
	var jgWidth=500;
	var docWidth=$(window).width();
	var jgLeft=(docWidth/2)-(jgWidth/2);
	
	$("#jGrowl").css({'left':jgLeft+"px"});
	$("#jGrowl").css({'top':"270px"});
	$("#jGrowl").css({'visibility':'visible'});
	
	$.scrollTo(0 , 400, { easing:'easeOutQuad' });
	$("#optDrop"+opt).fadeOut("normal", function() {
		$.jGrowl("Item has been added to your cart.");
		$("#chooseButton"+opt).fadeIn("slow");
	});
	
}

function addLine(id,line,linecount){
   if (isNaN(linecount)) linecount=1;
   linecount++;
   table = document.getElementById(id);
   //var newRow = table.tBodies[0].rows[1].cloneNode(true);
   //table.innerHTML=table.innerHTML+line.replace(/\[\[x\]\]/g,linecount);
   addRowCopy=line.replace(/\[\[x\]\]/g,linecount);
   newRow=table.insertRow('-1');
   newRow.innerHTML=addRowCopy;
   return(linecount);
}


function showProductOptions(prod,file) {
	var base = location.href.substring(0,location.href.lastIndexOf('/')+1);
    var baseEncode = encode64('assets/templates/site/includes/cartfunc.php');
    var ajaxstr = base+"functions.html?f=" + baseEncode + "&action=prodopt&id="+prod+"&fileDescrip="+file;
    $.ajax({
    type:"GET",
    url:ajaxstr,
    success:showOptionsPopup
    });
}

function showOptionsPopup(retr) {
    var newRet=unserialize(retr);
    var opt=newRet[0];
    var HTMLoutput=newRet[1];
    var odElemName='optDrop'+opt;
    var odElem=document.getElementById(odElemName);
    //alert(document.getElementById(odElem).id);
    //alert(HTMLoutput);
    //odElem.innerHTML=HTMLoutput;
    //document.getElementById('optDrop'+opt).style.display='block';
	//var text = document.createTextNode(HTMLoutput);
	//odElem.appendChild(text);
	//odElem.innerHTML=HTMLoutput;
	var oldDiv=odElem;
	var newDiv=document.createElement(oldDiv.tagName);
	newDiv.id=oldDiv.id;
	newDiv.className=oldDiv.className;
	newDiv.innerHTML=HTMLoutput;
	oldDiv.parentNode.replaceChild(newDiv,oldDiv);
	$("#optDrop"+opt).fadeIn("slow");
	$("#chooseButton"+opt).fadeOut("slow");
	getTotalWithOptions(opt);
	var st=document.getElementById('product'+opt);
	$.scrollTo("#product"+opt , 800, {easing:'easeOutQuad'});
}

function addToCart(item) {
	var base = location.href.substring(0,location.href.lastIndexOf('/')+1);
	var baseEncode = encode64('assets/templates/site/includes/cartfunc.php');
	
//	if (instrDirty!="false") instrEncode = encode64(instrField);
	var ajaxstr = base+"/functions.html?f=" + baseEncode + "&action=addprodtocart&id="+item+"&qty=1";
	//alert(item);
	$.ajax({type:"GET", url:ajaxstr, success:addComplete});
}

function addProofToCart(file,qty) {
	var ajaxstr = "/assets/templates/site/includes/cartfunc.php?action=addproof&id="+file+"&qty="+qty;
	//new Ajax(ajaxstr, {method: 'get',onComplete:addComplete}).request();
	/*var request = new Request({
		url:ajaxstr,
		method:'get',
		update:'refresh-me',
		onComplete: addComplete
	}).send();*/

	$.ajax({
	    type:"GET",
	    url:ajaxstr,
	    success:addComplete
	    });
}

function delFromCart(item){
	var ajaxstr = "/assets/templates/site/includes/cartfunc.php?action=delete&id="+item;
	new Ajax(ajaxstr, {method: 'get',onComplete:delComplete}).request();
}

function calcTotal() {
	alert('foo');
}

function addComplete(ret) {
	document.location="/viewcart.html";
}

function delComplete(ret) {
	document.getElementById('textdump').value="output:"+ret;
}

function showCart() {
	var ajaxstr = "/assets/templates/site/includes/cartfunc.php?action=showcart";
	new Ajax(ajaxstr, {method: 'get',onComplete:addComplete}).request();
}

function shippingPageLoad(cartid) {
	shipWeightLineCount=addLine ('shipByWeightTable',shipSetupLine,shipWeightLineCount);
	shipCostLineCount=addLine ('shipByCostTable',shipSetupCostLine,shipCostLineCount);

	var ajaxstr = "/assets/templates/site/includes/cartfunc.php?action=popCostByWeight&id="+cartid;
	new Ajax(ajaxstr, {method: 'get',onComplete:updateCostByWeight}).request();

	var ajaxstr = "/assets/templates/site/includes/cartfunc.php?action=popCostByCost&id="+cartid;
	new Ajax(ajaxstr, {method: 'get',onComplete:updateCostByCost}).request();
}

function taxPageLoad(cartid) {
	taxLineCount=addLine ('taxTable',taxLine,taxLineCount);

	var ajaxstr = "/assets/templates/site/includes/cartfunc.php?action=popTax&id="+cartid;
	new Ajax(ajaxstr, {method: 'get',onComplete:updateTax}).request();
}

function updateTax(ret) {
	var newRet=unserialize(ret);
	//document.getElementById('shipByWeightTable').innerHTML=ret;
	//document.write(newRet[0]);
	if (newRet[0].length>1) document.getElementById('taxTable').innerHTML=newRet[0];
	taxLineCount=newRet[1];
}

function updateCostByWeight(ret) {
	var newRet=unserialize(ret);
	//document.getElementById('shipByWeightTable').innerHTML=ret;
	if (newRet[0].length>1) document.getElementById('shipByWeightTable').innerHTML=newRet[0];
	shipWeightLineCount=newRet[1];
}

function updateCostByCost(ret) {
	var newRet=unserialize(ret);
	//document.getElementById('shipByWeightTable').innerHTML=ret;
	if (newRet[0].length>1) document.getElementById('shipByCostTable').innerHTML=newRet[0];
	shipCostLineCount=newRet[1];
}

var retQty=0;

function allowQuantity (ret) {
	//alert (ret);
	var newRet=unserialize(ret);

	if (newRet[0]=="false") {
		alert(newRet[2]);
		realQty=newRet[1];
	}
	else
	{
		realQty=newRet[1];
	}
}

function checkQuantity (id,fld) {
	var qty=fld.value;
	var ajaxstr = "/assets/templates/site/includes/cartfunc.php?action=checkQty&id="+id+"&qty="+qty;
	var request = new Request({
		url:ajaxstr,
		method:'get',
		update:'refresh-me',
		onComplete: function(ret) {
			var newRet=unserialize(ret);
			if (newRet[0]=="false") {
				fld.value=newRet[1];
				alert(newRet[2]);
			}
			else
			{
				fld.value=newRet[1];
			}
		}
	}).send();
	return qty;
}

function Mod10(ccNumb) {  // v2.0
	var valid = "0123456789"  // Valid digits in a credit card number
	var len = ccNumb.length;  // The length of the submitted cc number
	var iCCN = parseInt(ccNumb);  // integer of ccNumb
	var sCCN = ccNumb.toString();  // string of ccNumb
	sCCN = sCCN.replace (/^\s+|\s+$/g,'');  // strip spaces
	var iTotal = 0;  // integer total set at zero
	var bNum = true;  // by default assume it is a number
	var bResult = false;  // by default assume it is NOT a valid cc
	var temp;  // temp variable for parsing string
	var calc;  // used for calculation of each digit

	// Determine if the ccNumb is in fact all numbers
	for (var j=0; j<len; j++) {
	  temp = "" + sCCN.substring(j, j+1);
	  if (valid.indexOf(temp) == "-1"){bNum = false;}
	}

	// if it is NOT a number, you can either alert to the fact, or just pass a failure
	if(!bNum){
	  /*alert("Not a Number");*/bResult = false;
	}

	// Determine if it is the proper length
	if((len == 0)&&(bResult)){  // nothing, field is blank AND passed above # check
	  bResult = false;
	} else{  // ccNumb is a number and the proper length - let's see if it is a valid card number
	  if(len >= 15){  // 15 or 16 for Amex or V/MC
	    for(var i=len;i>0;i--){  // LOOP throught the digits of the card
	      calc = parseInt(iCCN) % 10;  // right most digit
	      calc = parseInt(calc);  // assure it is an integer
	      iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit
	      i--;  // decrement the count - move to the next digit in the card
	      iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb
	      calc = parseInt(iCCN) % 10 ;    // NEXT right most digit
	      calc = calc *2;                                 // multiply the digit by two
	      // Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
	      // I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
	      switch(calc){
	        case 10: calc = 1; break;       //5*2=10 & 1+0 = 1
	        case 12: calc = 3; break;       //6*2=12 & 1+2 = 3
	        case 14: calc = 5; break;       //7*2=14 & 1+4 = 5
	        case 16: calc = 7; break;       //8*2=16 & 1+6 = 7
	        case 18: calc = 9; break;       //9*2=18 & 1+8 = 9
	        default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers
	      }
	    iCCN = iCCN / 10;  // subtracts right most digit from ccNum
	    iTotal += calc;  // running total of the card number as we loop
	  }  // END OF LOOP
	  if ((iTotal%10)==0){  // check to see if the sum Mod 10 is zero
	    bResult = true;  // This IS (or could be) a valid credit card number.
	  } else {
	    bResult = false;  // This could NOT be a valid credit card number
	    }
	  }
	}
	// change alert to on-page display or other indication as needed.
	if(!bResult){
	   alert("The credit card number you have entered is not a valid number.  Please try again.");
	}
	  return bResult; // Return the results
}
