// getXMLHttpRequest object
function getXMLHttpRequestObject(){
	var xmlobj;
    // check for existing requests
    if(xmlobj!=null&&xmlobj.readyState!=0&&xmlobj.readyState!=4){
        xmlobj.abort();
    }
    try{
        // instantiate object for Mozilla, Nestcape, etc.
        xmlobj=new XMLHttpRequest();
    }
    catch(e){
        try{
            // instantiate object for Internet Explorer
            xmlobj=new ActiveXObject('Microsoft.XMLHTTP');
        }
        catch(e){
            // Ajax is not supported by the browser
            xmlobj=null;
            return false;
        }
    }
	return xmlobj;
}
// request 'sendmail.php' file - sends email message
function sendEmailRequest(){
	var message=document.getElementsByTagName('form')[0].elements['message'].value;
	if(message.length>1000){message=message.substring(0,1000)};
	// open socket connection
	emailXMLHttpObj.open('POST','sendmail.php',true);
	// set form http header
	emailXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
	// get form values and send http request
   	emailXMLHttpObj.send(getFormValues(document.getElementsByTagName('form')[0]));
	emailXMLHttpObj.onreadystatechange=emailStatusChecker;
}
// check status of email requester object
function emailStatusChecker(){
    // if mail request is completed
    if(emailXMLHttpObj.readyState==4){
        if(emailXMLHttpObj.status==200){
			// if status == 200 display server response
			displayServerResponse();
        }
        else{
            alert('Failed to get response :'+emailXMLHttpObj.statusText);
        }
    }
}
// display server response
function displayServerResponse(){
	var status=document.getElementsByTagName('h1')[0].firstChild;
	if(!status){return};
	// display messages by <h1> header
	status.data=emailXMLHttpObj.responseText;	
}
// get form values
function getFormValues(fobj){
    var str='';
    for(var i=0;i< fobj.elements.length;i++){
        str+=fobj.elements[i].name+'='+ escape(fobj.elements[i].value)+'&';
    }
    str=str.substr(0,(str.length-1));
    return str;
}	

// initialize email client 
function intitializeEmailClient(){
	if(document.getElementById&&document.getElementsByTagName&&document.createElement){
		var sendbtn=document.getElementsByTagName('form')[0].elements['send'];
		if(!sendbtn){return};
		// assign 'onlick' event handler to 'send' button
		sendbtn.onclick=function(){
			// display message
			document.getElementsByTagName('h1')[0].firstChild.data='Adding you to list...';
			//document.getElementById('loading').style.display = 'inline';
			document.getElementById('form').style.display = 'none';
			document.getElementById('thanks').style.display = 'inline';
			// send email request
			sendEmailRequest();	
		}
	}
}