//include("activity.js");
include("/site/res/js/ajax/base/activity.js");
var http_request = false;

// -------------------------- GET and SEND  Requests
function sendByGet(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array){
   return send(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array, 'GET', false);
}

function sendByPost(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array, post_method_parameters){
   return send(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array, 'POST', post_method_parameters);
}


function setAjaxText(full_url, div2change, show_progress)
{ 
  
   var divs2change = new Array(div2change);
   var divs2showprogress = (show_progress=='local')?new Array(div2change):false;

   return setAjaxTexts(full_url, divs2change, show_progress, divs2showprogress);
}

function setAjaxTexts(full_url, divs2change, show_progress, divs2showprogress)
{ 
   
   var callback_function_name = setHiText;
   var callback_function_parameters = divs2change;
   var progress_div_array = divs2showprogress;
   sendByGet(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array);
   return false;
}


//------------------------------------------------------------
//------------------ FORMS   ---------------------------------
   function sendForm(formId, callback_function_name, callback_function_parameters, show_progress, progress_div_array){
//alert(1111);
      var parameters = getFormById(formId);
//alert("parameters 2:'"+parameters+"'");
       var method = "";
      try{ method = $(formId).getAttribute('method');
           method = method.toLowerCase();
      }catch(e){}  
//alert(1112);
      var full_url = $(formId).getAttribute('action');
      if(method  == 'get'){
       var full_url = full_url+"?" + parameters;
//alert("full_url:"+full_url);
//alert("get full_url:'"+full_url+"'");
        sendByGet(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array);
//alert(1115);
      }else{
//alert(1116);
       var post_method_parameters = parameters;
//alert("post full_url:'"+full_url+"', post_method_parameters:'"+post_method_parameters+"'");
       //var post_method_parameters = parameters;
//alert("post post_method_parameters:'"+post_method_parameters+"'");
        sendByPost(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array, post_method_parameters);
      }
//alert(1119);
      return false;
   }
   
//---------------------------------------------------------

function send(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array, method, post_method_parameters) // empty array = global
{
try{ 
  if(!full_url){
    alert("invalid URL:"+full_url);
    return false;
  }
 // alert(1);
  var activity_div_name_array = false;
 if(show_progress){
 //alert(2);
   // multiple div update
   if(show_progress == 'local' && isArray(progress_div_array) && progress_div_array.length >0){
       activity_div_name_array = progress_div_array
    }else{ // global div update
       activity_div_name_array = false;
    }
 //alert(3);
    Activity.start(activity_div_name_array);
  }
  //alert(33);
  var function_params={
                       "activity_div_name_array":activity_div_name_array,
                       "show_progress":show_progress,
                       "callback_function_parameters":callback_function_parameters};
   http_request = getHTTPRequest();
   http_request.onreadystatechange=function(){
         handle_callback(callback_function_name, function_params);
   };
 //alert(44);
//      http_request.onreadystatechange = alertContents;
      if(method=='POST'){
        // alert(55);
        http_request.open('POST', full_url, true);
//alert("55a");
        http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http_request.setRequestHeader("Content-length", post_method_parameters.length);
        http_request.setRequestHeader("Connection", "close");
//alert("55b");
        http_request.send(post_method_parameters);
//alert("55c");
      }else{//      if(method=='GET'){ // default
        // alert(66);
        http_request.open("GET", full_url, true );
        http_request.send(null);
      }
// alert(77);
  //    alert(4);
//    http_request.open("GET", full_url, true );
   //http_request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); // in case i want no cache alert(4);
  // http_request.send(null);
  // alert(10);
   }catch(ex){}
   return false;
}

function syncSend(full_url, returnFunction, returnFunctionParams) {
   http_request = getHTTPRequest();
   if (!http_request) {
      alert('Cannot create XMLHTTP instance');
      return false;
   }
   
   http_request.open('GET', full_url, false);
   http_request.send(null);
   returnFunction(http_request.responseText, http_request.responseXML, returnFunctionParams);
}



function handle_callback(callback_function_name, function_params) {
   /*
   0 – Uninitialised 
   1 – Loading 
   2 – Loaded 
   3 – Interactive 
   4 – Completed 
   */
   if (http_request.readyState == 0) { // 0 – Uninitialised
      // alert("0. Uninitialised");
   }else if (http_request.readyState == 0) { // 1 – Loading
      // alert("1. Loading");
   }else if (http_request.readyState == 2) { // 2 – Loaded
      // alert("2. Loaded");
   }else if (http_request.readyState == 3) { // 3 – Completed
     
     var show_progress = function_params["show_progress"];
     if(show_progress!=false){
       //alert(22);
       var activity_div_name_array = function_params["activity_div_name_array"];
       Activity.count_request(activity_div_name_array);
      }
   }else if (http_request.readyState == 4) { // 4 – Completed 
      //alert(24);
      var show_progress = function_params["show_progress"];
      if(show_progress!=false){
        //alert(25);
        var activity_div_name_array = function_params["activity_div_name_array"];
        var success = (http_request.status == 200)?true: false;
        Activity.end(activity_div_name_array, success);
      }
      if (http_request.status == 200) {
          if(callback_function_name){ // sometimes just do nothing e.g. tracker
             //alert("http_request.responseText:"+http_request.responseText);
             var callback_function_parameters = function_params["callback_function_parameters"];
             callback_function_name(http_request.responseText, http_request.responseXML, callback_function_parameters);
          }
      } else {
        alert('There was a problem with the request.');
      }
   }
}

function setHiText(responseText, responseXML, params){
      
      for(i=0; i<params.length; i++){
       var div_name = params[i];
            //alert("div_name:"+div_name);
            var div_value = getCoolXML(responseText, div_name);
            var code_value = getCoolXML(responseText, div_name+"_code");
            //alert("div_value " + div_value);
            var divObject = document.getElementById(div_name);

            if(divObject==undefined)continue;
            if(code_value!="")divObject.innerHTML = div_value;

            if(code_value==1){ // highlight successs story
               divObject.style.color           = '#f00';
               divObject.style.backgroundColor = '#fff';
            }else if(code_value==0){ // no highlight - notification
               divObject.style.color           = '#000';
               divObject.style.backgroundColor = '#fff';
            }else if(code_value==-1){ // highlight failure story
               divObject.style.color           = '#0f0';
               divObject.style.backgroundColor = '#fff';
            }else{ // no highlight - notification - same as 0
               divObject.style.color           = '#000';
               divObject.style.backgroundColor = '#fff';
            }
        }
}

function getHTTPRequest() {
    if (typeof XMLHttpRequest != "undefined") {
        http_request= new XMLHttpRequest();
        return http_request;
    } else if (window.ActiveXObject) {
      var aVersions = [ "MSXML2.XMLHttp.5.0",
        "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
        "MSXML2.XMLHttp","Microsoft.XMLHttp"
      ];
      for (var i = 0; i < aVersions.length; i++) {
        try {
            var oXmlHttp = new ActiveXObject(aVersions[i]);
            http_request = oXmlHttp;
            return http_request;
        } catch (oError) {
            //Do nothing
        }
      }
    }
    throw new Error("XMLHttp object could be created.");
}
//-------------------------important helpers-----------------------------
//----------------------------------------------------- 
/*
                     new Text functions
*/
//------------------------------------------------------ 

function setDynamicAjaxText(full_url, div2change, response_key, show_progress)
{ 
  
 //alert("setDynamicAjaxText() 1 httputils");
//   var divs2change = new Array(div2change);
//   var divs2showprogress = (show_progress=='local')?new Array(div2change):false;
   //var divName = new Array(div2change);
   //var responseKey = new Array(responseKey);
   var myarr = new Array(div2change, response_key);
   var callback_function_parameters = new Array(myarr);
   
// alert("setDynamicAjaxText() 21");
   var callback_function_name = dynamicSetText;
 //  var callback_function_parameters = new Array(div2change);
   var callback_function_parameters = new Array(myarr);
// alert("setDynamicAjaxText() 31");
   var progress_div_array = (show_progress=='local')?new Array(div2change):false;
 //alert("setDynamicAjaxText() 41");
   sendByGet(full_url, callback_function_name, callback_function_parameters, show_progress, progress_div_array);
//alert("setDynamicAjaxText() 51");
   return false;
}


function dynamicSetText(responseText, responseXML, params){
    //    alert("dynamicSetText() responseText:"+responseText+", params:"+params);
      
      for(i=0; i<params.length; i++){
         //  alert("dynamicSetText() params["+i+"]:"+params[i]+"");

          var divKeyArr = params[i];
        //    alert("dynamicSetText() params:"+params+",\n\n divKeyArr:"+divKeyArr);
          var div_name = divKeyArr[0];
          var response_key = divKeyArr[1];

           // alert("dynamicSetText() div_name:"+div_name+", response_key:"+response_key);

            var response_value = getCoolXML(responseText, response_key);
            var code_value = getCoolXML(responseText, response_key+"-code");
            
          //  alert("dynamicSetText() response_value: '" + response_value+"', code_value:'"+code_value+"'");
            
            var divObject = document.getElementById(div_name);
            
            if(divObject==undefined)continue;
            divObject.innerHTML = response_value;
            if(code_value==1){ // highlight successs story
               divObject.style.color           = '#0f0';
               divObject.style.backgroundColor = '#fff';
            }else if(code_value==0){ // no highlight - notification
               divObject.style.color           = '#000';
               divObject.style.backgroundColor = '#fff';
            }else if(code_value==-1){ // highlight failure story
               divObject.style.color           = '#f00';
               divObject.style.backgroundColor = '#fff';
            }else{ // no highlight - notification - same as 0
               divObject.style.color           = '#000';
               divObject.style.backgroundColor = '#fff';
            }
        }
}



