// General

// This function strips the alphabetical characters of a string.
function numbersOnly(value) {
	return value.replace(/\D/g,"");
}

// This function returns true when an email address is valid
function ValidEmail(value) {
	if ( window.RegExp ) {
		var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
		var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
		var reg1 = new RegExp(reg1str);
		var reg2 = new RegExp(reg2str);
		if (!reg1.test(value) && reg2.test(value) ) { // Valid
			return true;
		} else { // Invalid
			return false;
		}
	} else {
		if(str.indexOf("@") = 0) { 
			return true;
		}
	}
}

// Flash hack for IE's "Click to activate" message

function Flash() {
	theObjects = document.getElementsByTagName("object");  
	for (var i = 0; i < theObjects.length; i++) { 
		theObjects[i].outerHTML = theObjects[i].outerHTML; 
	}
}

function disableObject(Name, Status) {
  myObj = document.getElementById(Name);
  
	if ( Status==true ) {
		myObj.setAttribute("readonly", "true");
		myObj.setAttribute("disabled", "disabled");
	} else {
		myObj.readOnly = false;
		myObj.disabled = false;
	} 
}


// Registration validation

function ValidateRegistration(Action) {
  var Response = "";
	
	// Username
  myTxt = document.getElementById('Username');
  mySpan = document.getElementById('sUsername');
  if ( myTxt.value.length>0 && myTxt.value.length<=50 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Username is empty.\n"; 
  }
	// Email
  myTxt = document.getElementById('Email');
  mySpan = document.getElementById('sEmail');	
	if ( ValidEmail(myTxt.value) ) { // Valid
		mySpan.innerHTML = "";
	} else { // Invalid
		mySpan.innerHTML = "*";
		Response +="Email is empty or invalid.\n";
	}	
	// Password
  myTxt = document.getElementById('Password');
  myTxt2 = document.getElementById('Password2');
  mySpan = document.getElementById('sPassword');	
  if ( myTxt.value.length>0 && myTxt.value.length<=50 && myTxt.value==myTxt2.value ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Username is empty.\n"; 
  }
	
	if ( Action=="Submit" && Response.length>0 )  {
		alert(Response);
		return false;
	} else {
		return true;
	}
}


// Checkout validation

function BillingSameAsShipping(Status) {
  disableObject('shipping_Name', Status);
  disableObject('shipping_Email', Status);
  disableObject('shipping_Address1', Status);
  disableObject('shipping_Address2', Status);
  disableObject('shipping_City', Status);
  disableObject('shipping_Country', Status);
  disableObject('shipping_State', Status);
  disableObject('shipping_ZIP', Status);
  disableObject('shipping_Phone', Status);    
}


function ValidateCheckout(Action) {
  var Response = "";
  //
  // Billing Information
  //
  
  // Name
  myTxt = document.getElementById('billing_Name');
  mySpan = document.getElementById('sbilling_Name');
  if ( myTxt.value.length>0 && myTxt.value.length<=50 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Billing Name is empty.\n"; 
  }
  // Email
  myTxt = document.getElementById('billing_Email');
  mySpan = document.getElementById('sbilling_Email');
	if ( ValidEmail(myTxt.value) ) { // Valid
		mySpan.innerHTML = "";
	} else { // Invalid
		mySpan.innerHTML = "*";
		Response +="Billing Email is empty or invalid.\n";
	}
  // Address1
  myTxt = document.getElementById('billing_Address1');
  mySpan = document.getElementById('sbilling_Address1');
  if ( myTxt.value.length>0 && myTxt.value.length<=100 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Billing Address is empty.\n"; 
  }
  // City
  myTxt = document.getElementById('billing_City');
  mySpan = document.getElementById('sbilling_City');
  if ( myTxt.value.length>0 && myTxt.value.length<=50 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Billing City is empty.\n"; 
  }
	/*
  // Country
  myDdl = document.getElementById('billing_Country');
  mySpan = document.getElementById('sbilling_Country');
  if ( myDdl.value>0 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Billing Country is not selected.\n"; 
  }
  // State
  myDdl = document.getElementById('billing_State');
  mySpan = document.getElementById('sbilling_State');
  if ( myDdl.value>0 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Billing State is not selected.\n"; 
  }
	*/
  // ZIP
  myTxt = document.getElementById('billing_ZIP');
  mySpan = document.getElementById('sbilling_ZIP');
  if ( myTxt.value.length>0 && myTxt.value.length<=15 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Billing ZIP is empty.\n"; 
  }
  // Phone
  myTxt = document.getElementById('billing_Phone');
  mySpan = document.getElementById('sbilling_Phone');
  if ( myTxt.value.length>0 && myTxt.value.length<=30 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Billing Phone is empty.\n"; 
  }
  
  //
  // Shipping Information
  //
  
  // Shipping As Billing Cb: If the Cb is checked, there's no shipping validation.
  myCb = document.getElementById("cbShippingAsBilling");
  
  // Name
  myTxt = document.getElementById('shipping_Name');
  mySpan = document.getElementById('sshipping_Name');
  if ( (myTxt.value.length>0 && myTxt.value.length<=50) || myCb.checked==true ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Shipping Name is empty.\n"; 
  }
  // Email
  myTxt = document.getElementById('shipping_Email');
  mySpan = document.getElementById('sshipping_Email');
	if ( ValidEmail(myTxt.value) || myCb.checked==true ) { // Valid
		mySpan.innerHTML = "";
	} else { // Invalid
		mySpan.innerHTML = "*";
		Response +="Billing Email is empty or invalid.\n";
	}  // Address1
  myTxt = document.getElementById('shipping_Address1');
  mySpan = document.getElementById('sshipping_Address1');
  if ( (myTxt.value.length>0 && myTxt.value.length<=100) || myCb.checked==true ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Shipping Address is empty.\n"; 
  }
  // City
  myTxt = document.getElementById('shipping_City');
  mySpan = document.getElementById('sshipping_City');
  if ( (myTxt.value.length>0 && myTxt.value.length<=50) || myCb.checked==true ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Shipping City is empty.\n"; 
  }
	/*
  // Country
  myDdl = document.getElementById('shipping_Country');
  mySpan = document.getElementById('sshipping_Country');
  if ( myDdl.value>0 || myCb.checked==true ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Shipping Country is not selected.\n"; 
  }
  // State
  myDdl = document.getElementById('shipping_State');
  mySpan = document.getElementById('sshipping_State');
  if ( myDdl.value>0 || myCb.checked==true ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Shipping State is not selected.\n"; 
  }
	*/
  // ZIP
  myTxt = document.getElementById('shipping_ZIP');
  mySpan = document.getElementById('sshipping_ZIP');
  if ( (myTxt.value.length>0 && myTxt.value.length<=15) || myCb.checked==true ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Shipping ZIP is empty.\n"; 
  }
  // Phone
  myTxt = document.getElementById('shipping_Phone');
  mySpan = document.getElementById('sshipping_Phone');
  if ( (myTxt.value.length>0 && myTxt.value.length<=30) || myCb.checked==true ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Shipping Phone is empty.\n"; 
  }
    
  //
  // Payment Information
  //
  
  // Card Number  
  myTxt = document.getElementById('payment_CCNumber');
  mySpan = document.getElementById('spayment_CCNumber');
  if ( myTxt.value.length==16 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Credit Card Number is empty.\n"; 
  }
  
  myTxt = document.getElementById('payment_CVC');
  mySpan = document.getElementById('spayment_CVC');
  if ( myTxt.value.length>0 && myTxt.value.length<=4 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Credit Card CVV2 is empty.\n"; 
  }
  
  myTxt = document.getElementById('payment_Name');
  mySpan = document.getElementById('spayment_Name');
  if ( myTxt.value.length>0 && myTxt.value.length<=50 ) { //Valid
    mySpan.innerHTML = ""; 
  } else { // Invalid
    mySpan.innerHTML = "*"; 
    Response +="Credit Card Name is empty.\n"; 
  }
  
	if ( Action=="Submit" && Response.length>0 )  {
		alert(Response);
		return false;
	} else {
		return true;
	}
  
}


