// 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;
}

function sendEmailRequest() {
    // open socket connection
    feedbackXMLHttpObj.open('POST','/server/processor.php',true);
    // set form http header
    feedbackXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
    // get form values and send http request
    var var_str = getFormValues(document.getElementById('f_tellafriend'))+"&do=tellAFriend";

    document.getElementById('tell_submit').disabled = true;

    feedbackXMLHttpObj.send(var_str);
    feedbackXMLHttpObj.onreadystatechange=feedbackStatusChecker;
}

function addFeedbackRequest() {
    // open socket connection
    feedbackXMLHttpObj.open('POST','/server/processor.php',true);
    // set form http header
    feedbackXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
    // get form values and send http request
    
    var var_str = getFormValues(document.getElementById('f_feedback'))+"&do=addFeedback&pl="+window.navigator.platform+"&cc="+window.navigator.cpuClass;

    document.getElementById('feedback_submit').disabled = true;

    feedbackXMLHttpObj.send(var_str);
    feedbackXMLHttpObj.onreadystatechange=feedbackStatusChecker;
}

// check status of email requester object
function feedbackStatusChecker(){
    // if mail request is completed
    if(feedbackXMLHttpObj.readyState==4){
        if(feedbackXMLHttpObj.status==200){
	    // if status == 200 display server response
    	    displayServerResponse();
        }
        else{
            alert('Failed to get response :'+feedbackXMLHttpObj.statusText);
        }
    }
}

// display server response
function displayServerResponse(){
    var status=document.getElementById('status');
    if(!status){return};

    var response = feedbackXMLHttpObj.responseText;
    
    if (response == 'OK')
    {
	document.getElementById('f_feedback').elements[0].value = '';
	document.getElementById('f_feedback').elements[1].value = '';
	document.getElementById('f_feedback').elements[2].value = '';
	
	var img = document.getElementById('img_code1');
	var date = new Date;
	var time = date.getTime();
	img.setAttribute("src", "server/captcha.php?r=1&"+time);
	status.style.display = "block";
	status.innerHTML = 'Message has been sent.';
	document.getElementById('feedback').style.display = "none";
	clearTabs();
    }
    else if (response == 'OK2')
    {
	document.getElementById('f_tellafriend').elements[0].value = '';
	document.getElementById('f_tellafriend').elements[1].value = '';
	document.getElementById('f_tellafriend').elements[2].value = '';
	
	var img = document.getElementById('img_code2');
	var date = new Date;
	var time = date.getTime();
	img.setAttribute("src", "server/captcha.php?r=2&"+time);
	status.style.display = "block";
	status.innerHTML = 'An email has been sent.';
	document.getElementById('tellafriend').style.display = "none";
	clearTabs();
    }
    else
	status.innerHTML = 'There has been an error. Please try again.';
	
    document.getElementById('feedback_submit').disabled = false;
    document.getElementById('tell_submit').disabled = false;
}

function clearTabs() {
    var zatabs = document.getElementById("tabs").getElementsByTagName("a");
    for(i = 0; i < zatabs.length; i++)
    {
	zatabs[i].className = "";
    }
}

// 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;
}

// instantiate feedback XMLHttpRequest object
var feedbackXMLHttpObj=getXMLHttpRequestObject();