/*
	Contact.js 
	Version 1.00
	2009 PhpMyCoder
	-----------
	JavaScript for contact page
	for AJAX components, validation,
	and character count functions
	
	*********************************
	*************NOTICE**************
	 THIS SCRIPT IS FOR THE SPECIFIC
	USE ON THE PHPMYCODER.NET WEBSITE
	AND CAN NOT BE USED ANYWHERE ELSE
	THIS FILE MAY NOT BE DISTRIBUTED
	*********************************
	*********************************
*/

function createAJAX()
{
	var ajax;
	try {ajax = new XMLHttpRequest();}
	catch (e)
	{
  		try {ajax = new ActiveXObject("Msxml2.XMLHTTP");}
  		catch (e)
   		{
    		try {ajax = new ActiveXObject("Microsoft.XMLHTTP");}
    		catch (e) {return(false);}
    	}
  	}
	return(ajax);	
}

function onSendMessage(form)
{
	var ajax;
	//Show the AJAX loading Element
	document.getElementById('loading-text').innerHTML = "Validating...";
	document.getElementById('loading').style.display = "block";
	//Hide the error info box
	document.getElementById('info').style.display = "none";
	//Within the form
	with(form)
	{
		//If the name is empty trigger error
		if(name.value==""||name.value==null) 
		{
			triggerFieldError("Please enter your name");
			name.focus();
			return(false);
		}
		//If the email is empty trigger error
		if(email.value==""||email.value==null)
		{
			triggerFieldError("Please enter a valid email");
			email.focus();
			return(false);
		}
		//If email is invlaid trigger error
		if(!isValidEmail(email))
		{
			triggerFieldError("Please enter a valid email");
			email.focus();
			return(false);
		}
		//If subject is empty trigger error
		if(subject.value==""||subject.value==null)
		{
			triggerFieldError("Please enter a subject");
			subject.focus();
			return(false);
		}
		//If message is empty trigger error
		if(message.value==""||message.value==null)
		{
			triggerFieldError("Please enter a message with 400 characters or less");
			subject.focus();
			return(false);
		}
		
		//Now change status to sending email
		document.getElementById('loading-text').innerHTML = "Sending Message...";
		
		//And init AJAX (If on browser)
		ajax = createAJAX();
		//if AJAX is disbaled submit form normal way
		if(ajax==false) return(true);
		else
		{
			//Else submit via AJAX
			
			//First set the onstatechange function
			ajax.onreadystatechange=function()
			{
				if(ajax.readyState==4)
				{
					//Show the response (using trigger error trick)
					triggerFieldError(ajax.responseText);
					//And lets clear fields
					if(ajax.responseText=="Your message was successfully sent")
					{
						document.getElementById('name').value = "";
						document.getElementById('email').value = "";
						document.getElementById('subject').value = "";
						document.getElementById('message').value = "";
						//And clear count because of the clearing of message
						countChars(document.getElementById('message'));
					}
				}
			}
			//And open connection
			ajax.open("POST", "/phpmycoder/contact/?sid="+Math.random(), true);
			//And get all the params
			var parameters = "ajax=1&name="+encodeURI(form.name.value)+"&email="+encodeURI(form.email.value)+"&subject="+encodeURI(form.subject.value)+"&message="+encodeURI(form.message.value);
			//Set the headers
			ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			ajax.setRequestHeader("Content-length", parameters.length);
			ajax.setRequestHeader("Connection", "close");
			//Finally send the request
			ajax.send(parameters);
			//And terminate the function so form doesn't submit normal way
			return(false);
		}
	}
}

function isValidEmail(field)
{
	with (field)
	{
		var apos = value.indexOf("@");
		if (apos<1||(value.lastIndexOf("."))-apos<2) return(false);
		else return(true);
	}
}

function triggerFieldError(text)
{
	//Update info box
	document.getElementById('info').innerHTML = text;
	//Show info box
	document.getElementById('info').style.display = "block";
	//Hide loading AJAX element
	document.getElementById('loading').style.display = "none";
}

function countChars(textarea)
{
	//If there are too many characters, use substr to trim to 400 chars or less
	if(textarea.value.length>400) textarea.value = textarea.value.substring(0, 400);
	//Update the characters remaining notice
	document.getElementById('charsLeft').innerHTML = (400-textarea.value.length)+" characters left";
	//Colorize the message
	if(400-textarea.value.length>10) document.getElementById('charsLeft').style.color = "#CCC";
	else document.getElementById('charsLeft').style.color = "#FF0000";
}

function displayCharCount()
{
	document.write("<div id='charsLeft'>400 characters left</div>");
}