var xmlHttp = null;
var text = '';
var main = null;
var dialog=0;
var dialogCount=0;
var work=0;
var doReopenOrderbox = 0;
var post="";
var tracking=0;
var errorbox_open = false;
var cartVisible = false;
var forceOpenCart = false;
var trackingboxID = 'orderbox';

function toggleSidebar(x) {
        if (!x) x=0;
        cartX = (cartVisible) ? '-310px' : x + 'px';
        cartVisible = !cartVisible;

        if ($('sidebarWrapper')) $('sidebarWrapper').morph('right:'+cartX+";", { duration: 0.5 });
        if (cartVisible) $('toggleSidebar').title = "Warenkorb ausblenden"; else $('toggleSidebar').title= "Warenkorb einblenden";
}

function share_order(service, city, domainname, products) {
        switch (service) {
                case "twitter" :
                        var url = "http://twitter.com/home?status=" + encodeURIComponent("Ich habe gerade bei " + domainname + " in " + city + " " + products + " bestellt. Lecker :) #fgn");
                        break;
                case "myspace" :
                        var t = encodeURIComponent("Bestellung bei " + domainname + " in " + city);
                        var c = encodeURIComponent("Ich habe gerade bei " + domainname + " in " + city + " " + products + " bestellt. Lecker :)");
                        var u = encodeURIComponent("http://" + domainname);
                        var url = "http://www.myspace.com/index.cfm?fuseaction=postto&t=" + t + "&c=" + c + "&u=" + u;
                        break;
                case "facebook" :
                        var t = encodeURIComponent("Ich habe gerade bei " + domainname + " in " + city + " " + products + " bestellt. Lecker :)");
                        var u = encodeURIComponent("http://" + domainname);
                        var url = 'http://www.facebook.com/sharer.php?u=' + u + '&t=' + t;
                        break;
                case "studivz" :
                        var desc = encodeURIComponent("Habe gerade bei " + domainname + " online bestellt. Lecker :)");
                        var u = encodeURIComponent("http://" + domainname);
                        var url = 'http://www.meinvz.net/Link/ExternLink/Url/?u=' + u + '&desc=' + desc;
                        break;
        }
        window.open(url);
        return false;
}

function var_dump(obj) {
        if(typeof obj == "object") {
                return "Type: "+typeof(obj)+((obj.constructor) ? "\nConstructor: "+obj.constructor : "")+"\nValue: " + obj;
        } else {
                return "Type: "+typeof(obj)+"\nValue: "+obj;
        }
}

al=new Image();al.src=domain+"res/pics/ajaxload.gif";
pm=new Image();pm.src=domain+"res/pics/plusminus.png";
trash=new Image();trash.src=domain+"res/pics/trash.png";

function getRandom() {
        return parseInt(Math.random()*1000000)+1;
}

function openProductbox(el, productID, size) {
        stamp = new Date() * getRandom();
        return hs.htmlExpand(el, {
                src: domain + 'ajax_dialog.php?productID=' + productID + '&size=' + size + '&sid=' + sid + '&' + stamp,
                objectType: 'ajax',
                wrapperClassName: 'productbox'
        });
}



xmlHttp = Try.these(
  function() { return new XMLHttpRequest() },
  function() { return new ActiveXObject('Msxml2.XMLHTTP') },
  function() { return new ActiveXObject('Microsoft.XMLHTTP') }
) || false;

/*
if (window.ActiveXObject)  {
        try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
                try {
                        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                }
        }
} else if (window.XMLHttpRequest) {
        try {
                xmlHttp = new XMLHttpRequest();
        } catch (e) {
        }
}
*/

function reflowHS() {
        try {
                hs.getExpander().reflow();
        } catch(e){}; // Gr√∂√üe der Highslide-Box an neuen Inhalt anpassen
}

function resetHS() {
        try {
                hs.getExpander().reflow();

                hs.page = hs.getPageSize();
                var exp = hs.getExpander();
                var y = exp.y;

                y.pos = y.tpos - y.cb + y.tb;
                y.scroll = hs.page.scrollTop;
                y.clientSize = hs.page.height;
                exp.justify(y, true);

                // neue y-Position setzen
                y.setPos(y.pos);

                // dimming-Container neu setzen
                hs.setDimmerSize(exp);
        } catch(e){}; // Größe der Highslide-Box an neuen Inhalt anpassen
}

// Legt ein fertiges Produkt in den Warenkorb.
function addCart(id,groesse) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                dialog=0;
                if ($('ajaxloadCart') != null) $('ajaxloadCart').innerHTML = "<img src=\"" +domain+"res/pics/ajaxload.gif\" alt=\"\">";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_add_produkt.php?id=' + id + '&groesse=' + groesse + '&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadCart;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("addCart("+id+","+groesse+")", 100);
}

// Legt das temporre Produkt in den Warenkorb (nach Beendigung des Dialoges).
function transfer_produkt(s) {
        if (!s) s=0;
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                dialog=0;
                if ($('ajaxloadCart') != null) $('ajaxloadCart').innerHTML = "<img src=\"" + domain + "res/pics/ajaxload.gif\" alt=\"\">";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_transfer_produkt.php?sid=' + sid + '&s=' + s + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadCart;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("transfer_produkt()", 100);
}

// Bricht den Dialog ab und lscht das temporre Produkt.
function abbrechen() {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                dialog=0;
                work=1;
                xmlHttp.open('GET', domain + 'ajax_abbrechen.php?sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = donothing;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("abbrechen()", 100);
}

// erstellt ein temporres Produkt und ffnet den Optionen-Dialog.
function addCart2(id,groesse) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                dialog=1;
                work=1;
                xmlHttp.open('GET', domain + 'ajax_new_produkt.php?id=' + id + '&groesse=' + groesse + '&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadCart;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("addCart2("+id+","+groesse+")", 100);
}

// erstellt ein temporres Produkt und ffnet den Optionen-Dialog.
function changeCart(id) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                dialog=1;
                work=1;
                xmlHttp.open('GET', domain + 'ajax_change_produkt.php?id=' + id + '&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadCart;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("changeCart("+id+")", 100);
}

// entfernt ein Produkt aus dem Warenkorb
function delCart(id) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                dialog=0;
                if ($('ajaxloadCart') != null) $('ajaxloadCart').innerHTML = "<img src=\""+domain+"res/pics/ajaxload.gif\" alt=\"\">";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_del_produkt.php?id=' + id + '&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadCart;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("delCart("+id+")", 100);
}

// Aktualisiert den Warenkorb
function listCart() {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                dialog=0;
//                var cart = document.getElementById("cart");
//                cart.innerHTML = "<div style=\"text-align:center; padding:0px; margin:0px;\"><br><br><img src=\"/res/pics/ajaxload.gif\" alt=\"Die Seite wird geladen...\"></div>";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_list_cart.php?sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadCart;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("listCart()", 100);
}

// Fgt eine Zutat hinzu
function addZutat(id) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                $('ajaxload').innerHTML = "<img src=\"" + domain + "res/pics/ajaxload.gif\" alt=\"\">";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_add_zutat.php?id=' + escape(id) + '&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadZutaten;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("addZutat("+id+")", 100);
}

// Fgt eine Zutat hinzu
function setMiscValue(id, value, callback) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                work=1;
                xmlHttp.open('GET', domain + 'ajax_' + id + '.php?val=' + value + '&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = function (){
                        if(typeof window[callback] == 'function') window[callback]();
                }
                xmlHttp.send(null);
        } else if (work==1) setTimeout("setMiscValue('"+id+"', '"+value+"', '"+callback+"')", 100);
}

// Fgt eine Zutat hinzu
function change_groesse(id) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                $('ajaxload').innerHTML = "<img src='" + domain + "res/pics/ajaxload.gif' alt=''>";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_change_groesse.php?id=' + id + '&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadZutaten;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("change_groesse("+id+")", 100);
}

// Entfernt eine Zutat
function delZutat(id) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                $('ajaxload').innerHTML = "<img src='" + domain + "res/pics/ajaxload.gif' alt=''>";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_del_zutat.php?id=' + escape(id) + '&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadZutaten;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("delZutat("+id+")", 100);
}

// Bricht den Dialog ab und lscht das temporre Produkt.
function menge_plus() {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                $('ajaxload').innerHTML = "<img src='" + domain + "res/pics/ajaxload.gif' alt=''>";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_plus.php?sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadZutaten;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("menge_plus()", 100);
}

function setSessionValue(varname,wert, varname2, wert2) {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                work=1;
                if (varname2 != null && varname2 != "")
                {
                        xmlHttp.open('GET', domain + 'ajax_setSessionValue.php?key='+varname+'&val='+escape(wert)+'&key2='+varname2+'&val2='+escape(wert2)+'&sid=' + sid + '&' + stamp, true);
                }
                else
                {
                        xmlHttp.open('GET', domain + 'ajax_setSessionValue.php?key='+varname+'&val='+escape(wert)+'&sid=' + sid + '&' + stamp, true);
                }

                if (doReopenOrderbox == 1) { xmlHttp.onreadystatechange = reopenOrderbox; }
                else                                                                                          { xmlHttp.onreadystatechange = donothing; }
                xmlHttp.send(null);
        } else if (work==1) setTimeout("setSessionValue('"+varname+"', '"+wert+"')", 100);
}

function ordertracking() {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                work=1;
                xmlHttp.open('GET', domain + 'ajax_tracking.php?r=1&sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadTracking;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("ordertracking()", 100);
}

// Bricht den Dialog ab und lscht das temporre Produkt.
function menge_minus() {
        stamp = new Date() * getRandom();
        if (xmlHttp && work==0) {
                var ajaxload = document.getElementById("ajaxload");
                ajaxload.innerHTML = "<img src='" + domain + "res/pics/ajaxload.gif' alt=''>";
                work=1;
                xmlHttp.open('GET', domain + 'ajax_minus.php?sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadZutaten;
                xmlHttp.send(null);
        } else if (work==1) setTimeout("menge_minus()", 100);
}

// Bricht den Dialog ab und lscht das temporre Produkt.
function send_order() {
        //if (el=="") var el = 'orderbox';
        //else alert(el);
        //trackingboxID = el;
//        if (cb > 0) {
//                $('orderform').submit();
//        } else {
                post="";
                var formular = $('orderform');

                // Alle Input-Felder auslesen (auch Checkboxen und Radio-Buttons)
                fields = formular.getElementsByTagName("INPUT");
                for (var i=0; i<fields.length; i++) {
                        var tmp="";
                        tmp = fields[i].name + "=" + escape(fields[i].value) + "&";
                        if (fields[i].type == "radio" || fields[i].type == "checkbox") {
                                if (fields[i].checked==false) tmp="";
                        }
                        if (fields[i].name == "orderform_zahlungsart" && fields[i].value == "clickandbuy" && fields[i].checked==true) {
                                $('orderform').submit();
                                return false;
                        }
                        post += tmp;
                }

                // Textareas auslesen
                fields = formular.getElementsByTagName("TEXTAREA");
                for (var i=0; i<fields.length; i++) {
                        post += fields[i].name + "=" + escape(fields[i].value) + "&";
                }

                // Selectfelder auslesen
                fields = formular.getElementsByTagName("SELECT");
                for (var i=0; i<fields.length; i++) {
                        options = fields[i].getElementsByTagName("OPTION");
                        for (var j=0; j<options.length; j++) {
                                if (options[j].selected==true) post += fields[i].name + "=" + options[j].value;
                        }
                }

                transferOrder();
//        }
}

function transferOrder() {
                var text = "<div style='overflow:hidden;height:50px;text-align:center;'>";
                text += "<p><img src='/main-res2/pics/submit.gif' alt='' height='15'></p>\n";
                //text += "<br/>";
                text += "<p>Die Bestellung wird &uuml;bermittelt ...</p>";
                text += "</div>";

                $('orderbox').innerHTML = text;
                resetHS();
                setTimeout("post_order()", 2000);
}

function post_order() {
        if (xmlHttp && work==0) {
                work=1;
                // Variable post wird in send_order() erzeugt
                xmlHttp.open('POST', domain + 'ajax_order_send.php?sid=' + sid + '&' + stamp, true);
                xmlHttp.onreadystatechange = reloadOrderbox; //reloadOrderbox;
                xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

                xmlHttp.send(post);
                //$('orderbox').innerHTML=post;
        } else if (work==1) setTimeout("post_order()", 100);
}


function reloadOrderbox() {
        //if (!trackingboxID) var trackingboxID = 'orderbox';
        if (xmlHttp.readyState==4) {
                work=0;
                text = xmlHttp.responseText;
                $('orderbox').innerHTML=text;
//                var ajaxload = document.getElementById("ajaxload");
//                ajaxload.innerHTML = "";
                resetHS();
                setTimeout('ordertracking()', 1000);

        }
}

function reloadCart() {
        if (xmlHttp.readyState==4) {
                work=0;
                text = xmlHttp.responseText;
                var fehler = text.split("|||");
                if (text != "" && fehler[0] != "FEHLER" && ! errorbox_open) $('cart').innerHTML = text;
                else if (fehler[0] == "FEHLER") errorbox(fehler[1], fehler[2]);
                if ($('ajaxloadCart') != null) $('ajaxloadCart').innerHTML="&nbsp;";

                if ($('toggleSidebar')) {
                        if (!cartVisible) {
                                toggleSidebar(0);
                                setTimeout('toggleSidebar()', 2000);
                        }
                }

        }
}

function errorbox (id,size) {
//        errorbox_open = true;
        hs.htmlExpand($('errorbox'), {
                src: domain + 'errorrbox.html?pid='+id,
                objectType: 'ajax',
                wrapperClassName: 'productbox'
        });
//openProductbox($('errorbox'),id,size);
//        work=1;
//        xmlHttp.open('GET', domain + 'ajax_dialog.php?productID=' + id + '&size=' + size + '&sid=' + sid + '&' + stamp, true);
//        xmlHttp.onreadystatechange = reloadErrorbox;
//        xmlHttp.send(null);
}

function reloadErrorbox() {
        if (xmlHttp.readyState==4) {
                work=0;
                text = xmlHttp.responseText;
                //$('errorbox1').innerHTML = "Das Produkt ist leider nicht mehr verf&uuml;gbar.";
                $('productbox').innerHTML = text;

                //resetHS();
                reflowHS();
                errorbox_open = false;
        }
}

function reloadZutaten() {
        if (xmlHttp.readyState==4) {
            work=0;
                text = xmlHttp.responseText;
                $('productbox').innerHTML = text;
                $('ajaxload').innerHTML = "";

                //resetHS();
                reflowHS();
        }
}

/*
function reloadTracking() {
        if (xmlHttp.readyState==4) {
                var styledisplay;
                var zaehler;
                work=0;
                var text = xmlHttp.responseText;
                var textteile = text.split('|');

                if (textteile[0] != tracking && textteile[0] >= 0) {
                        $('tracking').innerHTML += textteile[1];
                        resetHS();
                   }
                tracking = textteile[0];
                if (textteile[0] != 3 && textteile[0] != 4) setTimeout('ordertracking()', 10000);
        }
}
*/

function reloadTracking() {
        if (xmlHttp.readyState==4) {
                var styledisplay;
                var zaehler;
                work=0;
                var text = xmlHttp.responseText;
                var textteile = text.split('|');

                if (textteile[0] != tracking && textteile[0] >= 0)
                {
                        //var arr = document.getElementsByClassName('status');
                        var arr = $$('.status');
                                for (var i = 0; i < arr.length; i++)
                        {
                                arr[i].className = 'status1';
                        }

                        $('tracking').innerHTML += textteile[1];
                        resetHS();
           }
                tracking = textteile[0];
        if (tracking == 3 || tracking == 4 || tracking == 7)
        {
                        var arr = $$('.status');
                        //var arr = document.getElementsByClassName('status');
                        for (var i = 0; i < arr.length; i++)
                        {
                                arr[i].className = 'status1';
                        }
        }

        if (textteile[0] != 3 && textteile[0] != 4 && textteile[0] != 7) setTimeout('ordertracking()', 10000);
        }
}



function donothing() {
        if (xmlHttp.readyState==4) {
                work=0;
        }
}


function reopenOrderbox() {
        if (xmlHttp.readyState==4) {
                work=0;
                doReopenOrderbox = 0;
                hs.htmlExpand($('checkout'), {objectType: 'ajax', wrapperClassName: 'orderbox'});
        }
}


function checkForm()
{
        if ($('orderform') != null)
        {
                var errors = 0;
                var elements = new Array('orderform_vorname', 'orderform_nachname', 'orderform_strasse', 'orderform_hausnr', 'orderform_ort', 'orderform_vorwahl', 'orderform_rufnummer', 'orderform_agb_widerruf');
                if (email_req == '1') { elements.push('orderform_email'); }

                for (var i = 0; i < elements.length; i++)
                {
                        elementName = elements[i];
                        if ($(elementName))
                        {
                                        element = $(elementName);

                                if (element.value == "")
                                {
                                        errors++;
                                        element.addClassName('require');
                                }
                                else if (element.type == 'checkbox' && !element.checked)
                                {
                                        errors++;
                                        element.addClassName('require');
                                }
                                else
                                {
                                        element.removeClassName('require');
                                }
                        }
                }

                $('orderform-act').style.display = "block";
                $('orderform-inact').style.display = "none";

                var mindestOK = 1;

                if ($('orderbox_mindest') != null || $('checkCart') == null || $('checkCart').length < 1)        { mindestOK = 0; }

                if (errors > 0 || mindestOK == 0)
                {
                        $('orderform-act').style.display = "none";
                        $('orderform-inact').style.display = "block";
                }

        }
}


// nach dem √ñffnen des HS-Fenster
function onHSexpanded(element)
{
        var str = "";

        /*for (var key in element) {
    str = str + key + "=" + (element[key])+"| ";
        }*/

        if (element.src) str = element.src.toString();  // a ODER src


        // wenn es sich um die Orderbox handelt:
        if (str.match("order") != null)
        {
                listCart();
                checkForm();
        }
        else if (str.match("closed") != null)
        {
                if ($('closedbox_lzp')) { $('closedbox_lzp').focus(); }
        }
}


// nach dem Schlie√üen des HS-Fenster
function onHSclosed(element)
{
        var str = "";
        if (element.src) str = element.src.toString();  // a ODER src

        // wenn es sich um die Orderbox handelt:
        if (str.match("order") != null)
        {
                listCart();
        }

}
