var globalAjaxDestination = "/ajax/";

var globalAjaxRequestObject = this.createRequestObject();

function createRequestObject(){
  var requestObject;
  var browser = navigator.appName;
  if(browser == "Microsoft Internet Explorer"){
    requestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }else{
    requestObject = new XMLHttpRequest();
  }
  return requestObject;
}

function sendAjax(requestObject,doAlert,doFunc) {
  jsonRequestString = JSON.encode(requestObject);

  globalAjaxRequestObject.open('post', globalAjaxDestination);
  globalAjaxRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  var sendData = "jsonrequest="+jsonRequestString;

  globalAjaxRequestObject.send(sendData);
  globalAjaxRequestObject.onreadystatechange = function () {
    if(globalAjaxRequestObject.readyState == 4){
      if(globalAjaxRequestObject.status==200){
        if(doAlert){
          alert('Status ok\nResponse:\n'+ globalAjaxRequestObject.responseText);
        }
        if(doFunc){
          eval(doFunc + '('+globalAjaxRequestObject.responseText+');');
        }
      }else{
        alert('Fout bij ajax gegevensverwerking ' + requestObject.action + ',' + globalAjaxRequestObject.status + '\nDetails:\n' + globalAjaxRequestObject.responseText);
      }
    }
  };

}

function fillCheck(el,text){
    if(el.value==''){
      el.value = text;
    }else if(el.value==text){
      el.value = '';
    }
}

function saveCustomSelectSingleCompanyValue(value,fixedValue,name){

    requestObject = {
      action: "saveSingleCompanyValue",
      data: {
        key: fixedValue,
        value: value
      }
    };
    
    sendAjax(requestObject,false,'processUpdateMissingCounters');

}

function saveSingleCompanyValue(input, key, allowzero){
  value = input.value;

  if(!allowzero && value.replace(/\s/g,"") == ""){
    alert('Invoer verplicht! Lege waarde is niet opgeslagen'); 
  }else{
    input.style.border = '1px solid #00ff00';
    
    requestObject = {
      action: "saveSingleCompanyValue",
      data: {
        key: key,
        value: value
      }
    };
    
    sendAjax(requestObject,false,'processUpdateMissingCounters');
  }
}
function saveSingleCompanyAddressValue(input, key, allowzero){
  value = input.value;
  
  if(!allowzero && value.replace(/\s/g,"") == ""){
    alert('Invoer verplicht! Lege waarde is niet opgeslagen'); 
  }else{
    input.style.border = '1px solid #00ff00';
    
    requestObject = {
      action: "saveSingleCompanyAddressValue",
      data: {
        key: key,
        value: value
      }
    };
    
    sendAjax(requestObject,false,false);
  }
}

function updateMissingCounters(){
  requestObject = {
    action: "getMissingCounters",
    data: {
      nodata: 'null'
    }
  };
  
  sendAjax(requestObject,false,'processUpdateMissingCounters');
};

function processUpdateMissingCounters(respons){

  if(respons.data[1]>0){
    baseMissing.innerHTML = ' ('+ respons.data[1] +')';
  }else{
    baseMissing.innerHTML = ' ';
  }
  if(respons.data[2]>0){
    contactMissing.innerHTML = ' ('+ respons.data[2] +')';
  }else{
    contactMissing.innerHTML = ' ';
  }
  if(respons.data[3]>0){
    stabuMissing.innerHTML = ' ('+ respons.data[3] +')';
  }else{
    stabuMissing.innerHTML = ' ';
  }
  if(respons.data[4]>0){
    cetificateMissing.innerHTML = ' ('+ respons.data[4] +')';
  }else{
    cetificateMissing.innerHTML = ' ';
  }
  if(respons.data[5]>0){
    totalMissing.innerHTML = ' ('+ respons.data[5] +')';
  }else{
    totalMissing.innerHTML = ' ';
  }
 
}


function checkFilled(input, key, nullvalue){
  value = input.value;
  elState = document.getElementById(key + '_state');
  
  if(value==nullvalue){
    elState.innerHTML = ' (!)';
  }else{
    elState.innerHTML = '';
  }
}
function checkCustomSelectFilled(elId, key, nullvalue){

  valueEl = document.getElementById(elId);
  value = valueEl.innerHTML; 
  elState = document.getElementById(key + '_state');

  if(value==nullvalue){
    elState.innerHTML = ' (!)';
  }else{
    elState.innerHTML = '';
  }
}

function removeCompanyContact(contactId){
  requestObject = {
    action: "removeCompanyContact",
    data: {
      id: contactId
    }
  };
  
  sendAjax(requestObject,false,'updateMissingCounters');

}

function setResponseIndication(value,fixvalue){
  requestObject = {
    action: "setResponseIndication",
    data: {
      offerid: fixvalue,
      value: value
    }
  };

  sendAjax(requestObject,false,false);
}
