﻿/*eXpansys.com - common JS (was autosearch_xxxx.js) */

function checkJS()
{
    var noJSDirectory = document.getElementById("noJSDirectory");
    {
    if (noJSDirectory)
        noJSDirectory.href = "javascript:;";                
    }
    
    var noJSReview = document.getElementById("noJSReview");
    if (noJSReview)
    {          
        noJSReview.href = "javascript:;";
    }
	
	var noJSDirectory = document.getElementById("noJSDirectory2");
    {
    if (noJSDirectory)
        noJSDirectory.href = "javascript:;";                
    }
    
    var noJSReview = document.getElementById("noJSReview2");
    if (noJSReview)
    {          
        noJSReview.href = "javascript:;";
    }
	
    
    var downloadForm = document.getElementById("downloadForm");
    if (downloadForm)
    {
        downloadForm.target = "ACSframe";
        downloadForm.submit();    
    }
    
    var delivery = document.getElementById("delivery");
        
    if (delivery)
    {
        var bankTransfer = document.getElementById("BankTransfer");
        var bankTransferChecked = false;
        if (bankTransfer)
        {
            // exception for AU: show invoice address section and hide delivery address section by default
            var b_street = document.getElementById("b_street");
        
            if (bankTransfer.checked && !b_street)
            {
                bankTransferChecked = true;
            }
        }
        
        var cheque = document.getElementById("Cheque");
        var chequeChecked = false;
        if (cheque)
        {
            if (cheque.checked)
            {
                chequeChecked = true;
            }
        }
        
        var showDelivery = document.getElementById("show_delivery");
        var showDeliveryChecked = false;
        if (showDelivery)
        {
            if (showDelivery.checked)
            {
                showDeliveryChecked = true;
            }
        }
        
        
        if (!bankTransferChecked && !chequeChecked && !showDeliveryChecked)
        {
            delivery.style.display = "none";  
        }      
    }
}

function toggleDeliveryBox()
{
    
    if (document.getElementById("delivery") != null)
    {
        if (document.getElementById("delivery").style.display == "none")
        {
            document.getElementById("delivery").style.display = "block";
            document.getElementById("s_street").value = "";
            document.getElementById("s_street1").value = "";
            document.getElementById("s_street2").value = "";
            document.getElementById("s_city").value = "";
            document.getElementById("s_state").value = "";
            document.getElementById("s_zip").value = "";
        }
        else if (document.getElementById("delivery").style.display == "block")
        {
            document.getElementById("delivery").style.display = "none";
            document.getElementById("s_street").value = document.getElementById("b_street").value;
            document.getElementById("s_street1").value = document.getElementById("b_street1").value;
            document.getElementById("s_street2").value = document.getElementById("b_street2").value;
            document.getElementById("s_city").value = document.getElementById("b_city").value;
            document.getElementById("s_state").value = document.getElementById("b_state").value;
            document.getElementById("s_zip").value = document.getElementById("b_zip").value;
        }
    } 
      
}

function copyValue(source, destination)
{
    if ((source != null) && (document.getElementById(destination) != null))
    {
        document.getElementById(destination).value = source.value;
    }
}

function validateCheckout(checkout, errorMessage, warehouseId, ccerrorMessage, vaterrorMessage, accounterrorMessage)
{

   var validates = true;
        
    if (!checkValue(document.getElementById("name"))) validates = false;
    if (!checkValue(document.getElementById("cardnumber"))) validates = false;
    if (!checkValue(document.getElementById("cvv"))) validates = false;
    if (!checkExpiryValue(document.getElementById("ExpiryMonth"))) validates = false;
    if (!checkExpiryValue(document.getElementById("ExpiryYear"))) validates = false;
    if (!checkValue(document.getElementById("b_street"))) validates = false;
    if (!checkValue(document.getElementById("b_city"))) validates = false;
    if (!checkValue(document.getElementById("b_zip"))) validates = false;
    if (!checkValue(document.getElementById("emailaddress"))) validates = false;
    if (!checkValue(document.getElementById("emailaddressConfirm"))) validates = false;
    
    if (!checkValue(document.getElementById("ContactNumber"))) validates = false;
    if (!checkValue(document.getElementById("province"))) validates = false;
    if (!checkValue(document.getElementById("ELVaccountHolderName"))) validates = false;
    if (!checkValue(document.getElementById("ELVbankAccountNr"))) validates = false;
    if (!checkValue(document.getElementById("ELVbankLocationId"))) validates = false;
    if (!checkValue(document.getElementById("ELVbankName"))) validates = false;
    if (!checkValue(document.getElementById("ELVbankLocation"))) validates = false;
    
    if (!checkValue(document.getElementById("CardHolderFirstName"))) validates = false;
    if (!checkValue(document.getElementById("CardHolderLastName"))) validates = false;
    
    if (!checkValue(document.getElementById("CustID"))) validates = false;
    if (!checkValue(document.getElementById("VatRegNum"))) validates = false;
        
    if (document.getElementById("AcceptTerms") != null)
    {
        if (!document.getElementById("AcceptTerms").checked) validates = false;   
    }
    
    if (!validates) alert(errorMessage);
    
    if (!checkValueEqual(document.getElementById("emailaddress"), document.getElementById("emailaddressConfirm")))
    {
        // if both email addresses have been filled out
        if (validates)
        {
            alert("Please enter the same email address twice.");
        }
        
        validates = false;
    }
    
    if (document.getElementById("cardnumber") != null && document.getElementById("cardnumber").value != "" && warehouseId == 7)
    {
    
        var cardnumber = document.getElementById("cardnumber").value.split(' ').join('');
            
        if (!validateCreditCard(cardnumber))
        {
            if (validates)
            {
                alert(ccerrorMessage);
            }
            
            validates = false;
        }
    }
    
   if (document.getElementById("VatRegNum") != null && document.getElementById("VatRegNum").value != "" && warehouseId == 7)
   {
            
      if (! validateVatNumber(document.getElementById("VatRegNum").value) )
      {     
        if (validates)
        {
            alert(vaterrorMessage);
        }
           
        validates = false;
      }
      
   }  
   
   if (document.getElementById("CustID") != null && document.getElementById("CustID").value != "" && warehouseId == 7)
   {            
      if (! validateAccountCode(document.getElementById("CustID").value) )
      {     
        if (validates)
        {
            alert(accounterrorMessage);
        }
           
        validates = false;
      }
      
   }   
    return validates;
    
}

function validateAccountCode(accountCode)
{
    var url = "/iaAjax.ashx?action=accountcheck&accountCode=" + escape(accountCode);
    if (window.XMLHttpRequest) 
    { // Non-IE browsers
        req = new XMLHttpRequest();

        try 
        {
            req.open("GET", url, false);
        } 
        catch (e) 
        {
            alert(e);
        }
        req.send(null);
        
        if (req.status == 200)
        {
            if (req.responseText == "True") { 
                
                return true; }
            else {
                return false;
            }
        }
    } 
    else if (window.ActiveXObject) 
    { // IE
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) 
        {
            req.open("GET", url, false);
            req.send();
            
        }
    }
}

function validateVatNumber(vatNumber)
{
    var url = "/iaAjax.ashx?action=vatCheck&vatNumber=" + escape(vatNumber);
    if (window.XMLHttpRequest) 
    { // Non-IE browsers
        req = new XMLHttpRequest();
        try 
        {
            req.open("GET", url, false);
        } 
        catch (e) 
        {
            alert(e);
        }
        req.send(null);
        
        if (req.status == 200)
        {
            if (req.responseText == "True") { 
                
                return true; }
            else {
                return false;
            }
        }
    } 
    else if (window.ActiveXObject) 
    { // IE
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) 
        {
            //req.onreadystatechange = AddAlert_Callback;
            req.open("GET", url, false);
            req.send();
            
        }
    }
}

function checkExpiryValue(itemToCheck)
{
    var result = true;
    
    if (itemToCheck != null)
    {
        if (itemToCheck.value == "-")
        {
            result = false;
        }
    }

    return result;  
}

function checkValue(itemToCheck)
{
    //returns false if an item fails to validate
    
    var result = true;
    
    if (itemToCheck != null)
    {
        if (itemToCheck.value == "")
        {
            result = false;
        }
    }

    return result;  
}

function checkValueEqual(itemToCheck1, itemToCheck2)
{
    //returns false if two items are not equal
    
    var result = true;
    
    if (itemToCheck1 != null && itemToCheck2 != null)
    {
        if (itemToCheck1.value != itemToCheck2.value)
        {
            result = false;
        }
    }

    return result;  
}

function formatNumbers()
{
    if (document.getElementById("cardnumber") != null)
    {
        var converted = stringToAscii(document.getElementById('cardnumber').value);
        document.getElementById('cardnumber').value = converted;
    }
}

function stringToAscii(s)
{
    var asciiCode = 0;
    var asciiString = "";
    if(s.length>0)
    {
        for(i=0; i<s.length; i++)
        {
            asciiCode = s.charCodeAt(i);
            if (asciiCode == 12288 || asciiCode == 65293) // Shift_JIS space or dash
            {
                asciiString += " ";
            }
            else if (asciiCode >= 65296 && asciiCode <= 65305)　// Shift_JIS 0-9
            {
                asciiString += String.fromCharCode(asciiCode-65248);
            }
            else if (asciiCode == 32 || (asciiCode >= 48 && asciiCode <= 57)) // ascii space or 0-9
            {
                asciiString += String.fromCharCode(asciiCode);
            }
            else if (asciiCode == 45) // ascii dash
            {
                asciiString += " ";
            }
        }
        return(asciiString);
    }
}

function toggleAddressDisplay(baseId)
{
    if (document.getElementById(baseId + "Type").value == "1")
    {
        document.getElementById(baseId + "Residential").style.display = "none";
        document.getElementById(baseId + "BFPO").style.display = "block";
    }
    else
    {
        document.getElementById(baseId + "Residential").style.display = "block";
        document.getElementById(baseId + "BFPO").style.display = "none";
    }    
}

function validateCreditCard(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("This IS a valid Credit Card Number!");
//}
//if(!bResult){
//  alert("This is NOT a valid Credit Card Number!");
//}
  return bResult; // Return the results

}
