Sinfo_Ajax = function Sinfo_Ajax() {
   /**
    *  Evaluate javascript code. This method is cross browser.
    *  @jscript the code to eval
    */
   this.crossbrowerEval = function(jscript, Owner) {	   
      //alert(jscript);
      if (window.execScript) { // IE         
         //alert(jscript);
         jscript = jscript.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
         //alert('A' + jscript + 'Z');
         if (jscript != '') {
        	window.Owner = Owner;
            window.execScript(jscript);
         }
         // alert('IE');
      } else {
    	 try {
            eval(jscript);
    	 } catch (exxx) {
    		 alert(exxx);
    	 }
      }
   }
   
   /**
    *  Make an ajax call with post. This method is cross browser.
    *  @par_sInterfaceUrl the url to call
    *  @par_sParameter parameters that should be posted
    *  @par_bAsync if the call should be asynchronous
    *  @par_fCallback the callback function to use when success
    *  @return the request object  
    */
   this.ajaxCall = function(par_sInterfaceUrl, par_sParameter, par_bAsync, par_fCallback) {
      var request = null;
      
      //getting cross browser XMLHttpRequest object
      if (window.XMLHttpRequest) {
         request = new window.XMLHttpRequest();
      } else if (window.ActiveXObject) {
         request = new ActiveXObject("Msxml2.XMLHTTP");
         if (!request) {
            request = new ActiveXObject("Microsoft.XMLHTTP");
            if (!request)alert("XmlHttpNotSupported");
         }
      } else {
         alert("XmlHttpNotSupported");
      }    
      
      request.onreadystatechange = function() {
         if (request.readyState == 4) {
            if (request.status == 200) {  
                par_fCallback(request);
            } else {
            	//alert(request.readyState + '-' + request.status);
            	
            	// code when ajax is running and a user press another link. Ignore it! 
            	if (request.status != 0) {
            		var msg = '';
	            		msg += "Die Sitzung ist abgelaufen. Die Seite wird neu geladen.\n\n";
	            		msg += "La sessione è scaduta. La pagina verrà ricaricata.\n\n";
	            		msg += "The session has expired. The page will be once again loaded.\n\n";
	            		msg += "De pagina is verlopen en wordt opnieuw geladen.\n\n";
	            		msg += "Sesja wygasła. Odśwież stronę.\n\n";
	            		msg += "Spojení vypršelo. Stránka bude načtena ještě jednou.\n\n";
	            		            	
	            	/*
	            	 * Die Sitzung ist abgelaufen. Die Seite wird neu geladen.
	            	 * IT
	            	 * La sessione è scaduta. La pagina verrà ricaricata.
	            	 * EN
	            	 * The session has expired. The page will be once again loaded.	
	            	 * NL
	            	 * De pagina is verlopen en wordt opnieuw geladen.
	            	 * PL
	            	 * Sesja wygasła. Odśwież stronę.
	            	 * CS
	            	 * Spojení vypršelo. Stránka bude načtena ještě jednou.
	            	 */ 
	            	
	            	//alert("status"+request.status)
	            	if (confirm(msg)) {
	            		window.location.reload();
	            	}
            	}
            }
         }
      }
      request.open("POST", par_sInterfaceUrl, par_bAsync);
      request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
      request.send(par_sParameter);
      
      return request;
   }
   
   var alreadyLoadedJs = new Array();
   
   this.addAlreadyLoadedJs = function(par_sHref) {
	   alreadyLoadedJs[alreadyLoadedJs.length] = par_sHref;
   }
   
   /**
    *  Load synchro a javascript file from a url and make an eval
    */
   this.loadScript = function _loadScript(par_sHref, p_onSuccess) {
	   var len = alreadyLoadedJs.length;
	   
	   for (var i = 0; i < len; i++) {
		   if (alreadyLoadedJs[i] == par_sHref) {
			   p_onSuccess();
	           return;
		   }
	   }
	   var objTransaction = YAHOO.util.Get.script(par_sHref,{onSuccess: function() {alreadyLoadedJs[alreadyLoadedJs.length] = par_sHref; p_onSuccess();}});
   }
   var loadedCss = new Array();
   
   this.addAllCss = function() {
	   var elemList = document.getElementsByTagName("head")[0].getElementsByTagName('link');
	   
	   for (var i=0;i<elemList.length;i++) {
		   var substElem = elemList.item(i);
		   var rel = substElem.getAttribute('rel').toLowerCase();
		   var type = substElem.getAttribute('type').toLowerCase();
		   
		   if (rel == 'stylesheet' && type == 'text/css') {			   
			   var href = substElem.getAttribute('href');
			   
			   loadedCss[loadedCss.length] = href;
		   }
	   }
   }
   
   this.addAlreadyLoadedCss = function(par_sHref) {
	   loadedCss[loadedCss.length] = par_sHref;
   }
   
   this.check32css = function() {	   
	   var host = window.location.host.split(':');
	   
	   if ((host[0] == 'localhost') || (host[0] == '127.0.0.1') || (host[0].match('sn-dev-'))) {
		   if(loadedCss.length > 31) {
			   alert('WARNING: CSS problem max number of CSS is 31, now number of CSS is '+loadedCss.length);
		   }
	   }
   }
   
   /**
    *   Append a Style in the page.   
    */
   //IGOR IE32CSS
   var styleLoaded=""; 
   var debugContainer = document.getElementById("debugContainer");
   this.loadStyle = function _loadStyle(par_sHref) {
	   var len = loadedCss.length;
	   
	   for (var i = 0; i < len; i++) {
		   if (loadedCss[i] == par_sHref)  {
	           return;
		   }
	   }
	   this.addAlreadyLoadedCss(par_sHref);
	   	   
	   if(!(!debugContainer))debugContainer.innerHTML += ">>> try to load:" + par_sHref +"<br><br>";
	   
	   var failureHandler = function(o) { 
		   if(!(!debugContainer))debugContainer.innerHTML+= "Error !!! " + o.data.field1; 
	   }	   
	   var successHandler = function(o) {
		   if(!(!debugContainer))debugContainer.innerHTML+= "Loaded: " + o.data.field1; 
	   }	   
	   var progressHandler = function(o) {
		   if(!(!debugContainer))debugContainer.innerHTML+= "Loading... " + o.data.field1;
	   }	   
	   var objTransaction = YAHOO.util.Get.css(par_sHref,{ onSuccess: successHandler, data: {field1: par_sHref + "<br>"}});
   }
}