var xmlHttp = createXmlHttpRequestObject();
var serverAddress = "js/kontakt_ajax/validate.php";
var showErrors = true;
var cache = new Array();


function createXmlHttpRequestObject(){
  var xmlHttp;
  try{
    xmlHttp = new XMLHttpRequest();
  }
  catch(e){
    
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    for(var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {
      try { 
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  if (!xmlHttp)
    displayError("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  else 
    return xmlHttp;
}

function displayError($message){
  if(showErrors){
    showErrors = false;
    alert("Wystąpił błąd: \n" + $message);
    setTimeout("validate();", 10000);
  }
}

function validate(inputValue,fieldID,string_mail){
  if(xmlHttp){
    if(fieldID){
      inputValue = encodeURIComponent(inputValue);
      fieldID = encodeURIComponent(fieldID);
	  string_mail = encodeURIComponent(string_mail);
	  //kolejka
      cache.push("inputValue=" + inputValue + "&fieldID=" + fieldID + "&string_mail=" + string_mail);
    }
    try{
      if((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0){
        //pobiera nowe parametry z pamięci
        var cacheEntry = cache.shift();
        xmlHttp.open("POST",serverAddress, true);
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xmlHttp.onreadystatechange = handleRequestStateChange;
        xmlHttp.send(cacheEntry);
      }
    }
    catch(e){
      displayError(e.toString());
    }
  }
}

function handleRequestStateChange(){
  if(xmlHttp.readyState == 4){
    if(xmlHttp.status == 200){
      try{
        readResponse();
      }
      catch(e){
        displayError(e.toString());
      }
    }else{
      displayError(xmlHttp.statusText);
    }
  }
}

function readResponse(){
  var response = xmlHttp.responseText;
  if(response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0
    || response.length == 0)throw(response.length == 0 ? "Server error." : response);
	
  responseXml = xmlHttp.responseXML;
  xmlDoc = responseXml.documentElement;
  result = xmlDoc.getElementsByTagName("result")[0].firstChild.data;
  
  if(result=="send"){
	document.getElementById("div_kontakt").innerHTML="<b>Twój mail został wysłany</b>";
  }else{
	fieldID = xmlDoc.getElementsByTagName("fieldid")[0].firstChild.data;
	message = document.getElementById(fieldID + "_failed");
	message.className = (result == "1") ? "hidden" : "view";
	message.innerHTML = result;
  }
  setTimeout("validate();",1);
}

function send_form(){
	//sprawdzam cały formularz
	var hidden_number=0;
	var text_number=0;
	var string_send='';
	
	for(var i = 0; i < document.forms["kontakt"].length; i++){     
		if(document.forms["kontakt"].elements[i].title=="text"){
			text_number++;
			
			validate(document.forms["kontakt"].elements[i].value,document.forms["kontakt"].elements[i].id,'');
			if(document.getElementById(document.forms["kontakt"].elements[i].id + "_failed").className=="hidden"){
				string_send+=document.forms["kontakt"].elements[i].value + "*";
				hidden_number++;
			}
		}
	}
	
	if(text_number==hidden_number){
		validate(' ',' ',string_send);
		setTimeout(reset('kontakt'),5000000);
	}
}

function set_button(){
  document.getElementById("submit").setAttribute("type","button");
}

function reset(id){
	document.getElementById(id).reset();
}