/**
 * Funktionen zum dynamischen Aktualisieren der Suchfelder
 */

/**
 * Fragt URL mittels eines HTTP-Requests ab
 */
function getXMLData( url ){
    if(xmlhhtp = getXMLHttpObject() == false) {
        //alert("Fehler beim Anlegen des XMLHttpObject");
        return;
    }
    xmlhttp.open("GET", url , true);
    xmlhttp.onreadystatechange = handleHttpState;
    xmlhttp.send(null);
}

/**
 * Erzeugt XML-HTTP-Objekt zur Verwendung für URL-Abfragen
 */
function getXMLHttpObject(){
    try{
        xmlhttp = new XMLHttpRequest();
    }catch( error ){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch( error ){
            return false;
        }
    }
}

/**
 * URL erreichbar?
 */
function handleHttpState(){
    if( xmlhttp.readyState == 4 ){
        if( xmlhttp.status == 200 ){
            // daten erfolgreich geladen: starte Verarbeitung
            parseData();
        }else{
            // fehler
            //alert("Fehler beim Abrufen der Daten");
        }
    }
}

/**
 * Rückgabe der Abfrage bearbeiten
 */
function parseData(){
    var xmlDocument = xmlhttp.responseXML;
    if( xmlDocument==null ){
        return;
    }
    var typ = xmlDocument.getElementsByTagName("typ")[0].firstChild.nodeValue;
    switch( typ ){
        case "PRINTER" : {
            set_printer_producer( xmlDocument );
            break;
        }
        case "PRODUCER" : {
            set_producer( xmlDocument );
            break;
        }
        case "CATEGORY" : {
            set_category( xmlDocument );
            break;
        }
        case "PRODUCER_TURBO" : {
            turbo_set_producer( xmlDocument );
            break;
        }
        case "CATEGORY_TURBO" : {
            turbo_set_category( xmlDocument );
            break;
        }
        case "VARIANT" : {
            set_variant( xmlDocument );
            break;
        }
        case "DROPDOWN" : {
            dropdown_set( xmlDocument );
            break;
        }
        case "DISTRIBUTOR_ADMIN" : {
            distributor_alert( xmlDocument )
            break;   
        }
        case "ARTICLE" : {
            distributor_alert( xmlDocument )
            break;            
        }
        case "ARTNR" : {
            artnr_alert( xmlDocument )
            break;            
        }
        case "INVOICEADDRESS" : {
            get_address( xmlDocument );
            break;
        }
        case "DISTRIBUTORSEARCH" : {
            set_distributor_list( xmlDocument );    
            break;   
        }
        case "ARTICLESEARCH" : {
            set_article_list( xmlDocument );    
            break;   
        }
        case "CATEGORY_LEVEL" : {
            set_category_options( xmlDocument );    
            break;
        }
        default : {
            //alert( "Der Typ " + typ + " ist nicht definiert!" );
            try{
                eval( typ)( xmlDocument );
            }catch( e ){
                return;
            }
            break;
        }
    }
}

// Änderung des Herstellers bei Cybis-TiTo-Finder überprüfen
function evaluate_printer_producer(){
    var check_name = document.getElementById("TiToForm").HERST.value;
    if( check_name != "" ){
        getXMLData( "/js/tito.php?producer=" + encodeURI(check_name) );
    }
}
// Änderung des Herstellers bei Cybis-TiTo-Finder durchführen
function set_printer_producer( xmlDocument ){
    var select_obj = document.getElementById("TiToForm").PROD;

    // clear option list
    while( select_obj.length > 0 ){
        select_obj.remove(0);
    }

    // add new options to list
    for(var i=0; i< xmlDocument.getElementsByTagName("option").length; i++){
        var base = xmlDocument.getElementsByTagName("option")[i];

        var new_opt = document.createElement("option");
        new_opt.value = xmlDocument.getElementsByTagName("option")[i].firstChild.nodeValue;
        new_opt.text = xmlDocument.getElementsByTagName("option")[i].firstChild.nodeValue;
        select_obj.options.add(new_opt);
    }
    document.getElementById("TiToForm").PROD.focus();
}

// Änderung des Herstellers bei Suche überprüfen
function evaluate_producer(){
    var producer = document.getElementById("SF_producer").value;
    getXMLData( "/js/search.php?producer=" + encodeURI(producer) );

}
// Änderung des Herstellers bei Suche durchführen
function set_producer( xmlDocument ){
    var producer = document.getElementById("SF_producer").value;
    var select_obj = document.getElementById("SF_producer");

    // clear option list
    while( select_obj.length > 0 ){
        select_obj.remove(0);
    }

    // add new options to list
    for(var i=0; i< xmlDocument.getElementsByTagName("option").length; i++){
        var base = xmlDocument.getElementsByTagName("option")[i];

        var new_opt = document.createElement("option");
        new_opt.value = base.attributes[0].nodeValue;
        new_opt.text = base.firstChild.nodeValue;
        if( producer == base.firstChild.nodeValue ){
            new_opt.selected = "selected";
        }
        if( i == 0 ){
            new_opt.setAttribute( "value", "" );
        }
        select_obj.options.add(new_opt);
    }
}


// Änderung der Produktgruppe bei Suche überprüfen
function evaluate_category(){
    var category = document.getElementById("SF_category").value;
    getXMLData( "/js/search.php?category=" + encodeURI(category) );

}
// Änderung der Produktgruppe bei Suche durchführen
function set_category( xmlDocument ){
    var category = document.getElementById("SF_category").value;
    var select_obj = document.getElementById("SF_category");

    // clear option list
    while( select_obj.length > 0 ){
        select_obj.remove(0);
    }

    // add new options to list
    for(var i=0; i< xmlDocument.getElementsByTagName("option").length; i++){
        var base = xmlDocument.getElementsByTagName("option")[i];

        var new_opt = document.createElement("option");
        new_opt.value = base.attributes[0].nodeValue;
        new_opt.text = base.firstChild.nodeValue;
        if( category == base.attributes[0].nodeValue ){
            new_opt.setAttribute( "selected", "selected" );
        }
        if( i == 0 ){
            new_opt.setAttribute( "value", "" );
        }
        select_obj.options.add(new_opt);
    }
}

/*** Turbolister Funktionen ***/

// Änderung des Herstellers bei Suche überprüfen
function turbo_evaluate_producer(){
    var producer = document.getElementById("turbo_SF_producer").value;
    //alert('turbo_evaluate_producer:' + producer);
    getXMLData( "/js/turbo_search.php?producer=" + encodeURI(producer) );
}

// Änderung des Herstellers bei Suche durchführen
function turbo_set_producer( xmlDocument ){
    var producer = document.getElementById("turbo_SF_producer").value;
    var select_obj = document.getElementById("turbo_SF_producer");

    // clear option list
    while( select_obj.length > 0 ){
        select_obj.remove(0);
    }

    // add new options to list
    for(var i=0; i< xmlDocument.getElementsByTagName("option").length; i++){
        var base = xmlDocument.getElementsByTagName("option")[i];

        var new_opt = document.createElement("option");
        new_opt.value = base.firstChild.nodeValue;
        new_opt.text = base.firstChild.nodeValue;
        if( producer == base.firstChild.nodeValue ){
            new_opt.selected = "selected";
        }
        if( i == 0 ){
            new_opt.setAttribute( "value", "" );
        }
        select_obj.options.add(new_opt);
    }
}

// Änderung der Produktgruppe bei Suche überprüfen
function turbo_evaluate_category(){
    var category = document.getElementById("turbo_SF_category").value;
    getXMLData( "/js/turbo_search.php?category=" + encodeURI(category) );
}


// Änderung der Produktgruppe bei Suche durchführen
function turbo_set_category( xmlDocument ){
    var category = document.getElementById("turbo_SF_category").value;
    var select_obj = document.getElementById("turbo_SF_category");

    // clear option list
    while( select_obj.length > 0 ){
        select_obj.remove(0);
    }

    // add new options to list
    for(var i=0; i< xmlDocument.getElementsByTagName("option").length; i++){
        var base = xmlDocument.getElementsByTagName("option")[i];

        var new_opt = document.createElement("option");
        new_opt.value = base.attributes[0].nodeValue;
        new_opt.text = base.firstChild.nodeValue;
        if( category == base.attributes[0].nodeValue ){
            new_opt.setAttribute( "selected", "selected" );
        }
        if( i == 0 ){
            new_opt.setAttribute( "value", "" );
        }
        select_obj.options.add(new_opt);
    }
}


// Untermenüs überprüfen
function dropdown_check(){
    getXMLData( "/js/dropdown.php" );
}

// Untermenüs anpassen
function dropdown_set( xmlDocument ){
    var nav = document.getElementById( "metanav" );
    nav.removeChild( nav.getElementsByTagName("ul")[0] );
    var xml = xmlhttp.responseText;
    xml = xml.substr( xml.search( /<ul>/ ) );
    xml = xml.substr( 0, xml.search( /<\/document>/ ) );
    nav.innerHTML += xml;

    // advanced suckerfish dropdown menus for everyone as seen at:
    // http://www.htmldog.com/articles/suckerfish/dropdowns/
    if(window.attachEvent){
        var sfEls = document.getElementById("metanav").getElementsByTagName("LI");
            for (var i=0; i<sfEls.length; i++) {
            sfEls[i].onmouseover=function() {
            this.className+=" sfhover";
        }
            sfEls[i].onmouseout=function() {
                this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
            }
        }
    }
}

function check_artnr(field){
    if(document.getElementById("AF_artnr").value!=""){
        getXMLData("/js/ajax_artnr.php?ajax_artnr=" + document.getElementById("AF_artnr").value);
    }
    return true;      
}

function artnr_alert(xmlDocument){
    var alert_txt = xmlDocument.getElementsByTagName("alert_txt")[0].firstChild.nodeValue;
    var field = xmlDocument.getElementsByTagName("field")[0].firstChild.nodeValue;
    if(field!='none'){
        document.getElementById(field).focus();
        document.getElementById(field).select();
    }
    if(alert_txt!="ok"){
        alert(alert_txt);
        return false;
    }
}

