$(document).ready(function(){
	refactorForm(document.forms[0]);
});

function validateCustomerSupportForm(form) {		
		
		var errors = '';
		var email = form.elements['fromEmailAdd'];
		var queryType = form.queryType.options[form.queryType.selectedIndex];
		var name = form.elements['customerName'];
		var orderNumber = form.elements['orderNumber'];
		var manufacturer = form.manufacturer.options[form.manufacturer.selectedIndex];
		var device = form.deviceModel.options[form.deviceModel.selectedIndex];		
		var imei = form.elements['imei'];
		var message = form.elements['message'];
				
		if(queryType.value == 0) {
			errors += 'At first you have to select the Type of Query\n';
			form.queryType.focus();
		}
		else {		
			
			if(isEmpty(email)|| !(validateEmailAddress(email))) {
				errors += 'Enter a valid Email address\n';
			}			
			if(manufacturer.value == 0 && (queryType.value == 2 || queryType.value == 4)) {
				errors += 'Please select your device manufacturer\n';
			}			
			if(device.value == 0 && (queryType.value == 2 || queryType.value == 4)) {
				errors += 'Please select your device model\n';
			}			
			if(isEmpty(imei) && (queryType.value == 2)) {
				errors += 'Please enter IMEI number of your device\n';
			}									
			if(isEmpty(message)) {
				errors += 'Please enter the detail of your query\n';
			}
			
			if(message.value.length == 1500 || message.value.length > 1500) {
				errors += 'Please adjust the details of query in 1500 characters\n';
			}			
			if(specialCharCheck(orderNumber)) {
				errors += 'Please enter the valid Order Number\n';
			}
			else
			if(!alphabetCheck(orderNumber)){
				errors += 'Order Number can not contain alphabets';
			}			
			
		}		
		
		if(errors == '') {
			return true;
		}
		else {
			alert(errors);
			return false;
		}
	}	
	
	
	// This function will modify the support form according to the query type selected by the customer
	function refactorForm(form) {
	
		var queryType = form.queryType.options[form.queryType.selectedIndex];
		var manufacturer = document.getElementById('manufacturerMandatorySymbol');
		var device = document.getElementById('deviceMandatorySymbol');
		var imei = document.getElementById('imeiMandatorySymbol');
		
		// Hiding or Displaying Form/Help Text
		if(queryType.value == 1 || queryType.value == 2 || queryType.value == 3) {
			showElement(document.getElementById('helpDisplayText'));
			hideElement(document.getElementById('detailedSupportForm'));
		}
		else if(queryType.value == 4 || queryType.value == 5) {
			hideElement(document.getElementById('helpDisplayText'));
			showElement(document.getElementById('detailedSupportForm'));
		}
		
		// Refactoring Form Elements
		if(queryType.value == 1 || queryType.value == 3 || queryType.value == 5) {
			hideElement(manufacturer);
			hideElement(device);
			hideElement(imei);
		}
		else if(queryType.value == 2) {
			showElement(manufacturer);
			showElement(device);
			showElement(imei);			
		}
		else if(queryType.value == 4) {
			showElement(manufacturer);
			showElement(device);
			hideElement(imei);			
		}
	}
	
	// This function displays the passed html element
	function showElement(element) {
		element.style.display = 'inline';
	}
	
	// This function hides the passed html element
	function hideElement(element) {
		element.style.display = 'none';
	}
	
	// This function checks the value of the passed element, and returns true if it is not null or empty
	function isEmpty(mytext) {
		
		var re = /^\s{1,}$/g; //match any white space including space, tab, form-feed, etc. 
		if ((mytext.value.length==0)  || ((mytext.value.search(re)) > -1)) {
			return true;
		}
		else {
			return false;
		}
	}
	
	function specialCharCheck(myText) {
		
		var iChars = " !@#$%^&*()+=-[]\\\';,./{}|\":<>?~_";		
	 	for (var i = 0; i < myText.value.length; i++) {
	 	
			if (iChars.indexOf(myText.value.charAt(i)) != -1) {
				return true;
			}
		}
		return false;
  	 }
  	
  	function alphabetCheck(myText) {
		
		var numb = '0123456789';
		for (i=0; i<myText.value.length; i++) {
		
			if (numb.indexOf(myText.value.charAt(i),0) == -1) return false;
		}
		return true;
	}  
	
	// This function validates an email address
	function validateEmailAddress(curObj) {
	    var re;
	    re = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	    return matchRegExp(curObj,re);
	}
	
	// This function matches a regular expression
	function matchRegExp(curObj,re)	{
	    var ok = true;
	    if( curObj.value.match(re) == null ) {
	        ok = false;	        
	    }
	    return ok;
	}
