var ECMSAJAXGET  = 'GET';var ECMSAJAXPOST = 'POST';var xmlhttp = null;
function setInnerHTMLAndExecScript (element, html) {  var newElement = element.cloneNode(false);  newElement.innerHTML = html;  element.parentNode.replaceChild(newElement, element);}
function addJavascriptElement(js) {	var head = document.getElementsByTagName("head")[0];	var script = document.createElement('script');	script.type = "text/javascript";	script.id   = "jsDialog";	script.text = js;	head.appendChild(script);}

/** * Funció -crida- per defecte a l'executar qualsevol crida AJAX * @param {Object} myxmlhttp * @param {Object} objectId */function ajax_default_callback(myxmlhttp, objectId) {  // if the ready state is finished (4) and the http status is OK (200  // a responseText should be available  // in this case we use the responseText to enter into the innerHTML of the object provided via the var  if (objectId != '') {  	if (myxmlhttp.readyState == 4) {  		if (myxmlhttp.status == 200) {  			oid = document.getElementById(objectId);  			// xmlhttp.responseText object contains the response. 			//var scriptStartText = "<script id=\"initDlgScript\" type=\"text/javascript\">";			//var scriptEndText = "</script>";						js = "";			startScript = myxmlhttp.responseText.search(/<script [^>]*>/i);// indexOf(scriptStartText);			endScript = myxmlhttp.responseText.search(/<\/script>/i); //indexOf(scriptEndText);						if (startScript > -1) {				html = myxmlhttp.responseText.substring(0, startScript - 1);				js   = myxmlhttp.responseText.substring(startScript, endScript - 1);				js   = js.substring(js.search(/>/i)+1);								if (oid) setInnerHTMLAndExecScript(oid, html);				addJavascriptElement(js);			}else {				if (oid) setInnerHTMLAndExecScript(oid, myxmlhttp.responseText);			}						//If we have "tabbertabs" to enable			if (myxmlhttp.responseText.search(/tabber/i) > -1) {				var tabberArgs = ({});				el = document.getElementById('dialog_tabber_object');				tabber = new tabberObj(tabberArgs);				tabber.init(el);			}						if (myxmlhttp.responseText.search(/InputTextMandatory/i) > -1) {				checkMandatoryStartup();			}						//Execute an "Startup" function				if (myxmlhttp.responseText.search(/jsInitDialog/) > -1) {				jsInitDialog();			}						if (myxmlhttp.responseText.search(/<!-- RELOAD -->/i) > -1) {				var defaultReload = true;								if(typeof(reloadIntercept)!='undefined') {					if(reloadIntercept!=null) {						defaultReload = false;						//reloadIntercept();						eval(reloadIntercept);						closeDialog();					}				}				if(defaultReload) window.location.reload(true);			}			else {				if (myxmlhttp.responseText.search(/<!-- AUTOHIDE -->/i) > -1) {					closeDialog();				} else {					if (myxmlhttp.responseText.search(/<!-- TIMEDAUTOHIDE -->/i) > -1) {						window.setTimeout('closeDialog()',2000);					}					dc = document.getElementById('divJSDialogContent');					if(dc!=null) dc.innerHTML = myxmlhttp.responseText;				}			}		}	}  }}/************** * Llença la crida a la funció AJAX * @param {Object} params Objecte amb les dades a obtenir * 	type: ECMSAJAXGET o ECMSAJAXPOST *  url : Fitxer on fer la crida ( relativa o absoluta ) *  callback: Funció que s'executarà un cop completada la crida *  objectId: ID d'un element de la web on es publicarà la resposta *  postVar : si el formulari s'envia via POST, la/les variable/s que s'enviarà/n *  form    : formulari que s'ha d'enviar */function ecmsAJAXcall(params) {  try {     var myxmlhttp = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");  }   catch (e) {     // use of antique browser, do what you want   }    //estalim el callback  myxmlhttp.onreadystatechange = ((typeof(params.callback)=='undefined')||(params.callback==null)) ? function(){	  ajax_default_callback(myxmlhttp, params.objectId);  } : function(){  		params.callback(myxmlhttp, params.objectId)  };  //si estem enviant un formulari  if((typeof(params.form)!='undefined')&&(params.form!=null)) {  	params.postVar = getFormPost(params.form);	  }    //fem el get o el POST  if(params.type==ECMSAJAXPOST){    myxmlhttp.open("POST", params.url, true);    myxmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    myxmlhttp.send(params.postVar);  }  else{    myxmlhttp.open("GET", params.url, true);    myxmlhttp.send(null);  }}/** * Obté el post d'un formulari * @param {Object} form -OBJECTE- formulari */function getFormPost(form) {	if (form=='') {		frm=document;			} else {		frm=form;	}	result='';		els = frm.getElementsByTagName('input');	for(i=0;i<els.length;i++) {		if(result!='') result += "&";		result+=els[i].name+"="+URLEncode(els[i].value);	}	els = frm.getElementsByTagName('textarea');	for(i=0;i<els.length;i++) {		if(result!='') result += "&";		result+=els[i].name+"="+URLEncode(els[i].value);	}	els = frm.getElementsByTagName('select');	for(i=0;i<els.length;i++) {		if(result!='') result += "&";		result+=els[i].name+"="+URLEncode(els[i].options[els[i].selectedIndex].value);	}	return result;}/** * Incrementa les estadístiques del recurs i del mirror que ha fet servir el recurs * @param {Object} codrecurs * @param {Object} mirror */function incStats(codrecurs,mirror) {		if(typeof(mirror)=="undefined"){				ecmsAJAXcall( {type: ECMSAJAXGET,	               url:  '/index.php?ps=0be95bd55f4d28404030b94ed7a4a022fd731a81ee2afb9a2ae7fb376ec85e64dd&id_recurs=' + codrecurs});	}else{		ecmsAJAXcall( {type: ECMSAJAXGET,	               url:  '/index.php?ps=0be95bd55f4d28404030b94ed7a4a022fd731a81ee2afb9a2ae7fb376ec85e64dd&id_recurs=' + codrecurs +'&mirror='+mirror});	}	}
