////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// field check functions
/////////////////////////////////////////////////////////////////////////////////
var errorcolor="#F3FD7F"; //this is the error hightlight color of fields
var normalcolor="#ffffff";  // this is the normal background of fields



function validateform(formname) {  
//	alert("entering form validation");
  	var alertMessage = "Please enter the following: \n\n";
	var isAlert = false;
	
    if(!validateNotEmpty (formname.email.value)){
    	alertMessage += "Topic \n";
    	formname.email.style.background=errorcolor
    	isAlert = true;	
    }
     if(!validateNotEmpty (formname.optionalText4.value)){
    	alertMessage += "Tell us about you! \n";
    	formname.optionalText4.style.background=errorcolor;
    	isAlert = true;	
    }
    // The following Validates Emails are in correct Syntax
    if(!validateNotEmpty (formname.optionalText2.value)){
    	alertMessage += "Email \n";
    	formname.optionalText2.style.background=errorcolor;
	   	isAlert = true;	
	}else{	
		if(!validateEmail(formname.optionalText2.value)){
	    	alertMessage += "Email: Improper syntax \n";
	    	formname.optionalText2.style.background=errorcolor;
		   	isAlert = true;	
	   }	
    }
	if(!validateNotEmpty (formname.firstName.value)){
    	alertMessage += "First name \n";
    	formname.firstName.style.background=errorcolor;
    	isAlert = true;	
    }
	if(!validateNotEmpty (formname.lastName.value)){
    	alertMessage += "Last name \n";
    	formname.lastName.style.background=errorcolor;
    	isAlert = true;	
    }
	if(!validateNotEmpty (formname.city.value)){
    	alertMessage += "City \n";
    	formname.city.style.background=errorcolor;
    	isAlert = true;	
    }
	if(!validateNotEmpty (formname.state.value)){
    	alertMessage += "State \n";
    	formname.state.style.background=errorcolor;
    	isAlert = true;	
    }

    if(!validateNotEmpty (formname.optionalTextarea1.value)){
    	alertMessage += "Your message \n";
    	formname.optionalTextarea1.style.background=errorcolor;
    	isAlert = true;	
    }else {
		var MAX_DESC_CHAR = 10000;
		var num_charaters = formname.optionalTextarea1.value.length;
		if(num_charaters > MAX_DESC_CHAR) {
			alertMessage += "Oops! Your feedback is too long. The total number of characters including space in your feedback is " + num_charaters + ". The maximum we are able to accept is " + MAX_DESC_CHAR + ". \n";
	       	isAlert = true;		
		}	
	}
	if(isAlert) {
		alert(alertMessage);
		
    } else { 
		removeCarriageReturn(formname.optionalTextarea1);
		writeHiddenInputValues (formname);
//		alert (formname.optionalTextarea1.value.length);
//		alert("before saving: "+document.cookie)
		saveFormFields();
//		alert("after saving: "+document.cookie)
		formname.submit();
    }
}
/////////////////////////////////////////////////////////////////////////////////
//	removeCarriageReturn
//	Replace all the carriage returns with space
/////////////////////////////////////////////////////////////////////////////////
function removeCarriageReturn(textarea) {
	//textarea is reference to that object, replaceWith is string that will replace the encoded return
	textarea.value = escape(textarea.value); //encode textarea string's carriage returns
	var replaceWith = "<BR/>";
	
	for(i=0; i<textarea.value.length; i++){
	//loop through string, replacing carriage return encoding with spaces
		if(textarea.value.indexOf("%0D%0A") > -1){
		//Windows encodes returns as \r\n hex
		textarea.value=textarea.value.replace("%0D%0A",replaceWith);
		}
		else if(textarea.value.indexOf("%0A") > -1){
		//Unix encodes returns as \n hex
		textarea.value=textarea.value.replace("%0A",replaceWith);
		}
		else if(textarea.value.indexOf("%0D") > -1){
		//Macintosh encodes returns as \r hex
		textarea.value=textarea.value.replace("%0D",replaceWith);
		}
	}
	textarea.value=unescape(textarea.value) //unescape all other encoded characters
	return null;
}

/////////////////////////////////////////////////////////////////////////////////
// Writes hidden fields to form after finding html text of Topic selection idex
/////////////////////////////////////////////////////////////////////////////////
function writeHiddenInputValues (formname) {
	var a = getTopicName (formname.email);
	var b = formname.firstName.value + ' ' + formname.lastName.value;
	var c = formname.optionalText2.value;
	document.getElementById('topic').innerHTML = '<input type="hidden" name="optionalText3" value="'+ a +'" />';
	document.getElementById('subject').innerHTML = '<input type="hidden" name="subject" value="Feedback ['+ a +']" />';
	document.getElementById('fromName').innerHTML = '<input type="hidden" name="fromName" value="'+ b +'" />';
	document.getElementById('fromEmail').innerHTML = '<input type="hidden" name="fromEmail" value="'+ c +'" />';
}
/////////////////////////////////////////////////////////////////////////////////
// Gets html text of Topic selection idex
/////////////////////////////////////////////////////////////////////////////////
function getTopicName (formname) {
	var w = formname.selectedIndex;
	var topicName = formname.options[w].text;
	return topicName;
}

/////////////////////////////////////////////////////////////////////////////////
// Add form data to cookie
/////////////////////////////////////////////////////////////////////////////////

function saveFormFields() {

	var cookieString;
	cookieString = "firstName=" + document.ch1_form.firstName.value;
	cookieString += "&lastName=" + document.ch1_form.lastName.value;
	cookieString += "&email=" + document.ch1_form.optionalText2.value;
	setCookie("CH1FeedBack",cookieString,0);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// cookie functions
	var ch1Cookie = document.cookie;
	////////////////////////////
	// general cookie getting function for "ch1Cookie"
	function getCookie(name)
	{	var index = ch1Cookie.indexOf(name + "=");
		if (index == -1) return null;
		index = ch1Cookie.indexOf("=", index) + 1;
		var endstr = ch1Cookie.indexOf(";", index);
		if (endstr == -1) endstr = ch1Cookie.length;
		return unescape(ch1Cookie.substring(index, endstr));
	}
	////////////////////////////
	// general cookie setting function
	function setCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+escape (value)+expires+"; path=/";
	}
	////////////////////////////
	// get CH1VideoReports cookie and return values
	function getUserCookie(toSplit, cookieName)
	{	var cookies = toSplit.split('&');
		var cookiePieces;
		var i = -1;
		while (cookies[++i])
		{	cookiePieces = cookies[i].split('=');
			if (cookiePieces[0].substring(0,1) == ' ')
				cookiePieces[0] = cookiePieces[0].substring(1, cookiePieces[0].length);
			if (cookiePieces[0] == cookieName)
				return ""+unescape(cookiePieces[1]);
		}
		return "";
	}
	////////////////////////////
	// set "CH1VideoReports" cookie to UserInfoArray
	var UserInfoArray = getCookie("CH1FeedBack");
	////////////////////////////
	// returns any element of UserInfoArray passed through myVal
	function showDATA(myVal)
	{	if(UserInfoArray != null)	return getUserCookie(UserInfoArray, myVal);
		else	return "";
	}

function eraseCookie(name) {
	setCookie(name,"",-1);
}
// end cookie functions
////////////////////////////////////////////////////////////////////////////////////////////////////////////////