var XMLRequest=Object();
XMLRequest.buildQuery = function (query) {
        var data="";
        var first="";
        for (i in query) {
                data+=first+encodeURIComponent(i)+"="+encodeURIComponent(query[i]);
                first="&";
        }
        return data;
}

XMLRequest.POST = function (url, query, callback, fallback, objProxy) {
        var xmlhttp=null;
        if (window.XMLHttpRequest) {
                xmlhttp=new XMLHttpRequest()
        } else if (window.ActiveXObject) {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
        }
        if (xmlhttp!=null) {
                xmlhttp.onreadystatechange=function () {
                        if (xmlhttp.readyState==4) {
                                if (xmlhttp.status==200) {
                                        callback(xmlhttp, objProxy);
                                } else {
                                        fallback(xmlhttp, objProxy);
                                }
                                       
                        }
                }
                var postdata = XMLRequest.buildQuery(query);          

                xmlhttp.open("POST",url+'?isAjax=1',true);
                xmlhttp.setRequestHeader("Content-type" , "application/x-www-form-urlencoded");
                xmlhttp.setRequestHeader("Content-length", postdata.length);
                xmlhttp.setRequestHeader("Connection", "close");
                xmlhttp.send(postdata);
        } else {
                alert("Il browser non supporta XMLHTTP.")
        }
}

XMLRequest.GET = function (url, query, callback, fallback, objProxy) {
        var xmlhttp=null;
        if (window.XMLHttpRequest) {
                xmlhttp=new XMLHttpRequest()
        } else if (window.ActiveXObject) {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
        }
        if (xmlhttp!=null) {
                xmlhttp.onreadystatechange=function () {
                        if (xmlhttp.readyState==4) {
                                if (xmlhttp.status==200) {
                                        callback(xmlhttp, objProxy);
                                } else {
                                        fallback(xmlhttp, objProxy);
                                }
                                       
                        }
                }
                var postdata = XMLRequest.buildQuery(query) +'&isAjax=1';                
                            
                xmlhttp.open("GET",url+'?'+postdata,true);
                xmlhttp.setRequestHeader("Content-Type", "text/plain; charset=ISO-8859-1");                                
                xmlhttp.setRequestHeader("Connection", "close");
                xmlhttp.send(null);                
        } else {
                alert("Il browser non supporta XMLHTTP.")
        }
}

function put_status(target,string)
{
var el = getId(target);
if(el) el.innerHTML = string;
}
function clear_status(target) 
{
var el = getId(target);
if(el) el.innerHTML = '';
}
 function wait(node)
{
   n = document.createElement('img');
       n.setAttribute('id','wait');
       n.src = 'layout/default/scheme/wait.gif';
       getId(node).appendChild(n);
}

/* *************** *
 *        A j a x
 * *************** */

  
 function ajx_doSearch()
 { 
 if(!getId('searchDiv')) return
 getId('searchDiv').style.display = "block";
 
 clear_status('searchDiv');
 wait('searchDiv'); 
              
  	var query = new Array();
   		query["nickname"] = getId('nickname').value;
   		query["sesso"] = getId('sesso').value;
   		query["testo"] = getId('testo').value;
   
       var e = document.forms['frm_cerca'];
       for(var i = 0;i < e.length;i++) {
         if(e[i].name == 'attch' && e[i].checked) query["attch"] = e[i].value;
       }
		
		XMLRequest.GET("membri/ricerca/doSearch.html", query, printSearchResult,error);
		return false;
 }
 
 function printSearchResult(xmldoc) 
 {
 clear_status('searchDiv');
 put_status('searchDiv',xmldoc.responseText);
 }
 
 function ajx_doComment() 
 {
  clear_status('comment_box');
 wait('comment_box'); 
       
  	var query = new Array();
   		query["profilo"] = getId('profilo').value;  
   		query["commento"] = getId('commento').value;
	
   	var  url = "membri/commenta/"+getId('profilo').value+".html";
		 XMLRequest.POST(url, query, stateComment,error);   		
  return false;
 }
 function stateComment(xmldoc)
 {
  put_status('comment_box',xmldoc.responseText); 
  var reload = xmldoc.responseText.indexOf('<!-- ~reload -->');
  if(reload > -1) printComment();
 }
 function printComment(xmldoc)
 {
 if(!xmldoc) {
  	var query = new Array();
    query['utente'] = getId('profilo').value;
   XMLRequest.GET('membri/commenti/com.html',query,printComment,error);
  }else {
  clear_status('comment_box');
  put_status('comment_box',xmldoc.responseText); 
  }
 }

 function ajx_doNews() 
 {
 var n = document.forms['addNews'];
  if(!n.titolo.value) { alert('Inserisci titolo news per favore!');return false;}
  if(!n.news.value)  { alert('Inserisci il corpo della news per favore!');return false;}
       
  	var query = new Array();
   		query["titolo"] = n.titolo.value;
   		query["news"] = n.news.value;

  clear_status('text');
  wait('text'); 
  	
		 XMLRequest.POST('news/aggiungi/addnews.html', query, stateNews,error);   		
  return false;
 }
 function stateNews(xmldoc)
 {
  put_status('text',xmldoc.responseText); 
 if(xmldoc.responseText == '<p class="done">News inserita con successo!</p>') printNews();
 }
 function printNews(xmldoc)
 {
 if(!xmldoc) {
  	var query = new Array();
   XMLRequest.GET('news/ultime/lastnews.html',query,printNews,error);
  }else{
  clear_status('text');
  put_status('text',xmldoc.responseText); 
  }
 }
 
 function ajx_doNewsDelete() 
 {
 if(!confirm('Sei sicuro di voler eliminare PERMANENTEMENTE questa news?')) return false;
  	var query = new Array();
   		query["id"] = n.titolo.value;

  clear_status('text');
  wait('text'); 
  	
		 XMLRequest.GET('news/elimina/deleteNews.html', query, stateNewsDelete,error);   		
  return false;
 }
 function stateNewsDelete(xmldoc)
 {
  put_status('text',xmldoc.responseText); 
 if(xmldoc.responseText == '<p class="done">News eliminata correttamente</p>') printNews();
 }
 
 function error(xmldoc)
 {
 	xmldoc = xmldoc.responseText; 
 alert(xmldoc);
 }
 /* ******************************* *
  * Guestbook Ajax "method"
  * ******************************* */
 function ajx_doGuestbook(node,par)
 {
   if(!node) return;
  
   if(node == 'delete') {
    if(!confirm('Sei sicuro di voler eliminare PERMANENTEMENTE questa news?')) return false;
     var query = new Array();
     query['id'] = par;
    XMLRequest.GET('guestbook/elimina/eliminaMessaggio.html',query,printGuestbook,error);
   }
   if(node == 'modifica') {
    if(par) {
     var query = new Array();
     query['id'] = par;
    XMLRequest.GET('guestbook/modifica/modificaMessaggio.html',query,printGuestbook,error);
    }else{
    var n = document.forms['frm_editmessage'];
    if(!n) return false;
    
     var query = new Array();
     query['id'] = n.id.value;
     query['username'] = n.username.value;
     query['email'] = n.email.value;
     query['messaggio'] = n.messaggio.value;
          
    XMLRequest.POST('guestbook/modifica/modificaMessaggio.html',query,printGuestbook,error);    
    }
   }
   if(node == 'aggiungi') {
    var n = document.forms['frm_guestbook'];

      if(!n.username.value) {alert('Specifica un nickname');return false;}
      if(n.email.value && !chkRegXp('^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$','i',n.email.value)) {alert('Inserisci un\'email valida!');return false;}
      if(!n.messaggio.value && n.messaggio.value.length < 10) {alert('Inserisci un messaggio di minimo 10 caratteri e massimo 100 caratteri');return false;}

      var query = new Array();            
       query['username'] = n.username.value;
       query['email'] = n.email.value;
       query['messaggio'] = n.messaggio.value;
       
       if(n.code) {
       if(!n.code.value) {alert('Inserisci il codice di verifica;Rispondi alla domanda!'); return false;}
        query['code'] = n.code.value;
       }
     XMLRequest.POST('guestbook/aggiungi/firma-guestbook.html',query,printGuestbook,error);    
   }
  clear_status('text');
  wait('text'); 
   return false;
 }

function printGuestbook(xmldoc)
{
  if(!xmldoc) {
    var query = new Array();
        XMLRequest.GET('guestbook/metal-guestbook.html',query,printGuestbook,error);    
        return;
  }else{
  clear_status('text');
  put_status('text',xmldoc.responseText); 
  var reload = xmldoc.responseText.indexOf('<!-- ~reload -->');
  if(reload > -1) printGuestbook();
 }
}



 /* ******************************* *
  * Rank Ajax "method"
  * ******************************* */
   function ajx_doRank(node,pid,voto)
 {
   if(!node) return;
    if(node == 'vota') {
     var query = new Array();
     query['nodo'] = pid;
     query['voto'] = voto;
    XMLRequest.POST('rank/vota/index.html',query,printRank,error);    
    }
  clear_status('rank');
  wait('rank');     
    return false
  }
  
 function printRank(xmldoc) 
 {
  if(!xmldoc) {
     var query = new Array();

     query['nodo'] =  getPage();
     XMLRequest.GET('rank/media/index.html',query,printRank,error);        
  }else {
  clear_status('rank');
  put_status('rank',xmldoc.responseText); 
  var reload = xmldoc.responseText.indexOf('<!-- ~reload -->');
   if(reload > -1) printRank();  
 }
}
  /* ******************************* *
  * Trivia Ajax "method"
  * ******************************* */
   function ajx_doHint(m)
 {
   if(!m) return false
      
     var query = new Array();
     query['act'] = 'hint'
     query['hint'] = m   
    
    if(m == '50') {
     XMLRequest.POST('/trivia/hint/index.html',query,printmHint,error);     
       clear_status('trivia_sel')
       wait('trivia_sel')
    }else{ 
     XMLRequest.POST('/trivia/hint/index.html',query,printHint,error);     
      clear_status('hintcel') 
      wait('hintcel')
  }
    return false
  }
function printHint(xmldoc) {put_status('hintcel',xmldoc.responseText)}
function printmHint(xmldoc) {put_status('trivia_sel',xmldoc.responseText)}
function checkTrivia() 
{
  var e = getId('qReply')
   if (e && e.type == 'text') {
     if (e.value.length == 0) { alert('Per proseguire con il trivia è necessario inserire una risposta');return false; }
   }else{ 
     var radio = 0
     var radios = document.forms.trivia.elements
     if(!radios) return false
     
     for (var i=0;i<radios.length;i++) {
	          if (radios[i].type == 'radio' && radios[i].name == 'qReply' && radios[i].checked) { var radio = 1;break;}
	    }
      if(radio == 0) { alert('Per proseguire con il trivia è necessario selezionare una risposta');return false;}
    }
    return true
}
/* ************************* *
    * getHTTPvar(string varname)
    * ver: 1.0
    * return:
    * string varresult -  in caso di successo
    * null  - in caso di errore
    * false se non è stata trovata
    *
    *  P.s: only for GET HTTP var
    * ************************ */
function getHTTPvar(n) 
{
  if (!window.location) return null
    var e = window.location.toString()
   var GETvar = e.split('?')
    if(GETvar.length < 2) return null
    
    var GETvar = GETvar[1].split('&')
    for(index in GETvar) {
        var ind = GETvar[index].split('=')      
        alert(ind[0] +' == '+ ind[1])
        if(ind[0] == n) return ind[1]
     }

  return false
}


function getPage() 
{
 if(!window.location) return null
 var page = window.location.toString().split('/')
   var t = page.pop().split('?')
     return t[0].replace('.html','')
} 

