/*
Functions usefull:
                   -getXMLHttpRequestObject

                   -validate(Inputvalue,objid)

                   -handleUpdate

                   -readResponse
                   
                   -solveButton

                   -submitForm(objForm)

                   -restoreFormClass
*/

var showError = true;
var cache = Array();

//create Object XMLHttpRequest
function getXMLHttpRequestObject()
{
var xmlhttp;

if(window.ActiveXObject)
{

try{

    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

   }catch(e)
            {
             try{
                  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                } 
                  catch(e){xmlhttp = false;} 
            }


} else if (window.XMLHttpRequest){

                                  try{xmlhttp = new XMLHttpRequest();}catch(e){xmlhttp = false;} 


                                 }//end elseif
              

if(!xmlhttp) displayError('The browser does not suport Ajax. Consider upgrading the browser!Error creating the XMLHttpRequest object');

         else
        
             return xmlhttp;

}//end function XMLHttpRequest

var xmlhttp = getXMLHttpRequestObject();
var xmlhttpForm = getXMLHttpRequestObject();

//function that displays errors
function displayError(stringError)
{

if(showError)
{
showError = false;
alert(stringError);
}

}

var urlserver = "contact/validate.php";

function validate(inputValue,fieldId)
{
document.getElementById("flagMessage").innerHTML = "";

var name = document.getElementById("txtName").value;

var email = document.getElementById("txtEmail").value;

var url = document.getElementById("txtURL").value;

//send data GET
var paramsGET = "?name="+name+"&email="+email+"&url="+url+"&sid="+new Date().getTime();


//if object xmlhttp isn`t void
  if(xmlhttp) {

               //add to cache
               if(fieldId) cache.push(inputValue+"&"+fieldId);

              //if length-cache != 0
                if(cache.length > 0) 
                      {
                         //shift cache  
                         var cacheEntry = cache.shift();
                              
                             //split cache &
                            var values = cacheEntry.split("&");
                                inputValue = values[0];
                                fieldId = values[1];

                            //make a request to the server and send data POST retrieved
                              paramsPOST = "inputValue="+inputValue+"&fieldId="+fieldId;

                              xmlhttp.open("POST",urlserver+paramsGET,true);
                              xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
                              xmlhttp.onreadystatechange = handleUpdate;
                              xmlhttp.send(paramsPOST); 
                       
                      }//end if cache


              }//end if xmlhttp

}//end function validate


handleUpdate = function()
{

if(xmlhttp.readyState == 4)
{
if(xmlhttp.status == 200)
{
   try{
       readResponse();
      }
       catch(e) {displayError(e.toString());}
}
}

}//end handleUpdate


readResponse = function()
{
var response = xmlhttp.responseXML;
var objectPreview = document.getElementById('preview');
var xmldoc = response.documentElement;


var result = xmldoc.getElementsByTagName('result')[0].firstChild.data;
var fieldid = xmldoc.getElementsByTagName('fieldid')[0].firstChild.data;


 document.getElementById(fieldid + 'InvalidImg').className = (result == 0) ? 'visible' : 'invisible'; 
 document.getElementById(fieldid + 'ValidImg').className = (result == 1) ? 'visible' : 'invisible'; 
 document.getElementById(fieldid).className = (result == 1) ? 'validText' : 'invalidText';

 var previewText = xmldoc.getElementsByTagName('preview')[0].firstChild.data;
 var to = xmldoc.getElementsByTagName('to')[0].firstChild.data;
 var name = xmldoc.getElementsByTagName('name')[0].firstChild.data;
 var email = xmldoc.getElementsByTagName('email')[0].firstChild.data;
 var url = xmldoc.getElementsByTagName('url')[0].firstChild.data;

prev="<div id='head_preview'>Message Preview</div><br />";
prev+="<strong>To: </strong>" + " " + to+"<br />";

if(name!="none") prev+="<strong>Subject: </strong>[business] contact from "+name+"<br />";
if(name!="none") prev+="<strong>From: </strong> " + " "+ name+" ";

if(email!="none") prev+="< "+email+" >"+"<br />";
if(url!="none") prev+= "<strong>Url: </strong>" + " " + url + "<br />";

objectPreview.innerHTML = prev;

solveButton();
}


solveButton = function()
{

if(document.getElementById("txtNameValidImg").className == 'visible' &&  document.getElementById("txtMessageValidImg").className == 'visible' && document.getElementById("txtEmailValidImg").className == 'visible' &&  document.getElementById("txtURLValidImg").className == 'visible')
{
     document.getElementById("btnSubmit").style.display='inline';
     document.getElementById("btnSubmit2").style.display='none';

} else {
         document.getElementById("btnSubmit").style.display='none';
         document.getElementById("btnSubmit2").style.display='inline';
       }

}



function submitForm(objForm)
{
var name = objForm.elements[0].value;
var email = objForm.elements[1].value;
var url = objForm.elements[2].value;
var message = objForm.elements[3].value;


var serverpage = urlserver + "?action=validatePHP";

var paramsPOST = 'txtName='+name+'&txtEmail='+email+'&txtURL='+url+'&txtMessage='+message;

xmlhttpForm.open("POST",serverpage,true);

xmlhttpForm.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

xmlhttpForm.onreadystatechange = function()
{

if(xmlhttpForm.readyState == 4)
{
if(xmlhttpForm.status == 200)
{
document.getElementById('flagMessage').innerHTML = xmlhttpForm.responseText;
}
}

}
xmlhttpForm.send(paramsPOST);

objForm.reset();

restoreClassForm();
}


restoreClassForm = function()
{
document.getElementById("txtNameValidImg").className = 'invisible';
document.getElementById("txtEmailValidImg").className = 'invisible';
document.getElementById("txtURLValidImg").className = 'invisible';
document.getElementById("txtMessageValidImg").className = 'invisible';
document.getElementById("txtNameInvalidImg").className = 'visible';
document.getElementById("txtEmailInvalidImg").className = 'visible';
document.getElementById("txtURLInvalidImg").className = 'visible';
document.getElementById("txtMessageInvalidImg").className = 'visible';
document.getElementById("txtName").className ='invalidText';
document.getElementById("txtEmail").className = 'invalidText';
document.getElementById("txtURL").className = 'invalidText'
document.getElementById("txtMessage").className = 'invalidText';
}
