var xmlHttp

var nbsp = 160;		// non-breaking space char
var node_text = 3;	// DOM text node-type
var emptyString = /^\s*$/ ;
var global_valfield;	// retain valfield for timer thread

function showListKey(chiave) { 
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
        alert("Your browser does not support AJAX!");
        return;
    } 
    var url="searchGetListKey.jsp";
    url=url+"?wchiave="+chiave;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

function showListFree() { 
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
        alert("Your browser does not support AJAX!");
        return;
    } 
    
    var url="searchGetListKey.jsp";
    url=url+"?wlingua="+document.forms.formSearch.lingua.value;
    url=url+"&wsearch="+document.forms.formSearch.wsearch.value;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

function showListAdvanced() { 
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
        alert("Your browser does not support AJAX!");
        return;
    } 
    
    var url="searchGetListKey.jsp";
    url=url+"?wchiave="+document.forms.formSearch.chiave.value;
    url=url+"&wtipo="+document.forms.formSearch.tipo.value;
    url=url+"&wcat="+document.forms.formSearch.cat.value;
    url=url+"&wlingua="+document.forms.formSearch.lingua.value;
    url=url+"&wsearch="+document.forms.formSearch.wsearch.value;
    url=url+"&wformato="+document.forms.formSearch.formato.value;
    url=url+"&wtitolo="+document.forms.formSearch.wtitolo.value;
    url=url+"&wautore="+document.forms.formSearch.wautore.value;
    url=url+"&wfreekey="+document.forms.formSearch.wfreekey.value;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

function stateChanged() { 
    if (xmlHttp.readyState==4) { 
        document.getElementById("contenuto").innerHTML=xmlHttp.responseText;
    }
}

/*
 
 Funzioni relative al carrello
 
 */ 

// Aggiunge articolo
function cartAddItem(codItem) { 
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
        alert("Your browser does not support AJAX!");
        return;
    } 
    var url="cartAddItem.jsp";
    url=url+"?wi_coditem="+codItem;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=cartStateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

// Cancella riga carrello
function cartDelItem(number) { 
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
        alert("Your browser does not support AJAX!");
        return;
    } 
    var url="cartDelItem.jsp";
    url=url+"?wc_number="+number;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=cartStateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

// --------------------------------------------
//            validateQta 
// --------------------------------------------

function cartQta(number, qta )  
{
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
        alert("Your browser does not support AJAX!");
        return;
    } 
    var url="cartUpdQta.jsp";
    url=url+"?wc_number="+number;
    url=url+"&wc_qta="+qta;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=cartStateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null); 
} 



// Refresh carrello 
function cartStateChanged() { 
    if (xmlHttp.readyState==4) { 
        fadeup("totale",68,65,54); 
        document.getElementById("cart").innerHTML=xmlHttp.responseText;
    }
}

function GetXmlHttpObject() {
    var xmlHttp=null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}

// -------------------------------------------------------------------------------
// fadeup : effetto visuale per evidenziare la zona della pagina modificata
// -------------------------------------------------------------------------------
function fadeup(elementId,red,green,blue) {
    
    if (red ==255 && green == 255 && blue==255) {
        document.getElementById(elementId).style.backgroundColor = "transparent";
        return true;
    }
    
    document.getElementById(elementId).style.backgroundColor = "rgb("+red+","+green+","+blue+")";
    
    red = red + Math.ceil((255 - red)/10);
    green = green + Math.ceil((255-green)/10);
    blue = blue + Math.ceil((255-blue)/10);
    
    setTimeout("fadeup('"+elementId+"',"+red+","+green+","+blue+")", 20);
    
}


// --------------------------------------------
//                  trim
// Trim leading/trailing whitespace off string
// --------------------------------------------

function trim(str) {
    return str.replace(/^\s+|\s+$/g, '');
}


// --------------------------------------------
//                  setfocus
// Delayed focus setting to get around IE bug
// --------------------------------------------

function setFocusDelayed() {
    global_valfield.focus();
}

function setfocus(valfield) {
    // save valfield in global variable so value retained when routine exits
    global_valfield = valfield;
    setTimeout( 'setFocusDelayed()', 100 );
}


// --------------------------------------------
//                  msg
// Display warn/error message in HTML element.
// commonCheck routine must have previously been called
// --------------------------------------------

function msg(fld,     // id of element to display message in
msgtype, // class to give element ("warn" or "error")
message) // string to display
{
    // setting an empty string can give problems if later set to a 
    // non-empty string, so ensure a space present. (For Mozilla and Opera one could 
    // simply use a space, but IE demands something more, like a non-breaking space.)
    var dispmessage;
    if (emptyString.test(message)) 
        dispmessage = String.fromCharCode(nbsp);    
    else  
        dispmessage = message;
    
    var elem = document.getElementById(fld);
    elem.firstChild.nodeValue = dispmessage;  
    
    elem.className = msgtype;   // set the CSS class to adjust appearance of message
}

// --------------------------------------------
//            commonCheck
// Common code for all validation routines to:
// (a) check for older / less-equipped browsers
// (b) check if empty fields are required
// Returns true (validation passed), 
//         false (validation failed) or 
//         proceed (don't know yet)
// --------------------------------------------

var proceed = 2;  

function commonCheck    (valfield,   // element to be validated
infofield,  // id of element to receive info/error msg
required)   // true if required
{
    if (!document.getElementById) 
        return true;  // not available on this browser - leave validation to the server
    var elem = document.getElementById(infofield);
    if (!elem.firstChild) return true;  // not available on this browser 
    if (elem.firstChild.nodeType != node_text) return true;  // infofield is wrong type of node  
    
    if (emptyString.test(valfield.value)) {
        if (required) {
            msg(infofield, "error", "ERROR: required");  
            setfocus(valfield);
            return false;
        }
        else {
            msg(infofield, "warn", "");   // OK
            return true;  
        }
    }
    return proceed;
}


// --------------------------------------------
//            validatePresent
// Validate if something has been entered
// Returns true if so 
// --------------------------------------------

function validatePresent(valfield,   // element to be validated
infofield ) // id of element to receive info/error msg
{
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
        alert("Your browser does not support AJAX!");
        return;
    } 
    
    var stat = commonCheck(valfield, infofield, true);
    if (stat != proceed) return stat;
    
    msg(infofield, "warn", "");  
    return true;
}








