
//--------------------------------------------------------------------------------
function ajaxInviaDati(data, url, handlerFunc)
{
  var status = false;
  var contentType = "application/x-www-form-urlencoded; charset=UTF-8";
	
	//alert("DATA:"+data+" - URL:"+url+" - HandlerFunc"+handlerFunc)	;
   //istanziamo l'oggetto XMLHttpRequest
  if (window.XMLHttpRequest) 
  {
    req = new XMLHttpRequest();
    //req.onreadystatechange = PocessaDati(handlerFunc);
    req.onreadystatechange = function(){
		 // monitoriamo lo stato dell'invio
		  if (req.readyState == 4)
		  {
		    // restituiamo lo stato della richiesta
		    if (req.status == 200) 
		    {
		      eval(handlerFunc);
		    }else{
		      alert('Problema nella gestione dei dati ' +
		      req.responseText);
		    }
		  }
		
	}
    
    
    
    req.open('POST', ''+url, true);
    req.setRequestHeader('Content-Type', contentType);
	req.send(data);
	status=true;
  }
  // controlliamo la versione di ActiveX
  else if (window.ActiveXObject) 
  {
    req = new ActiveXObject('Microsoft.XMLHTTP')
    if (req)
    {
      req.onreadystatechange =  function(){
		 // monitoriamo lo stato dell'invio
		  if (req.readyState == 4)
		  {
		    // restituiamo lo stato della richiesta
		    if (req.status == 200) 
		    {
		      eval(handlerFunc);
		    }else{
		      alert('Problema nella gestione dei dati ' +
		      req.responseText);
		    }
		  }
		
	};
      req.open('POST', 'php/'+url, true);
      req.setRequestHeader('Content-Type', contentType);
      req.send(data);
      status=true;
    }
  }
  return status;
}
//--------------------------------------------------------------------------------



function parseQueryString(query) {
    var getArray = new Object();
    query = query.replace(/^\?/,"");
    if (query!="") {
      var valuePairs = query.split('&');
     
      for (var i=0;i<valuePairs.length;i++) {
         // [0] = key, [1] = value
         var tempPair = valuePairs[i].split('=');
      
         // Unescape converts the text back from URL encoding
         getArray[tempPair[0]] = unescape(tempPair[1]);
      }
    }
    return getArray;
}

function getQueryString(query){
    var querystring="";
    for (var key in query) if ((typeof key) == "string") if(key) querystring+="&"+(key + '=' + query[key])
    return querystring.replace(/^&/,"");
}



// Utility functions 
// -----------------

// DOM Helpers
// -------------
// conditionally register $(id) function, to avoid overriding of the prototype one.
if (typeof($)!="function") {
	$ = function(id){
		return document.getElementById(id);
	}
}
function hide(el){
    el.style.display='none';
}
function show(el){
    el.style.display='block';
}

// Event Helper
function addEvent(obj, evType, fn){
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
} 

function cancelEvent(e)
{
    if (window.event){
        window.event.cancelBubble = true;
        window.event.returnValue = false;
        return;
    }
    if (e) {
        e.stopPropagation();
        e.preventDefault();
    }
}

// Ajax helpers
// -------------
var ajax_req = null;
function CreateXmlHttpReq(handler) {
  var xmlhttp = null;
  try {
    xmlhttp = new XMLHttpRequest();
  } catch(e) {
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  xmlhttp.onreadystatechange = handler;
  return xmlhttp;
}
function DummyHandler() {
    return true;
}
function ajaxGet(url,handler) {
	//alert("URL : "+url+" - FUNZIONE: "+handler);
    var a = new Array("placeholder");
    for (var j=2; j<arguments.length; j++) {
        a[a.length] = arguments[j];
    }
    var myhandler = function() {
        var content = ajaxOk();
        if (content != false) {
            a[0] = content;
            try {
                return handler.apply(this, a);
            } catch(e) {
                return myDummyApply(handler, a);
            }
        }
    }
    ajax_req = CreateXmlHttpReq(myhandler);
    ajax_req.open("GET",url);
    ajax_req.send(null);
}
function ajaxSyncGet(url) {
    if($("ajaxLoading")) show($("ajaxLoading"))
    ajax_req = CreateXmlHttpReq(DummyHandler);
    url += (url.indexOf("?") == -1) ? "?" : "&";
    ajax_req.open("GET",url, false);
    //alert (url);
	ajax_req.send(null);
    if($("ajaxLoading")) hide($("ajaxLoading"))
    return ajax_req.responseText;
}
function ajaxSyncGetRand(url) {
    url += (url.indexOf("?") == -1) ? "?" : "&";
    url += "rand="+escape(Math.random());
    return ajaxSyncGet(url);
}
function myDummyApply(funcname,args) {
    var e = "funcname(";
    for (var i = 0; i < args.length; i++) {
        e += "args["+i+"]";
        if (i+1 != args.length) {
            e += ",";
        }
    }
    e += ");"
    return eval(e);
}
function ajaxGetRand(url,handler) {
    url += (url.indexOf("?") == -1) ? "?" : "&";
    url += "rand="+escape(Math.random());
    arguments[0] = url;
    try {
        return ajaxGet.apply(this,arguments);
    } catch(e) {
        return myDummyApply(ajaxGet,arguments);
    }
}
function ajaxOk() {
    if (ajax_req.readyState == 4 && ajax_req.status == 200) {
        return ajax_req.responseText;
    } else {
        return false;
    }
}
// Array Helpers
// -------------
// Array.find( function ) - Search an element and return array of position or false
Array.prototype.find = function(searchStr) {
  var returnArray = false;
  for (var i=0; i<this.length; i++) {
    if (typeof(searchStr) == 'function') {
      if (searchStr.test(this[i])) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    } else {
      if (this[i]===searchStr) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    }
  }
  return returnArray;
}
// Array.forEach( function ) - Apply a function to each element
Array.prototype.forEach = function( f ) {
 var i = 0, j, l = this.length;
 for( i=0; i<l; i++ ) { if( ( j = this[i] ) ) { f( j ); } }
};
// Array.removeAll( function ) - Remove all the occorences of obj from array
Array.prototype.removeAll = function( obj ) {
   for (var i in this )
      if ( this[i] == obj )
         this.splice( i, 1 );
}
String.prototype.capitalize = function(){ 
    return this.replace(/\w+/g, function(a){
        return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
    });
};
