/** =================================================================================
 * Module:  FCD_BO_Validation.js
 * Author:  Eric M. Carlson
 * Date:    12/09/2008
 *=================================================================================
 *   Description:
 * EFD Quote to Sale Order application Validation and utilities javascript file.
 *=================================================================================
 * 	 Maintenance Log (most recent first):
 *	Eric Carlson	07/18/2009		Project-Ph: 108382-012 		CR000089
 *		Changes to allow the city and state to be passed back to the server
 *		when the form is submitted because by default, they were set to disabled.
 *	Eric Carlson		02/23/2009		CR000073
 *		Fixing what I am pretty sure is a syntax error in an unused function.
 *
 *================================================================================= */
	
	//Create a boolean variable to check for a valid Internet Explorer instance.
	var xmlhttp = false;
	var carrierFocus = false;
	
	//Check if we are using IE.
	try {
		//If the Javascript version is greater than 5.
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		//If not, then use the older active x object.
		try {
			//If we are using Internet Explorer.
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			//Else we must be using a non-IE browser.
			xmlhttp = false;
		}
	}
	
	//If we are using a non-IE browser, create a javascript instance of the object.
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		xmlhttp = new XMLHttpRequest();
	}

		var browserType;
		
		if (document.layers) {browserType = "nn4"}
		if (document.all) {browserType = "ie"}
		if (window.navigator.userAgent.toLowerCase().match("gecko")) {
		   browserType= "gecko"
		}
		
		function padSerial() {
			var elementObj = document.getElementById("EAB0TA");
			elementObj.value = padleft(elementObj.value, "0", 10);
		}

        function padleft(val, ch, num) {
            var re = new RegExp(".{" + num + "}$");
            var pad = "";
            if (!ch) ch = " ";
            do  {
                pad += ch;
            }while(pad.length < num);
            return re.exec(pad + val);
        }

		//******************************************************************
		//
		//****************************************************************** 
		  function setShipToNum(OEWCAS, ARMNUM){
		  	window.location("FCD_BO_RMA_ChooseShipto.php?OEWCAS=" + OEWCAS + "&ARMNUM=" + ARMNUM);
		  }
		  
		  
	/* ========================================================
	 *
	 * ======================================================== */
	function domesticSelected(){
	
		var ARMZIP = document.getElementById("ARMZIP");
		var ARMZPP = document.getElementById("ARMZPP");
		var ARMAD3 = document.getElementById("ARMAD3");
		var ARMAD3_State = document.getElementById("ARMAD3_State");
		ARMZIP.disabled = false;
		ARMZIP.disabled = false;
		ARMAD3.disabled = true; 
		ARMAD3_State.disabled = true;
		
		
	}	
	
	/* ========================================================
	 *
	 * ======================================================== */
	function foreignSelected(){
		var ARMZIP = document.getElementById("ARMZIP");
		var ARMZPP = document.getElementById("ARMZPP");
		var ARMAD3 = document.getElementById("ARMAD3");
		var ARMAD3_State = document.getElementById("ARMAD3_State");

		ARMZIP.value = "";
		ARMZPP.value = "";
		ARMZIP.disabled = true; 
		ARMZPP.disabled = true;
		ARMAD3.disabled = false; 
		ARMAD3_State.disabled = false;
	}
	
	
	/* ========================================================
	 *
	 * ======================================================== */
	function setCityStateFromPostalCode(citystate) {
		var city = "";
		var state = "";

		splitResult = citystate.split("|");
		city = splitResult[0];
		state = splitResult[1];
		
	  	var ARMAD3 = document.getElementById("ARMAD3");
	  	var ARMAD3_State = document.getElementById("ARMAD3_State");  	
	  	
	  	ARMAD3.value = city;
	  	ARMAD3_State.value = state;
	  	
	  }
	  
	/* ========================================================
	 *
	 * ======================================================== */
	function getCitiesForZip(postalCode, serverPage, objID) {
		var queryString = "";
		
		queryString = "ARPZIP=" + postalCode;
		makerequest(serverPage, queryString, objID);

		document.getElementById(objID).focus();
	}
	
		//******************************************************************
		//
		//****************************************************************** 
		  function isNumericDate(e){
		  	
				var keynum
				var keychar
				var returnVal 
	

				if (window.event) // IE
				{
					keynum = e.keyCode;
				}
				else if(e.which) // Netscape/Firefox/Opera
				{
					keynum = e.which;
				}
		  		var keychar = String.fromCharCode(keynum);
		  	
				var charCode = (e.which) ? e.which : event.keyCode
				if (charCode > 31 && (charCode < 48 || charCode > 57)) {
					if ("/"==keychar) {
						return true;
					} else {
						return false;
					}
				} else  {
					return true;
				}
				

         
		  }
		  // ends function isNumericDate
		  

		//******************************************************************
		//
		//****************************************************************** 
		  function isNumeric(e){
		  	
				var keynum
				var keychar
				var returnVal 
	

				if (window.event) // IE
				{
					keynum = e.keyCode;
				}
				else if(e.which) // Netscape/Firefox/Opera
				{
					keynum = e.which;
				}
		  		var keychar = String.fromCharCode(keynum);
		  	
				var charCode = (e.which) ? e.which : event.keyCode
				if (charCode > 31 && (charCode < 48 || charCode > 57)) {
					return false;
				} else  {
					return true;
				}
		}
		  // ends function isNumericDate


		//******************************************************************
		//
		//******************************************************************
		function checkdate(input){

			var validformat=/^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
			var returnval=false;

			if (!validformat.test(input.value)) {
			// alert("Invalid Date Format. Please correct and submit again.")

				return false;
				
			} else { //Detailed check for valid date ranges

				var monthfield=input.value.split("/")[0]
				var dayfield=input.value.split("/")[1]
				var yearfield=input.value.split("/")[2]
				var dayobj = new Date(yearfield, monthfield-1, dayfield)
				if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield)) {
					alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
				} else {
					returnval=true
				}
				
				if (returnval==false) {
					return returnval
				}
			}
		}
		  
		//******************************************************************
		//
		//******************************************************************
		function validateExtWarForm() {
		
			var returnvalue=true;
			
			var elementObj = document.getElementById("EAITNB");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}

			var elementObj = document.getElementById("EAB0TA");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
				elementObj.value = padleft(elementObj.value, "0", 10);
//					000 0000 514
			}
			var elementObj = document.getElementById("EAGTTA");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			
			
			var elementObj = document.getElementById("EAG0TA");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}


			var elementObj = document.getElementById("EAGUTA");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			var elementObj = document.getElementById("EAEADZ");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				//alert(document.extWar.EAEADZ.value);
				var result = checkdate(elementObj);
				if (false==result) {
					returnvalue=false;
					elementObj.style.borderColor="green";
				} else {
					elementObj.style.borderColor="";
				}
				
			}
			var elementObj = document.getElementById("EAGWTA");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			var elementObj = document.getElementById("EAGVTA");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			var elementObj = document.getElementById("EAB0TA");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			var elementObj = document.getElementById("EAGYTA");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			var elementObj = document.getElementById("EAG3CD");			
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				strLen = elementObj.value.length;
				if (strLen!=2) {
					elementObj.style.borderColor="green";
					returnvalue=false;
				} else {
					elementObj.style.borderColor="";
				}
			}			
			var elementObj = document.getElementById("EAZ9NB");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			var elementObj = document.getElementById("EAZ8NB");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			var elementObj = document.getElementById("agree");
			if (0==elementObj.checked) {
				elementObj.style.borderColor="green";
				elementDivObj = document.getElementById("error");
				elementDivObj.innerHTML = "<center>Please correct the items highlighted below.  You must agree to terms and conditions.</center>";
				returnvalue=false;
			} else {
				elementObj.style.borderColor="";
			}
			
			if (returnvalue==false) {
				var elementObj = document.getElementById("error");
				elementObj.style.visibility = "visible";
			} else {
				elementObj.style.borderColor="";
			}
			return returnvalue;
		}




	/* ========================================================
	 *
	 * ======================================================== */	
	function setFocusInitialEntryField(fieldname) {
	
		var field = document.getElementById(fieldname);
		field.focus();
		
	}
	
	
	
	/* ========================================================
	 *
	 * ======================================================== */
	function checkDateNotPast(input){

		var validformat=/^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
		var returnval=true;
		
		
		var monthfield=input.value.split("/")[0]
		var dayfield=input.value.split("/")[1]
		var yearfield=input.value.split("/")[2]
		var inputDayObj = new Date(yearfield, monthfield-1, dayfield)
		var days = 0;
		var difference = 0;
		
		today = new Date();
		
		difference = inputDayObj - today;
		
		days = Math.round(difference/(1000*60*60*24));
		if (days < -1) {
			returnval=false;
		} else {
			returnval=true;
		}
		return returnval;
	}
	
	/* ========================================================
	 *
	 * ======================================================== */
	function checkdate(input){

		var validformat=/^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
		var returnval=false;

		if (!validformat.test(input.value)) {
		// alert("Invalid Date Format. Please correct and submit again.")

			return false;
			
		} else { //Detailed check for valid date ranges

			var monthfield=input.value.split("/")[0]
			var dayfield=input.value.split("/")[1]
			var yearfield=input.value.split("/")[2]
			var dayobj = new Date(yearfield, monthfield-1, dayfield)
			if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield)) {
				alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
			} else {
				returnval=true
			}
			if (returnval==false) {
				return returnval
			}
		}
	}

	/* ========================================================
	 *
	 * ======================================================== */
	  function validateShipToNew() {
		  
		var ARMAD3 = document.getElementById('ARMAD3');
		var ARMAD3_State = document.getElementById('ARMAD3_State');
		
		returnVal = true;
	  	if (false == validateTextFieldNotBlank("ARMNAM")) {
			returnVal = false;
		}
		
		var armcct = "";
		for(i=0; i<document.ShipToNew.elements.length; i++){
			// alert("EMCTEST " + i + " " + document.ShipToNew.elements[i].name);	   
			if (document.ShipToNew.elements[i].name == "ARMCCT") {
				if (document.ShipToNew.elements[i].checked == 1) {
					armcct = document.ShipToNew.elements[i].value;
					
					if (armcct == "A") {
					  	if (false == validateTextFieldNotBlank("ARMAD3_State")) {
							returnVal = false;
						}
					  	if (false == validateTextFieldNotBlank("ARMZIP")) {
							returnVal = false;
						}
					}
					
					if (armcct == "A" || armcct == "B") {
						if (false == validateTextFieldNotBlank("ARMAD1")) {
							returnVal = false;
						}
						 	if (false == validateTextFieldNotBlank("ARMAD3")) {
							returnVal = false;
						}
						
					  	if (false == validateTextFieldNotBlank("ARMPHN")) {
							returnVal = false;
						}
					  	if (false == validateTextFieldNotBlank("ARMCCN")) {
							returnVal = false;
						}	
					}
					
					if (armcct == "C") {
						
						var ARMPHN = document.getElementById("ARMPHN");
						var ARMCCN = document.getElementById("ARMCCN");
						if (""==ARMCCN.value){
							ARMCCN.value = "";
						}
						if (""==ARMPHN.value){
							ARMPHN.value = "0";
						}

					}
					
				}
			}
		}
		ARMAD3.disabled = false;
		ARMAD3_State.disabled = false;
		return returnVal;
	  }

	 
 		//******************************************************************
		// Validate the RMA Entry / Edit Form.
		//******************************************************************
		function warClicked() {
			alert("This return type is subject to internal approvals.\nPlease note that each return will be evaluated on a case by case basis.\nProof of date of purchase is required in all warranty cases.");
		}
	 
		//******************************************************************
		// Validate the RMA Entry / Edit Form.
		//******************************************************************
		function valEditRMA() {
		
			var returnvalue=true;
			
			var elementObj = document.getElementById("OEWLCU");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				elementDivObj = document.getElementById("error");
				elementDivObj.innerHTML = "<center><STRONG>Error</STRONG><BR>Please specify the last chemical used in the product being returned.  If not applicable, then write in \"N/A\" or \"none\".</center>";
				returnvalue=false;
			}


			var elementObj = document.getElementById("OEWCSN");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				elementDivObj = document.getElementById("error");
				elementDivObj.innerHTML = "<center><STRONG>Error</STRONG><BR>Please specify the contact for this return.</center>";
				returnvalue=false;
			}

			var elementObj = document.getElementById("OEWCPH");
			if (""==elementObj.value || "0"==elementObj.value) {
				elementObj.style.borderColor="green";
				elementDivObj = document.getElementById("error");
				elementDivObj.innerHTML = "<center><STRONG>Error</STRONG><BR>Please specify a contact phone number for this return.</center>";
				returnvalue=false;
			}


			var elementObj = document.getElementById("OEWPON");
			if (""==elementObj.value) {
				elementObj.style.borderColor="green";
				elementDivObj = document.getElementById("error");
				elementDivObj.innerHTML = "<center><STRONG>Error</STRONG><BR>Please specify a purchase order for this return.   If not applicable, then write in \"N/A\" or \"none\".</center>";
				returnvalue=false;
			}
			
			var checkbox_choices=0;
			var selectedvalue="";

			for (counter = 0; counter < document.RMA_Edit.OEWTYP.length; counter++) {
				if (document.RMA_Edit.OEWTYP[counter].checked) {
					checkbox_choices = checkbox_choices + 1;
					selectedvalue = document.RMA_Edit.OEWTYP[counter].value
				}
			}	
				
			if (0 == checkbox_choices) {
				elementDivObj = document.getElementById("error");
				elementDivObj.innerHTML = "<center><STRONG>Error: </STRONG>Please specify a return type.</center>";
				elementObj.style.visibility = "visible";
				returnvalue=false;
			}

			var OEWLISN = document.getElementById("OEWLISN");
			var OEWLITM = document.getElementById("OEWLITM");
			var OEWLFDS = document.getElementById("OEWLFDS");
			
			if ((OEWLISN.value != "") ||
				(OEWLITM.value != "") || 
				(OEWLFDS.value != "")) {

				var checkbox_choices=0;
				var selectedvalue="";
				counter = 0;
				for (counter = 0; counter < document.RMA_Edit.OEWLEST.length; counter++) {
					if (document.RMA_Edit.OEWLEST[counter].checked) {
						checkbox_choices = checkbox_choices + 1;
						selectedvalue = document.RMA_Edit.OEWLEST[counter].value
					}
				}		
				if (0 == checkbox_choices) {
					elementDivObj = document.getElementById("OEWLFDS_err");
					elementDivObj.innerHTML = "<center><STRONG>Error</STRONG><BR>Please specify a whether you would like an estimate on this item. </center>";
					elementDivObj.style.visibility = "visible";
					returnvalue=false;

				}
			}
			
			
			
			if ((OEWLISN.value != "") ||
				(OEWLITM.value != "") ) {

				if (""==OEWLFDS.value) {
					OEWLFDS.style.borderColor="green";
					elementDivObj = document.getElementById("OEWLFDS_err");
					elementDivObj.innerHTML = "<center><STRONG>Error: </STRONG>Please specify a failure description for this item.</center>";
					returnvalue=false;
				}				
			}

			if (returnvalue==false) {
				var elementObj = document.getElementById("error");
				elementObj.style.visibility = "visible";
			} else {
				elementObj.style.borderColor="";
			}
			return returnvalue;
		}
		
	/* ========================================================
	 *
	 * ======================================================== */
	function validateTextFieldNotBlank(fieldName){
		var elementObj = document.getElementById(fieldName);
		if (""==elementObj.value) {
			returnvalue = false;
			elementObj.style.borderColor="green";
		} else {
			elementObj.style.borderColor="";
			returnvalue = true;
		}

		return returnvalue;
	}
	/* ========================================================
	 *
	 * ======================================================== */
	function makerequest(serverPage, queryString, objID) {

		serverPage = serverPage + "?" + queryString;
		var obj = document.getElementById(objID);

		xmlhttp.open("GET", serverPage);
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				// obj.innerHTML = "stuff.";
				obj.innerHTML = xmlhttp.responseText;
			}
		}
		xmlhttp.send(null);
	}