var JSCRIPT_0N = false;
var MIN_PASSWORD_LENGTH = 6;

function jscript_switcher()
{
 if (JSCRIPT_ON == false){
    alert('javascript is switched off');}
}



//////////////////////////////////////////////////////////////////////////
// confirm details function 
//////////////////////////////////////////////////////////////////////////
function Confirm(){

    var confirm =  getAllCheckBoxesById('TermsCheckBox');  
    try  {return true;}
    catch (err) {
        alert('catch');
        return false;
    }
}

//////////////////////////////////////////////////////////////////////////
// forgotten password function 
//////////////////////////////////////////////////////////////////////////
function Forgotten(){
    var _objEmail = htmlControl("text", "EmailAddress");      
    if(_objEmail.value=='') {
		alert("you have not entered your email address");
		_objEmail.focus();
		return false;
	} 
    return true;
}

//////////////////////////////////////////////////////////////////////////
// login form function 
//////////////////////////////////////////////////////////////////////////
function Login(){

  var _objusername = htmlControl("text", "UserName");      
  var _objpassword = htmlControl("password", "Password");
  
    if(_objusername.value=='') {
		alert("you have not entered your username!");
		_objusername.focus();
		return false;
	} 
	 
  	if (_objpassword.value==''){
	    alert("You have not entered your password!");
        _objpassword.focus();
        return false; 
	}

    return true;
}

//////////////////////////////////////////////////////////////////////////
// check if we need to ship to billing address or not 
//////////////////////////////////////////////////////////////////////////
function ShipToBillingAddress(){
    var shipping = getAllRadioElementsById('_ShippingAddressOption');
    var shipToBillingAddress = false;
    
    try {
      if (shipping != null) {
        if (shipping.length > 0)  {
            shipToBillingAddress = shipping[0].checked;
        }
      }
    return shipToBillingAddress;
    }
    catch (err) {
        //assume true 
        return true;
    }
}

//////////////////////////////////////////////////////////////////////////
/// Customer Details Section 
/// parameter: IsNew, [false = logged in, true = new customer]
///
/// the logged in form does not contain, passwords, or email textboxes
/// hence they need to be hidden.
////////////////////////////////////////////////////////////////////////
function CustomerDetails(isNew, useTel){
   // customer validation  objects 
   var _objfirstname = htmlControl("text", "_FirstName"); 
   var _objlastname =  htmlControl("text", "_LastName");
   var _objemail = htmlControl("text", "_Email");
   var _objemailconfirm = htmlControl("text", "_ConfirmEmail");
   var _objpassword = htmlControl("password", "_Password");
   var _objpasswordconfirm = htmlControl("password", "_ConfirmPassword");
   var _objtel = htmlControl("text", "_Tel");
   var _objmobile = htmlControl("text", "_MobileTel");

   //// customer validation     ///    
   try { 
   
           if(_objfirstname.value=='') {
		        alert("Please provide your first name!");
		        _objfirstname.focus();
		        return false;
	        }
        	
	        if(_objlastname.value=='')
            {
		        alert("Please provide your last name!");
		        _objlastname.focus();
		        return false;
	        }

	        if (isNew){
        	
	            if(_objemail.value=='')
                {
		            alert("Please provide your email address!");
		            _objemail.focus();
		            return false;
	            } else {     
	                if (isEmail(_objemail.value) == false) 
	                {
	                    alert("Your email is not in a valid email format!");
	                    _objemail.focus();
	                    return false;
	                }      
	            }
        	
	            if (trim(_objemail.value) != trim(_objemailconfirm.value))
	            {
	                alert("Your email addresses do not match!");
	                _objemailconfirm.focus();
	                return false;
	            } 
        	
	            if (_objpassword.value=='')
	            {
	                alert("please provide a password, this must be at least 6 characters in length!");
                    _objpassword.focus();
                    return false 
	            }
            	
	            if (_objpassword.value.length < MIN_PASSWORD_LENGTH)
	            {
	                  alert("your password is too short it must be at least 6 characters in length!");
                      _objpassword.focus();
                    return false 
	            }
        	
	            if (_objpassword.value != _objpasswordconfirm.value)
	            {
	                alert("Your passwords do not match!");
	                _objpasswordconfirm.focus();
	                return false;
	            } 
	            
	        } //end of test isNew
	        
	        
	        if (useTel)
	        {
	            if (_objtel.value =='')
	            {
	                alert("Your must enter a telephone number!");
	                _objtel.focus();
	                return false;
	            }  	
                return ValidatePhoneNoStructure(_objtel.value);
            }
            
           return true;
     
    }      
    catch (err)
    {
        alert('catch');
    }

}




function SignUp()
{
   // customer validation  objects 
   var _objfirstname = htmlControl("text", "_FirstName"); 
   var _objlastname =  htmlControl("text", "_LastName");
   var _objemail = htmlControl("text", "_Email");
   var _objemailconfirm = htmlControl("text", "_ConfirmEmail");
 
   try { 
   
           if(_objfirstname.value=='') {
		        alert("Please provide your first name!");
		        _objfirstname.focus();
		        return false;
	        }
        	
	        if(_objlastname.value=='')
            {
		        alert("Please provide your last name!");
		        _objlastname.focus();
		        return false;
	        }

        	
            if(_objemail.value=='')
            {
	            alert("Please provide your email address!");
	            _objemail.focus();
	            return false;
            } else {     
                if (isEmail(_objemail.value) == false) 
                {
                    alert("Your email is not in a valid email format!");
                    _objemail.focus();
                    return false;
                }      
            }
    	
            if (trim(_objemail.value) != trim(_objemailconfirm.value))
            {
                alert("Your email addresses do not match!");
                _objemailconfirm.focus();
                return false;
            } 
     
     
     return true;
    }      
    catch (err)
    {
        alert('catch');
    }

}


//////////////////////////////////////////////////////////////////////////
// Billing Address form validation 
//////////////////////////////////////////////////////////////////////////
function BillingAddress()
{
 
  //billing adress validation objects   
   var _objbillingaddres1 = htmlControl("text",  "BillingAddress1");
   var _objbillingaddres2 = htmlControl("text", "BillingAddress2");
   var _objbillingtownCity = htmlControl("text", "BillingTownCity");
   var _objbillingPostcode = htmlControl("text", "BillingPostCode");
   var objCountry = BillingCountryFound();

    	
	//// billing address validation section /////
	/// does billing address exist 
	/// needed when billing address does not exist
	if (_objbillingaddres1 == null) { return true; } 
	
	if (_objbillingaddres1.value=='')
	{
	    alert("please complete address field 1!");
	    _objbillingaddres1.focus();
	    return false;
	}
	
	//if (_objbillingaddres2.value=='')
	//{
	//    alert("please complete address field 2!");
    //    _objbillingaddres2.focus();
	//    return false;
	//}
	
	if (_objbillingtownCity.value=='')
	{
	    alert("please complete town/city field!");
		_objbillingtownCity.focus();
	    return false;
	}
	
		
	if (objCountry != null)
	{
	    //alert('billing country found value ' + objCountry.selectedIndex);  
	    var Id = parseInt(objCountry.selectedIndex);
       
        switch (Id)
        {
            case 0:
                alert('you must select a country ');
                return false;
            case 1: //UK Post Code validate  assuming Id 1 is always UK ... 
                //alert('you should validate post code here' );
                if (validatePostCode(_objbillingPostcode) == false) {  return false; }        
                break;
            default:
                //alert('non uk country selected post code validaton needed please continue');
                break;
        }
	}
	else {   if (validatePostCode(_objbillingPostcode) == false) {  return false; }  }
	
	return true;	
}

function validatePostCode(obj)
{
  if (isValidPostCode(trim(obj.value)) == false){   
	     alert("Your cardholder post code is in a invalid format!"); 
	     obj.focus();return false;
  }
  
  return true;
}


function BillingCountryFound()
{
    try  {
        var arr = document.getElementsByTagName("select");
        if (arr != null) {  return arr[0]; }  
	    return null;
    }
    catch (e){return null;}
}


//////////////////////////////////////////////////////////////////////////
// Alternate Address if not delivering to cardholder address validation.
//////////////////////////////////////////////////////////////////////////
function AlternateAddress()
{
   // shipping adress validation objects   
   var _objfirstname = htmlControl("text", "_ShippingRecipientFirstName1"); 
   var _objlastname =  htmlControl("text", "_ShippingRecipientLastName1");
   var _objshippingaddres1 = htmlControl("text",  "ShippingAddress1");
   var _objshippingaddres2 = htmlControl("text", "ShippingAddress2");
   var _objshippingtownCity = htmlControl("text", "ShippingTownCity");
   var _objshippingPostcode = htmlControl("text", "ShippingPostCode");
   var _objShippingCountry = htmlControl("select", "ShippingCountry");
   	if (_objfirstname == null) { return true; } //controls exist so stop validation return true
   
	//// billing address validation section /////
	 if(_objfirstname.value=='')
   {
		alert("Please provide the recipients first name!");
		_objfirstname.focus();
		return false;
	}
	
	if(_objlastname.value=='')
    {
		alert("Please provide the recipients last name!");
		_objlastname.focus();
		return false;
	}
	
	if (_objshippingaddres1.value=='')
	{
	    alert("please complete shiiping address field 1!");
	    _objshippingaddres1.focus();
	    return false;
	}
	
	if (_objshippingaddres2.value=='')
	{
	    alert("please complete shipping address field 2!");
        _objshippingaddres2.focus();
	    return false;
	}
	
	if (_objshippingtownCity.value=='')
	{
	    alert("please complete shipping town/city field!");
		_objshippingtownCity.focus();
	    return false;
	}
	
	if (_objshippingPostcode.value=='')
	{
	    if (_objshippingCountry.SelectedValue == '1'){
	         alert("please provide a shipping post code!");// is UK so check Postcode
		    _objshippingPostcode.focus();
	        return false;
	     }
	     return true;
	}
	
	//valid format postcode
	if (isValidPostCode(trim(_objshippingPostcode.value)) == false)
	{    
	    alert("your shipping post code is in a invalid format!");
		_objshippingPostcode.focus();
	    return false;
	}
	
	return true;
}

/* ********* Phone No. Validation *********
 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters; // + "+"; this will fail sever side so just fail it here.
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
var bracket=3
strPhone=trim(strPhone)
if(strPhone.indexOf("+")>1) return false
if(strPhone.indexOf("-")!=-1)bracket=bracket+1
if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
var brchr=strPhone.indexOf("(")
if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function ValidatePhoneNoStructure(PhoneNo){

	if (checkInternationalPhone(PhoneNo)==false){
		alert("Your Phone Number is in an invalid format.")
		return false
	}
	return true
 }

/********* end Phone No Validation *******/





