

function optinlist(elements)
{
   this.elements = elements
   this.items = new Array(elements)
   this.getItem = list_getItem
   this.getItemName = list_getItemName
   this.getItemText = list_getItemText
   this.isItemMandatory = list_isItemMandatory
   this.setItem = list_setItem
   
}
function list_getItem(element)
{
   return this.items[element]
}
function list_getItemName(element)
{
   return this.items[element].split("|")[0]
}
function list_isItemMandatory(element)
{
   return StringToBool(this.items[element].split("|")[1].toLowerCase())
}
function list_getItemText(element)
{
   return this.items[element].split("|")[2] 
}

function list_setItem(element, stringval)
{
   this.items[element] = stringval
}

function btn_finalCheckout(frm){
    return true;
}


function btn_clickContinue(frm,init)
{
  var valid = false;
  var aResponse = document.getElementsByName("chkRedeem");  
  
  if(init == "onload")
  {  
    return true;
  }
  else
  {
    for ( var i = 0; i < aResponse.length; i++ ) {
        if (aResponse[i].checked == true) {
            valid = true;
        } 
    }
    if(valid == false) {
        alert("Please select a certificate to continue with Checkout ");
        document.getElementsByName("chkRedeem")[0].focus();
        return false;
     }
     
     
    valid = true; 
    for ( var a = 0; a < olist.elements; a++ ) 
    {
       if(olist.isItemMandatory(a) == true && document.getElementById(olist.getItemName(a)).checked != true) /*its mandatory and its not checked, flag the user*/
        {
            alert("Please make sure you have checked the following before continuing \"" + striphtml(document.getElementById(olist.getItemText(a)).innerHTML) + "\"");
            document.getElementsByName(olist.getItemName(a))[0].focus();
            valid = false; 
            break;
        }
    }
    if(valid == true) {
        return true;
    }
    return false;
   }          
}

function striphtml(value)
{
    return value.replace(/(<([^>]+)>)/ig,""); 
}

function SameAsShippingAddress()
{    
    if (document.getElementsByName("chkSameAsShippingAddress")[0].checked == true) {
        showHide(true,"tblSameAsShippingAddress");
        showHide(false,"tblBillingAddress");
    } 
    else 
    {
        showHide(false,"tblSameAsShippingAddress");
        showHide(true,"tblBillingAddress");
    }
}

function changebillingaddress()
{
        var aNewShipping = document.getElementById("billtoaddressid");
        var aCurrentShipping = document.getElementById("billtoid");
        var selindex  = aNewShipping.selectedIndex;
        var selvalue  = aNewShipping.options[selindex].value;
        if(selvalue != "" || selvalue != document.getElementById("billtoaddressid").value){
            document.getElementById("action").value = "changebillingaddress";
            document.getElementById("frmCheckout").submit();
        } 
        return false;
}

function changeshippingaddress() {

        var aNewShipping = document.getElementById("shiptoaddressid");
        var aCurrentShipping = document.getElementById("shiptoid");
        var selindex  = aNewShipping.selectedIndex;
        var selvalue  = aNewShipping.options[selindex].value;
        if(selvalue != "" || selvalue != document.getElementById("shiptoaddressid").value){
            document.getElementById("action").value = "changeshippingaddress";
            document.getElementById("frmCheckout").submit();
        } 
        return false;
}


function CertCalcgsk(){
    var i;
    var certcount = 0;
	var certtotal = 0.00;
	var certtotalredeem = 0.00;
	var finalcharge = 0.00;
	var grandtotal = 0.00;
	
	var isvalid = document.getElementById("isvalid").value;
	if (isvalid == "0"){
	    alert("Please add some products to your cart.");
	    return false;
	}
    var iscertvalid = document.getElementById("iscertvalid").value;
	if (iscertvalid == "0"){
	    alert("You have no available certificates at this moment.");
	    showHide(true,document.getElementById("SubmitOrder"));
	    return false;
	}
	var aResponse = document.getElementsByName("chkRedeem");
	//var njtax  = document.getElementById("NJTax").value; 
	//var subtotal = document.getElementById("SubTotal").value;
	
	//var calcTax  = document.getElementById("calcTax").value; 
	
	 for ( var i = 0; i < aResponse.length; i++ ) {
        var certstr  = aResponse[i].value.trim();
        var certelem = certstr.split("|");
        if (aResponse[i].checked == true) {
            certtotalredeem += parseFloat(certelem[0]);
            certtotal += parseFloat(certelem[0]);
            certcount = certcount + 1;
        } 
        else {
            certtotal += parseFloat(certelem[0]);
        }
       
    }
    if (certcount != 1){
        alert("There was a problem with your certificate selection, You must have at least 1 certificate selected.");   
    } 
    
    document.getElementById("CertOrderValue").value = certcount;
    

}
function Certload()
{

    var i;
    var certtotalredeem = 0;
    var grandtotal = 0.00;
	var finalcharge = 0.00;
	var remainder = 0.00;
	var taxfinal = 0.00;
	var shipping = 0.00;
	

    
    var certsredeem = document.getElementById("certsredeem").value;
    
    var subtotal = parseFloat(document.getElementById("SubTotal").value);
	var njtax  = document.getElementById("NJTax").value; 
	var calcTax  = parseFloat(document.getElementById("calcTax").value); 
	
    var certelems = certsredeem.split(",");

    for ( var i = 0; i < certelems.length; i++ ) {
          var elems = certelems[i].split("|");
           certtotalredeem += parseFloat(elems[0]); 
    }
    
    if(parseFloat(subtotal) < 25.00){//add shipping cost
	   document.getElementById("shippingcost").value = '$5.00';
	   shipping = 5.00;
	} else {
	   document.getElementById("shippingcost").value = 'Free';
	   //finalcharge = parseFloat(subtotal) 
	}

    if((shipping + subtotal) > certtotalredeem){ //there is a balance
        remainder = (shipping + subtotal) - certtotalredeem;
	} else {//set remaining balance to 0
	    remainder = 0.00;
    }
    
    taxfinal = CurrencyFormatted(subtotal * parseFloat(calcTax));
    
	var grandtotal = parseFloat(subtotal) + parseFloat(shipping) + parseFloat(taxfinal); 
	if(grandtotal > certtotalredeem){
       remainder = grandtotal - certtotalredeem
    }
    
    
    document.getElementById("SubmitOrder").value = ' Place Order ';
    
    //document.getElementById("grandtotal").value = "$" + roundOff(grandtotal,2);
	//document.getElementById("CertOrderValue").value = "$" + roundOff(certtotalredeem,2);
	//document.getElementById("FinalValueJS").value = "$" + roundOff(finalcharge,2);
	//document.getElementById("NJTax").value = roundOff((grandtotal * calcTax),2);

	document.getElementById("grandtotal").value = "$" + roundOff(grandtotal,2);
	document.getElementById("CertOrderValue").value = "$" + roundOff(certtotalredeem,2);
	document.getElementById("FinalValueJS").value = "$" + roundOff(remainder,2);
	document.getElementById("NJTax").value =  taxfinal;




}
function CertCalc()
{
		var i;
		var certtotal = 0.00;
		var certtotalredeem = 0.00;
		var finalcharge = 0.00;
		var remainder = 0.00;
		var taxfinal = 0.00;
		var shipping = 0.00;
		
		var isvalid = document.getElementById("isvalid").value;
		if (isvalid == "0"){
		    alert("Please add some products to your cart.");
		    return false;
		}
	    var iscertvalid = document.getElementById("iscertvalid").value;
		if (iscertvalid == "0"){
		    alert("You have no available certificates at this moment.");
		    showHide(true,document.getElementById("SubmitOrder"));
		    return false;
		}
		
		var aResponse = document.getElementsByName("chkRedeem");
		var njtax  = document.getElementById("NJTax").value; 
		var subtotal = parseFloat(document.getElementById("SubTotal").value);
		var calcTax  = parseFloat(document.getElementById("calcTax").value); 
		
		if(!btn_clickContinue(aResponse,"onload")){
		  return false;  
		}
		
        for ( var i = 0; i < aResponse.length; i++ ) {
            var certstr  = aResponse[i].value.trim();
            var certelem = certstr.split("|");
            if (aResponse[i].checked == true) {
                certtotalredeem += parseFloat(certelem[0]);
                certtotal += parseFloat(certelem[0]);
            } 
            else {
                certtotal += parseFloat(certelem[0]);
            }
        }
        
        //var shippingcost = document.getElementById("shippingcost").value;
    
		if(parseFloat(subtotal) < 25.00){//add shipping cost
		   document.getElementById("shippingcost").value = '$5.00';
		   shipping = 5.00;
		} else {
		   document.getElementById("shippingcost").value = 'Free';
		   //finalcharge = parseFloat(subtotal) 
		}
	
        if((shipping + subtotal) > certtotalredeem){ //there is a balance
            remainder = (shipping + subtotal) - certtotalredeem;
            document.getElementById("SubmitOrder").value = '  Continue  ';
            showHide(false,"red");
		} else {//set remaining balance to 0
		    remainder = 0.00;
            document.getElementById("SubmitOrder").value = ' Place Order ';
            showHide(true,"red");
        }
        
        taxfinal = CurrencyFormatted(subtotal * parseFloat(calcTax));
        
		var grandtotal = parseFloat(subtotal) + parseFloat(shipping) + parseFloat(taxfinal); 
		if(grandtotal > certtotalredeem){
	       remainder = grandtotal - certtotalredeem
	       document.getElementById("SubmitOrder").value = '  Continue  ';
        } 
		   
		document.getElementById("certredeem1").value = "$" + roundOff(certtotalredeem,2);
		document.getElementById("remainbalance1").value = "$" + roundOff(remainder,2);
		document.getElementById("grandtotal").value = "$" + roundOff(grandtotal,2);
		document.getElementById("CertCalcValue").value = "$" + roundOff(certtotalredeem,2);
		document.getElementById("CertOrderValue").value = "$" + roundOff(certtotalredeem,2);
		document.getElementById("FinalValueJS").value = "$" + roundOff(remainder,2);
		document.getElementById("NJTax").value =  taxfinal;
		
		
	

}


function showHide(flag,objectid)
{
    document.getElementById(objectid).style.display = (flag?"inline":"none");
}