// JavaScript Document

//FUNCTION TO CHECK THE LOGIN FORM
function checkLoginForm(){
	if(document.getElementById('login_username').value == ""){
		alert("Please enter the username");
		return false;
	}
	if(document.getElementById('login_pwd').value == ""){
		alert("Please enter the password");
		return false;
	}
}

//FUNCTION TO CHECK THE ADD PRODUCT FORM
function checkAddProductForm(){
	if(document.getElementById('product_name').value == ""){
		alert("Please enter the product name");
		return false;
	}
	if(document.getElementById('product_description').value == ""){
		alert("Please enter the product description");
		return false;
	}
}

//FUNCTION TO CHECK IF VALID EMAIL ADDRESS FORMAT
function check_email_address(email) {
	var atSign = new RegExp("^[^@]{1,64}@[^@]{1,255}$");
	var leftStr = new RegExp("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$");
	var isIP = new RegExp("^\[?[0-9\.]+\]?$");
	var isDomain = new RegExp("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$");
  // First, we check that there's one @ symbol, and that the lengths are right
  if (!email.match(atSign)) {
    // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
	alert("Please enter a valid email address");
    return false;
  }
  // Split it into sections to make life easier
  var email_array = email.split("@");
  var local_array = email_array[0].split(".");
  for (var i = 0; i < local_array.length; i++) {
     if (!local_array[i].match(leftStr)) {
		 alert("Please enter a valid email address");
      return false;
    }
  }  
  if (!email_array[1].match(isIP)) { // Check if domain is IP. If not, it should be valid domain name
    var domain_array = email_array[1].split(".");
    if (domain_array.length < 2) {
		alert("Please enter a valid email address");
        return false; // Not enough parts to domain
    }
    for (var i = 0; i < domain_array.length; i++) {
      if (!domain_array[i].match(isDomain)) {
		  alert("Please enter a valid email address");
        return false;
      }
    }
  }
  return true;
}

//FUNCTION TO CHECK ORDER FORM
function checkOrderForm(){
	var isNum = new RegExp("^[0-9]+$");
	/*var pArray = new Array();*/
	var my_str = document.getElementById('pList').value;
	var pArray = my_str.split(",");
	var totProducts = 0;
	if(document.getElementById('customer_fname').value == ""){
		alert("Please enter your first name");
		return false;
	}
	if(document.getElementById('customer_sname').value == ""){
		alert("Please enter your last name");
		return false;
	}
	if(document.getElementById('customer_address_line1').value == ""){
		alert("Please enter the first line of your address");
		return false;
	}
	if(document.getElementById('customer_town').value == ""){
		alert("Please enter the town name");
		return false;
	}
	if(document.getElementById('customer_postcode').value == ""){
		alert("Please enter the postcode");
		return false;
	}
	if(!document.getElementById('customer_telephone').value.match(isNum) && document.getElementById('customer_telephone').value != ""){
		alert("Please enter a valid landline number");
		return false;
	}
	if(!document.getElementById('customer_mobile').value.match(isNum) && document.getElementById('customer_mobile').value != ""){
		alert("Please enter a valid mobile number");
		return false;
	}
	if(!document.getElementById('customer_fax').value.match(isNum) && document.getElementById('customer_fax').value != ""){
		alert("Please enter a valid fax number");
		return false;
	}
	if(document.getElementById('customer_telephone').value == "" && document.getElementById('customer_mobile').value == ""){
		alert("Please enter at least a landline or a mobile number");
		return false;
	}
	if(document.getElementById('customer_email').value == ""){
		alert("Please enter a valid email address");
		return false;
	}
	if(!check_email_address(document.getElementById('customer_email').value)){
		return false;
	}else{
		//do nothing
	}
	if(document.getElementById('customer_pwd').value == ""){
		alert("Please select a password.");
		return false;
	}
	if(document.getElementById('customer_pwd').value != "" && document.getElementById('customer_pwd').value != document.getElementById('customer_pwd2').value){
		alert("The passwords entered in the fields do not match.");
		return false;
	}
	//check the products
	for(var i=0; i<pArray.length; i++){
		if(document.getElementById('sel_product_'+pArray[i]).checked){
			if(!document.getElementById('quantity_'+pArray[i]).value.match(isNum) || document.getElementById('quantity_'+pArray[i]).value < 500){
				alert("Please make sure to enter a valid weight in grams for the "+document.getElementById('product_'+pArray[i]).value);
				return false;
			}else{
				totProducts = totProducts +1
			}
		}
	}
	if(totProducts == 0){
		alert("Please select at least a product to order");
		return false;
	}
}

//FUNCTION TO ENABLE/DISABLE WIGHT TEXTFIELD OF THE RELATIVE PRODUCT
function selectProductBoxes(prodID){
	if(document.getElementById('sel_product_'+prodID).checked){
		document.getElementById('quantity_'+prodID).disabled = false;
		document.getElementById('quantity_'+prodID).value = "";
		document.getElementById('quantity_'+prodID).focus();
	}else{
		document.getElementById('quantity_'+prodID).value = 0;
		document.getElementById('quantity_'+prodID).disabled = true	
	}
}

//FUNCTION TO SKIP LOGIN FOR ORDERS AND REDIRECT TO ORDER PAGE
function skipToOrder(){
	document.location = "../order_online.php";
}

//FUNCTION TO CALL THE PAGE TO PROCESS THE CHANGE OF STATUS IN AN ORDER
function changeOrderStatus(theStatus, orderID, theCounter){
	document.location = "../process_change_order_status.php?theStatus="+theStatus+"&orderID="+orderID+"&theCounter="+theCounter;	
}

//FUNCTION TO CALL THE PAGE TO PROCESS THE CHANGE OF STATUS IN AN ENQUIRY
function changeEnquiryStatus(theStatus, enquiryID, theCounter){
	document.location = "../process_change_enquiry_status.php?theStatus="+theStatus+"&enquiryID="+enquiryID+"&theCounter="+theCounter;	
}

//FUNCTION TO CHECK THE FORM TO MODIFY CUSTOMER PROFILE
function checkModifyProfileForm(){
	var isNum = new RegExp("^[0-9]+$");
	if(document.getElementById('customer_fname').value == ""){
		alert("Please enter your first name");
		return false;
	}
	if(document.getElementById('customer_sname').value == ""){
		alert("Please enter your last name");
		return false;
	}
	if(document.getElementById('customer_address_line1').value == ""){
		alert("Please enter the first line of your address");
		return false;
	}
	if(document.getElementById('customer_town').value == ""){
		alert("Please enter the town name");
		return false;
	}
	if(document.getElementById('customer_postcode').value == ""){
		alert("Please enter the postcode");
		return false;
	}
	if(!document.getElementById('customer_telephone').value.match(isNum) && document.getElementById('customer_telephone').value != ""){
		alert("Please enter a valid landline number");
		return false;
	}
	if(!document.getElementById('customer_mobile').value.match(isNum) && document.getElementById('customer_mobile').value != ""){
		alert("Please enter a valid mobile number");
		return false;
	}
	if(!document.getElementById('customer_fax').value.match(isNum) && document.getElementById('customer_fax').value != ""){
		alert("Please enter a valid fax number");
		return false;
	}
	if(document.getElementById('customer_telephone').value == "" && document.getElementById('customer_mobile').value == ""){
		alert("Please enter at least a landline or a mobile number");
		return false;
	}
	if(document.getElementById('customer_email').value == ""){
		alert("Please enter a valid email address");
		return false;
	}
	if(!check_email_address(document.getElementById('customer_email').value)){
		return false;
	}else{
		//do nothing
	}
	if(document.getElementById('customer_pwd').value == ""){
		alert("Please select a password.");
		return false;
	}
	if(document.getElementById('customer_pwd').value != "" && document.getElementById('customer_pwd').value != document.getElementById('customer_pwd2').value){
		alert("The passwords entered in the fields do not match.");
		return false;
	}
}

//FUNCTION TO CHECK THE UPDATE YOUR PROFILE FORM AND THE ADD NEW ADMINISTRATOR FORM
function checkModifyYourProfileForm(){
	if(document.getElementById('login_fname').value == ""){
		alert("Please enter your first name");
		return false;
	}
	if(document.getElementById('login_sname').value == ""){
		alert("Please enter your last name");
		return false;
	}
	if(document.getElementById('login_username').value == ""){
		alert("Please enter a username");
		return false;
	}
	if(document.getElementById('login_role').value == ""){
		alert("Please enter your role");
		return false;
	}
	if(document.getElementById('login_email').value == ""){
		alert("Please enter a valid email address");
		return false;
	}
	if(!check_email_address(document.getElementById('login_email').value)){
		return false;
	}else{
		//do nothing
	}
	if(document.getElementById('login_pwd').value == ""){
		alert("Please select a password.");
		return false;
	}
	if(document.getElementById('login_pwd').value != "" && document.getElementById('login_pwd').value != document.getElementById('login_pwd2').value){
		alert("The passwords entered in the fields do not match.");
		return false;
	}
}

//FUNCTION TO CHECK THE SEND ENQUIRY FORM
function checkSendEnquiryForm(){
	var isNum = new RegExp("^[0-9]+$");
	if(!document.getElementById('enq_telephone').value.match(isNum) && document.getElementById('enq_telephone').value != ""){
		alert("Please enter a valid landline number");
		return false;
	}
	if(!document.getElementById('enq_mobile').value.match(isNum) && document.getElementById('enq_mobile').value != ""){
		alert("Please enter a valid mobile number");
		return false;
	}
	if(document.getElementById('enq_telephone').value == "" && document.getElementById('enq_mobile').value == ""){
		alert("Please enter at least a landline or a mobile number");
		return false;
	}
	if(document.getElementById('enq_email').value == ""){
		alert("Please enter a valid email address");
		return false;
	}
	if(!check_email_address(document.getElementById('enq_email').value)){
		return false;
	}else{
		//do nothing
	}
}

//FUNCTION TO CHEK THE FORM THAT ADDS A NEW DISTRIBUTOR IN THE DATABASE
function checkAddDistributorForm(){
	
	if(document.getElementById('distributor_name').value == ""){
		alert("Please enter a the name of the distributor as you want it to display on the page");
		return false;
	}
}
