﻿/*********************************************************************
*** (C) OK-Systems,2007 (All rights reserved)                      ***
*** Don't make any changes without reporting to oks@ok-systems.com ***
**********************************************************************
*** File: fu_ajax.js                                               ***
*** Project_: Virtual Office                                       ***
*** Language: JavaScript                                           ***
*** Description: Library of ajax functions                         ***
*********************************************************************/


//==============================================================================
// Ajax functions
//==============================================================================

//--------------------
//- Created_: 19-Dec-2005, Antonio Olmedo Soler
//- Modified: 19-Dec-2005, Antonio Olmedo Soler
//- Syntax__: Ajax_ShowValue(cTarget,cValue)
//- Returns_: 
//- Description: 
//--------------------
function Ajax_ShowValue(cTarget,cValue) {
	var e=document.getElementById(cTarget);
	if (!e) return null;
	try {
		e.innerHTML =cValue;
		//---Postprocessing:
		//alert(cTarget+' ['+e.tagName+']');
		//if (e.document.forms[0]) {
		//   alert(cTarget+' form => '+e.document.forms[0].elements.length);
		//   e.document.forms[0].focus();
		//}
	} catch (oE) { }
}

//--------------------
//- Created_: 12-Dec-2005, Antonio Olmedo Soler
//- Modified: 19-Dec-2005, Antonio Olmedo Soler
//- Syntax__: Ajax_getHTTPObject()
//- Returns_: 
//- Description: 
//--------------------
function Ajax_getHTTPObject() {
	var oXmlHttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			oXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) { oXmlHttp = false; }
		}
	@else
		oXmlHttp = false;
	@end @*/
	if (!oXmlHttp && typeof XMLHttpRequest != 'undefined') {
		try {
			oXmlHttp = new XMLHttpRequest();
		} catch (e) { oXmlHttp = false; }
	}
	return oXmlHttp;
}

/* //--- http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml 
function ajaxRequest(){
	var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
	if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
		for (var i=0; i<activexmodes.length; i++){
			try{ return new ActiveXObject(activexmodes[i])
			} catch(e){} //suppress error
		}
	} else if (window.XMLHttpRequest) // if Mozilla, Safari etc
		return new XMLHttpRequest()
	else
		return false
}
*/

//--------------------
//- Created_: 12-Dec-2005, Antonio Olmedo Soler
//- Modified: 19-Dec-2005, Antonio Olmedo Soler
//- Syntax__: Ajax_HandleHttpResponse()
//- Returns_: 
//- Description: 
//--------------------
function Ajax_HandleHttpResponse() { 
	//alert('Ajax_HandleHttpResponse\noHttp.readyState='+oHttp.readyState+'\noHttp.status='+oHttp.status);
	if (oHttp.readyState == 4) { 
		if (oHttp.status == 200) { 
			if (oHttp.responseText.indexOf('invalid') == -1) {
			   // Armamos un array, usando la coma para separar elementos
				var aResults = oHttp.responseText.split(','); 
				//alert('Ajax_HandleHttpResponse\nresults='+results)
				//alert('cAjaxTarget='+cAjaxTarget+' => '+document.getElementById(cAjaxTarget))
				//document.getElementById(cAjaxTarget).innerHTML = aResults[0];
				Ajax_ShowValue(cAjaxTarget,aResults[0]);
				bAjaxProcessing = false;
			}
		}
	}
}

//--------------------
//- Created_: 12-Dec-2005, Antonio Olmedo Soler
//- Modified: 26-Oct-2010, Antonio Olmedo Soler
//- Syntax__: Ajax_GetPage(cUrl,cTarget)
//- Returns_: 
//- Description: 
//--------------------
function Ajax_GetPage(cUrl,cTarget) {  
   //alert('Ajax_GetPage\n- Target:\t"'+cTarget+'"\n- Url:\t"'+cUrl+'"');
	if (!bAjaxProcessing && oHttp) {
       //<<<var valor = escape(document.getElementById("InputField").value);
       //<<<var url = "aos_test01b.asp?input="+valor;
       if (!bAjax_UseCache) cUrl+=(cUrl.indexOf('?')==-1?'?':'&')+Date_URLString();
       //alert('Ajax_GetPage\n'+cUrl)+'\n'+cTarget;
       if (cTarget) cAjaxTarget=cTarget;
       oHttp.open('GET',cUrl,true);
       oHttp.onreadystatechange=Ajax_HandleHttpResponse;
       bAjaxProcessing=true;
       oHttp.send(null);
    }
}


//--------------------
//- Created_: 12-Dec-2005, Antonio Olmedo Soler
//- Modified: 27-Oct-2010, Antonio Olmedo Soler
//- Syntax__: Ajax_PostPage(cUrl,cTarget,parameters)
//- Returns_: 
//- Description: 
//--------------------
function Ajax_PostPage(cUrl,cTarget,parameters) {  
   //alert('Ajax_GetPage\n   Target='+cTarget+'\n   Url='+cUrl);
   if (!bAjaxProcessing && oHttp) {
		if (!bAjax_UseCache) cUrl+=(cUrl.indexOf('?')==-1?'?':'&')+Date_URLString();
		//   alert('Ajax_GetPage\n'+cUrl)+'\n'+cTarget;
		if (cTarget) cAjaxTarget=cTarget;
		oHttp.open('POST',cUrl,true);
		oHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		//oHttp.setRequestHeader("Content-length", parameters.length);
		//oHttp.setRequestHeader("Connection", "close");
		oHttp.onreadystatechange=Ajax_HandleHttpResponse;
		bAjaxProcessing=true;
		oHttp.send(parameters);
    }
}

/*
//--------------------
//- Created_: 15-May-2006, Antonio Olmedo Soler
//- Modified: 15-May-2006, Antonio Olmedo Soler
//- Syntax__: Ajax_SubmitForm(cUrl,cArgs,cTarget)
//- Returns_: 
//- Description: 
//--------------------
function Ajax_SubmitForm(cUrl,cTarget,oForm) {   
   //alert(cTarget+' -> '+cUrl)
   if (!bAjaxProcessing && oHttp) {
      var cParams=Form_GetValues(oForm); 
      if (!bAjax_UseCache) cParams+=(cParams.indexOf('?')==-1?'?':'&')+Date_URLString();
      //
      alert('Ajax_SubmitForm('cUrl+','+cTarget+')\n'+cParams);
      if (cTarget) cAjaxTarget=cTarget;
      oHttp.open('POST',cUrl,true);
      oHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8'); 
      oHttp.setRequestHeader('Content-length',cParams.length);
      oHttp.setRequestHeader('Connection','close');
      oHttp.onreadystatechange=Ajax_HandleHttpResponse;
      bAjaxProcessing=true;
      oHttp.send(cParams);
   }
}

//--------------------
//- Created_: 15-May-2006, Antonio Olmedo Soler
//- Modified: 15-May-2006, Antonio Olmedo Soler
//- Syntax__: Form_GetValues(oForm)
//- Returns_: 
//- Description: 
//--------------------
function Form_GetValues(oForm) { 
   var cOut =''; 
   //---
   for(var i=0; i<oForm.elements.length; i++) { 
      switch(oForm.elements[i].type) { 
      case 'text': 
         //>>>Validate field value...
         cOut+=oForm.elements[i].name+"="+escape(oForm.elements[i].value)+'&'; 
         break; 
      case 'select-one': 
         cOut+=oForm.elements[i].name+"="+oForm.elements[i].options[oForm.elements[i].selectedIndex].value+'&'; 
         break;
      //>>> Other types (select-multiple) ?
      } 
   } 
   cOut=cOut.substr(0,(cOut.length-1)); 
   return cOut; 
}
*/


//==============================================================================
// Contextual Variables
//==============================================================================

var bAjax_UseCache  =true;
var bAjaxProcessing	=false;					// Hay un proceso activo?
var cAjaxTarget		='AjaxField';			// Nombre del elemento a actualizar
var oHttp			=Ajax_getHTTPObject();	// Creamos el objeto XMLHttpRequest

