var AJAXSESSION = 0;

/*
## title
## msg
#### buttons: {...}
#### icon: ##
## fn 
## width: // default: auto
*/
function messageBox(params) { //#title, msg, icon) {
    jQuery('#ajaxMessageBox').dialog('destroy');

    var btnConfig = { 
        "Ok": function() { 
            jQuery(this).dialog("close"); 
        } 
    };
    if (params.buttons) {
        btnConfig = params.buttons
    }
    
    jQuery('body').append('<div id="ajaxMessageBox" title="" style="display:none;">'+params.msg+'</div>');
    jQuery('#ajaxMessageBox').dialog({
        title: params.title,
        autoOpen: true,
        resizable: false,
        minHeight:60,
        modal: true,
        width: params.width || 300,
        buttons: btnConfig,
        close: function() {
            jQuery(this).remove();
            if (params.fn) {
                params.fn();
            }
        }
    });


    jQuery('#ajaxMessageBox').dialog('open');
}

function inputBox(params) { //#title, msg, icon) {
    jQuery('#ajaxInputBox').dialog('destroy');
    
    jQuery('body').append('<div id="ajaxInputBox" title="">'+params.msg+'<p><input id="ajaxInputBoxValue" type="text"></p></div>');
    
    if (params.initialValue) {
        jQuery('#ajaxInputBoxValue').val(params.initialValue);
    }
    
    jQuery('#ajaxInputBox').dialog({
        autoOpen: true,
        resizable: false,
        minHeight:60,
        modal: true,
        title: params.title,
        buttons: [ 
            {
                text: TEXTS.js_btn_cancel,
                click: function() { 
                    //alert(jQuery('#ajaxInputBox input').val());
                    jQuery(this).dialog("close"); 
                    jQuery(this).remove();
                }
            },
            {
                text: TEXTS.js_btn_ok,
                click:  function() { 
                    var callback = params.fn;
                    var value    = jQuery('#ajaxInputBoxValue').val();
                    jQuery(this).dialog("close");
                    jQuery(this).remove();
                    if (callback) {
                        callback(value);
                    }
                } 
            }
        ]
    });
}

function ajaxRequest(params) {
    /*
        {
            url: ...,
            data: {...},
            onSuccess: funcRef,
            onFailure: funcRef
        }
    */
    
    jQuery.ajax({
        url: params.url,
        data: params.data,
        type: 'post',
        dataType: params.dataType || "json",
        success: params.onSuccess,
        error: params.onFailure
    });
}

function to_json(obj) {
    return JSON.stringify(obj);
}
function from_json(jsonstring) {
    return JSON.parse(jsonstring);
}

function libLoginHelper(form) {
    var elemLogin = form.user;
    var elemLoginValue = "";
    var elemPass = form.pass;
    var elemPassValue = "";
    
    if (elemLogin && elemPass) {
        elemLoginValue = elemLogin.value;
        elemPassValue = elemPass.value;
        elemPassValue = jQuery.md5(m_session + elemPassValue);
    }
    
    if (!elemLoginValue.length) {
        return false;
    }
    
    var postdata = {
        method : 'libLoginHelper',
		id : 0,
		params : {
            'userid': elemLoginValue,
            'pass': elemPassValue
        }
	};
    
    ajaxRequest({
        url: myinterface_lib,
        onSuccess: function (data) {
				try {
	                if (data['_data']['userid']) {
                        elemLogin.value = data['_data']['userid'];
                    } else {
                        
                    }
                    form.submit();
                    return true;
				} catch(e) {
                    return false;   
				} 
        },
        onFailure: function () {
        },
        data: to_json(postdata)
    });
    return false;
}

function libToggleElement(id) {
    var el = document.getElementById(id);
    if (el) {
        if (el.style.display == 'block') {
            el.style.display = 'none';
        } else {
            el.style.display = 'block';
        }
        
    }
}

function libDlgChgCartPosition(script, sessionid, itemid, posidx, oldcount) {
    var newcount = oldcount;
    
    inputBox({
        title: TEXTS.js_dlg_chgcount_title,
        msg: TEXTS.js_dlg_chgcount_text,
        initialValue: oldcount,
        fn: function(value) {
            if (isNaN(value)) {
                alert(TEXTS.js_dlg_chgcount_error);
                return;
            }
            
            libShowWaitingWnd();
            libChgCartPosition(script, sessionid, itemid, posidx, value);
        }
    });
    return;
}

function libChgCartPosition(script, sessionid, itemid, posidx, newcount) {
    var params = {
        'posidx': posidx
    };
    params[itemid] = newcount;
    
    ajaxRequest({
        url: script + "?chgcart," + sessionid + "," + itemid,
        data: params,
        onSuccess: function (data) {
            window.location.reload();
        },
        onFailure: function () {
            window.location.reload();
        }
    });
}

function libPreprocessSearchterm() {
    var elem = document.getElementById('suchbegriff');
    if (elem) {
        elem.value = elem.value.replace(/\-/, " ");
        return true;
    }
    
    return false;
}

function libAjaxShowcart() {
    var elem = document.getElementById('minicart');
    if (!elem) {
        return;
    }
    
    var postdata = {
        method: 'myajaxshowcart'
    };

    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json(postdata),
            onSuccess: function (data) {
                
                try {
                    //data = eval('('+trans.responseText+')'); // JSON "parsen"
                    
                    elem.innerHTML = data['_output'];
                    
                    jQuery.cookie('shipping_prodsum', data.shippinginfo.prodsum);
                    jQuery.cookie('shipping_fracht', data.shippinginfo.fracht);
                    
                    detailPage_UpdateShipping();
                    
                    return true;
                } catch(e) {
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            } 
        });
        
    } catch(e) {
        //debugger;
    } 
}

function libCheckItemCount(count, wkmin, wkpack) {
    var test = parseInt(count);
    if (isNaN(test)) {
        return 0;
    }
    
    if (wkmin) {
        if (test >= wkmin) {
            // nix
        } else {
            test = wkmin;
        }
    }
    
    if (wkpack) {
        var rest = test % wkpack;
        if (rest) {
            // Nächsthöhere Menge wählen
            test = test + (wkpack - rest);
        }
    }
    
    return test;
}



var LIB_WKAUTOCHANGED = 0;
function libCloseWaitingWnd() {
    if (document.getElementById('ajaxwaitinginwk')) {
        //document.getElementById('ajaxwaitinginwk').style.visibility = "hidden";
        document.getElementById('ajaxwaitinginwk').style.display = "none";
    }
    
    jQuery('#ajaxWaitingDialog').dialog('close');
    
}

function libShowWaitingWnd(title, text) {
    libCloseWaitingWnd();
    
    if (!title) { title = TEXTS.html_printingform_wait; }
    if (!text)  { text  = TEXTS.html_printingform_wait_text; }
    
    jQuery('#ajaxWaitingDialog').dialog('destroy');
    jQuery('#ajaxWaitingDialog').remove();
    
    jQuery('body').append('<div id="ajaxWaitingDialog" title="'+title+'" style="display:none;"><img src="'+m_catalog_abs+'/bilder/layoutbilder/ajax-loader-dialog.gif"><p>'+text+'</p></div>');
    
    jQuery('#ajaxWaitingDialog').dialog({
        autoOpen: true,
        resizable: false,
        minHeight:60,
        modal: true,
        width:300
    });
    
    jQuery('#ajaxWaitingDialog img').css('float', 'right');
    
    /*if (!title) {
        title = TEXTS.html_printingform_wait;
    }*/
    //jQuery('#ajaxWaitingDialog').dialog('open');
}

function libAjaxFavGet(callback) {

    // Per Default rechts in ein div rendern
    if (!callback) {
        //mask_on('#containerFavouritesBox');
        callback = libAjaxFavGet_DefaultCallback;
        if (jQuery.cookie('myhasfavs') === '0') {
            libAjaxFavGet_DefaultCallback([]);
            return;
        }
    }
    
    var postdata = {
        method: 'myfavget',
        params: {}
    };
    
    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json(postdata),
            onSuccess: function (res) {
                
                try {
                    //data = eval('('+trans.responseText+')'); // JSON "parsen"
                    
                    callback(res.data);
                    
                    return true;
                } catch(e) {
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            } 
        });
        
    } catch(e) {
        //debugger;
    } 
}

function libAjaxFavGet_DefaultCallback(items) {
    if (items) {
        var out = "";
        var max = 3;
        
        jQuery.cookie('myhasfavs', items.length, { path: '/' });
        
        if (items.length) {
            out = '<table class="favs">';
            for (var i = 0; i < items.length; i++) {
                if (i >= max) {
                    out += '<tr>'+
                            '<td colspan="2" align="center"><em>' + TEXTS.favourites_more.replace(/\$count/, items.length - max) + '</em></td>'+
                        '</tr>';
                    break;
                }
                var item = items[i];
                var img = (item.IMG.length > 2 ? '<img src="' + m_catalog_abs + '/' + item.IMG + '" alt="" border="">' : '');
                out += '<tr>'+
                            '<td class="img"><a href="'+m_scripturl+'?showd'+item.PGID + ',' +m_session+','+item.ITEMID+'">' + img + '</a></td>'+
                            '<td class="descr">' + item.DESCR + '&nbsp;(<a href="'+m_scripturl+'?showd'+item.PGID + ',' +m_session+','+item.ITEMID+'">' + TEXTS.generic_show + '</a>)</td>'+
                        '</tr>';
            }
            
            out += '<tr>'+
                        '<td colspan="2" align="center"><div class="jBtn fullblock"><a class="weiter" href="'+m_scripturl+'?show5,'+m_session+'"><span>'+TEXTS.favourites_show+'</span></a></div></td>'+
                    '</tr>';
            
            out += '</table>'
        } else {
            out = '<p><em>'+TEXTS.favourites_empty+'</em></p>';
        }
        
        jQuery('#containerFavouritesBox').html(
            //html_get_defaultbox(TEXTS.favourites_title, out)
            out
        ); //.show('slide', { direction: 'up' }, 1000);
    }
    
    //mask_off();
}

function libAjaxFavAdd(params) {
    var itemid = params.itemid;
    var pgid   = params.pgid;
    
    if (!m_userid) {
        libAjaxFavAdd_notRegistered(params);
        return;
    }
    
    jQuery.cookie('myhasfavs', '', { path: '/' }); // Erzwingen einer neuen Ajax-Abfrage
    
    var postdata = {
        method: 'myfavadd',
        params: {
            items: [
                {
                    itemid: itemid
                }
            ]
        }
    };

    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json(postdata),
            onSuccess: function (data) {
                
                try {
                    //data = eval('('+trans.responseText+')'); // JSON "parsen"
                    
                    libAjaxFavAdd_onSuccess();
                    
                    return true;
                } catch(e) {
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            } 
        });
        
    } catch(e) {
        //debugger;
    } 
}

function libAjaxFavAdd_onSuccess() {

    libAjaxFavGet();

    var msg = '<div>'+TEXTS.favourites_add_msg+'</div><br>';
    
    messageBox({
        title: TEXTS.placecart_successdlg_title,
        msg: msg +
                            '<table style="width:100%">'+
                            '<tr>'+
                            '<td valign="bottom">'+
                                '<div class="jBtn"><a class="zurueck" href="javascript:void(0)" onclick="jQuery(\'#ajaxMessageBox\').dialog(\'close\');"><span>'+
                                    TEXTS.placecart_successdlg_weitereinkaufen+
                                '</span></a></div>'+
                            '</td>'+
                            '<td valign="bottom" align="right">'+
                                '<div class="jBtn"><a class="anfragen" href="'+m_scripturl+'?show5,'+m_session+'"><span>'+TEXTS.favourites_show+'</span></a></div>'+
                            '</td>'+
                            '</tr>'+
                            '</table>',
        width:400,
        buttons: []
    });
}

function libAjaxFavAdd_notRegistered(params) {
    var itemid = params.itemid;
    var pgid   = params.pgid;

    var msg = '<div>'+TEXTS.generic_not_registered_msg+'</div><br>';
    
    messageBox({
        title: TEXTS.generic_not_registered_title,
        msg: msg +
                            '<table style="width:100%">'+
                            '<tr>'+
                            '<td valign="bottom">'+
                                '<div class="jBtn"><a class="zurueck" href="javascript:void(0)" onclick="jQuery(\'#ajaxMessageBox\').dialog(\'close\');"><span>'+
                                    TEXTS.abort+
                                '</span></a></div>'+
                            '</td>'+
                            '<td valign="bottom" align="right">'+
                                '<div class="jBtn"><a class="weiter" href="javascript:void(0)" onclick="libShowLoginBox({type:\'js\', js_function: \'libAjaxFavAdd\', js_params: { itemid:\''+itemid+'\', pgid:\''+pgid+'\' }})"><span>'+TEXTS.myesska_3+'</span></a></div>'+
                                '<div class="jBtn"><a class="weiter" href="'+m_scripturl+'?showbynameKundenanmeldung1,'+m_session+',,,olref=detailpage&olarg0=showd'+pgid+'&olarg2='+itemid+'"><span>'+TEXTS.myesska_2+'</span></a></div>'+
                            '</td>'+
                            '</tr>'+
                            '</table>',
        width:400,
        buttons: []
    });
}

function libAjaxPlacecart(itemid, params) { //hasVariants, elForm, unit, ) {
    /*
        params.itemtype = default | variantbaseitem | bulkitem
        params.elForm   = ...
        params.unit     = Stk. | Meter
    */
    var selectedItems = new Array();
    var orderfields = {}; // Zusatzattribute, zb für Massenartikel
    
    // Fehlermeldung wenn keine Varianten angegeben wurden
    var strErrTitle = TEXTS.html_placecart_info_title;
    var strErrMsg = TEXTS.ajaxplacecart_countinvalid2;
    
    if (params.itemtype == 'default') {
        // Fehlermeldung wenn keine Listenauswahl angegeben wurden
        strErrTitle = TEXTS.html_placecart_info_title;
        strErrMsg = TEXTS.item_select_list;
        
        wktest(itemid);
        var elCount = params.elForm.elements["a__"+itemid];
        var count = 1;
        
        if (elCount) {
            count = parseInt(elCount.value);
        }
        
        if (!count) {
            messageBox({
               title: TEXTS.html_placecart_info_title,
               msg: TEXTS.ajaxplacecart_countinvalid1
            });
            return;
        }
        
        var bError = false;
        var list1 = ""; 
        var list2 = ""; 
        if (params.elForm.elements["l1__" + itemid]) {
            var idx = params.elForm.elements["l1__" + itemid].selectedIndex;
            if (idx > 0) {
                list1 = params.elForm.elements["l1__" + itemid].options[idx].value;
            } else {
                bError = true;
            }
        }
        if (params.elForm.elements["l2__" + itemid]) {
            var idx = params.elForm.elements["l2__" + itemid].selectedIndex;
            if (idx > 0) {
                list2 = params.elForm.elements["l2__" + itemid].options[idx].value;
            } else {
                bError = true;
            }
        }
        
        if (!bError) {
            selectedItems.push({ 
                itemid: itemid, 
                count: count,
                list1: list1,
                list2: list2
            });
        }
    } else if (params.itemtype == 'variantbaseitem') {
        wktest(itemid);
        
        // Einzelne Varianten eintragen!
        for (var i = 0; i < params.elForm.elements.length; i++) {
            var el = params.elForm.elements[i];
            if (el.name) {
                if (el.name.search(/^a__/) == 0) {
                    var id = el.name.substr(3);
                    var count = parseInt(el.value);
                    var list1 = ""; 
                    var list2 = ""; 
                    if (count > 0) {
                        selectedItems.push({ 
                            itemid: id, 
                            count: count,
                            list1: list1,
                            list2: list2
                        });
                    }
                }
            }
        }
       
    } else if (params.itemtype == 'bulkitem') {
        // Fehlermeldung wenn keine Listenauswahl angegeben wurden
        strErrTitle = TEXTS.html_placecart_info_title;
        strErrMsg = TEXTS.item_select_list;
        
        var inputs = jQuery('input', params.elForm);
        var selects = jQuery('select', params.elForm);
        
            
        for (var i = 0; i < inputs.length; i++) {
            var name = inputs[i].name;
            var value = inputs[i].value;
            orderfields[name+''] = value;
            //if (value == '') {bError = true;}
        }
        for (var i = 0; i < selects.length; i++) {
            var name = selects[i].name;
            var value = selects[i].value;
            orderfields[name+''] = value;
            //if (value == '') {bError = true;}
        }
        
        if (!inputs.length && !selects.length) {
            // Fehler
            bError = true;
        }
        
        if (jQuery('#search_items_price_'+itemid).html() == '') { bError = true; }
        if (jQuery('#search_items_inwk_'+itemid).css() == 'none') { bError = true; }
        
        if (!bError) {
        
            var elCount = params.elForm.elements["a__"+itemid];
            var count = 0;
            if (elCount) {
                count = parseInt(elCount.value);
            }
            
            if (!count) {
                messageBox({
                   title: TEXTS.html_placecart_info_title,
                   msg: TEXTS.ajaxplacecart_countinvalid1
                });
                return;
            }
        
            selectedItems.push({ 
                itemid: itemid, 
                count: count,
                list1: '',
                list2: ''
            });
        }
        
    } else {
        alert('unkown item type');
    }
    
    if (!selectedItems.length) {
        selectDetailTab('detailTabVariants');
        window.setTimeout(function() {
        
        messageBox({
           title: strErrTitle,
           msg: strErrMsg
        });
        
        }, 500);
        
        return false;
    }
    
    libShowWaitingWnd();
    
    var postdata = {
        method: 'myajaxplacecart',
        params: {
            items: [
            ]
        }
    };
    
    
    var userinfo = "";
    if (params.unit == 'Stk.') {
        userinfo = "Stück";
    } else if (params.unit == 'Meter') {
        userinfo = "Gesamtlänge";
    }
    orderfields.USERINFO = userinfo;
    
    
    
    
    
    for (var i = 0; i < selectedItems.length; i++) {
        postdata['params']['items'].push(
            {
                'itemid': selectedItems[i]['itemid'],
                'count': selectedItems[i]['count'],
                'price': '', // Nicht unterstützt!!!
                'list1': selectedItems[i]['list1'],
                'list2': selectedItems[i]['list2'],
                'myajaxplacecartobj': (params.itemtype == 'bulkitem' ? 'bulkitem' : ''), // = normaler Artikel
                'orderfields': orderfields
            }
        );
    }
    
    try {
        
        ajaxRequest({
            url: myinterface_lib,
            data: to_json(postdata),
            onSuccess: function(data) {
                AJAXSESSION = data._session;
                document.cookie = "SHOPPILOT_KEY="+AJAXSESSION+"; Path=/; ";
                
                myinterface = myinterface.replace(/,\d+$/, ","+AJAXSESSION);
                myinterface_lib = myinterface_lib.replace(/,\d+$/, ","+AJAXSESSION);
                m_session = AJAXSESSION;
                
                if (data._errors) {
                    if (data._errors.length) {
                        var strErrTitle = TEXTS.html_placecart_info_title;
                        var strErrMsg = data._errors.join("\n");
                        
                        selectDetailTab('detailTabVariants');
                        window.setTimeout(function() {
                        
                            libCloseWaitingWnd();
                            messageBox({
                               title: strErrTitle,
                               msg: strErrMsg
                            });
                        
                        }, 500);
                        
                        return false;
                        
                    }
                }
                
                if (params.itemtype == 'variantbaseitem') {
                    for (var i = 0; i < selectedItems.length; i++) {
                        var id = selectedItems[i].itemid;
                        var elems = document.getElementsByName('a__'+id);
                        if (elems.length) {
                            elems[0].value = "0";
                        }
                    }
                }
                
                var title = TEXTS.html_placecart_info_title;
                var msg = TEXTS.html_placecart_info_message;
                
                var elemwk = document.getElementById('miniwk');
                if (elemwk) {
                    elemwk.setAttribute("class", "box_miniwk_ne"); // FF
                    elemwk.setAttribute("className", "box_miniwk_ne"); // IE...
                }

                libAjaxShowcart();
                libCloseWaitingWnd();
                libAjaxPlacecart_onSuccess();
            },
            onFailure: function () {
                libCloseWaitingWnd();
            }
        });
        

    } catch(e) {
        libCloseWaitingWnd();
        //alert(e);
    } 
    
}

function libAjaxPlacecart_BulkItem(itemid, hashvariants, elForm, unit) {
    var selectedItems = new Array();
    
    if (!hashvariants) {
        wktest(itemid);
        
        var elCount = elForm.elements["a__"+itemid];
        var count = 1;
        
        if (elCount) {
            count = parseInt(elCount.value);
        }
        
        if (!count) {
            messageBox({
               title: TEXTS.html_placecart_info_title,
               msg: TEXTS.ajaxplacecart_countinvalid1
            });
            return;
        }
        
        var list1 = ""; 
        var list2 = ""; 
        if (elForm.elements["l1__" + itemid]) {
            var idx = elForm.elements["l1__" + itemid].selectedIndex;
            if (idx > 0) {
                list1 = elForm.elements["l1__" + itemid].options[idx].value;
            } else {
                messageBox({
                   title: TEXTS.html_placecart_info_title,
                   msg: TEXTS.item_select_list
                });
                return;
            }
        }
        if (elForm.elements["l2__" + itemid]) {
            var idx = elForm.elements["l2__" + itemid].selectedIndex;
            if (idx > 0) {
                list2 = elForm.elements["l2__" + itemid].options[idx].value;
            } else {
                messageBox({
                   title: TEXTS.html_placecart_info_title,
                   msg: TEXTS.item_select_list
                });
                return;
            }
        }
        
        selectedItems.push({ 
            itemid: itemid, 
            count: count,
            list1: list1,
            list2: list2
        });
        
    } else {
        wktest(itemid);
        
        // Einzelne Varianten eintragen!
        for (var i = 0; i < elForm.elements.length; i++) {
            var el = elForm.elements[i];
            if (el.name) {
                if (el.name.search(/^a__/) == 0) {
                    var id = el.name.substr(3);
                    var count = parseInt(el.value);
                    var list1 = ""; 
                    var list2 = ""; 
                    if (count > 0) {
                        selectedItems.push({ 
                            itemid: id, 
                            count: count,
                            list1: list1,
                            list2: list2
                        });
                    }
                }
            }
        }
       
    }
    
    if (!selectedItems.length) {
        messageBox({
           title: TEXTS.html_placecart_info_title,
           msg: TEXTS.ajaxplacecart_countinvalid2
        });
        return;
    }
    
    if (0) {
        if (document.getElementById('ajaxwaitinginwk')) {
            //document.getElementById('ajaxwaitinginwk').style.visibility = "visible";
            document.getElementById('ajaxwaitinginwk').style.display = "block";
        }
        
    } else {
        libShowWaitingWnd();
    }
    
    var postdata = {
        method: 'myajaxplacecart',
        params: {
            items: [
            ]
        }
    };
    
    
    var userinfo = "";
    if (unit == 'Stk.') {
        userinfo = "Stück";
    } else if (unit == 'Meter') {
        userinfo = "Gesamtlänge";
    }
    
    var orderfields = {};
    {
        orderfields.USERINFO = userinfo;
        
        var inputs = jQuery('input', elForm);
        var selects = jQuery('select', elForm);
        
        for (var i = 0; i < inputs.length; i++) {
            var name = inputs[i].name;
            var value = inputs[i].value;
            orderfields[name+''] = value;
        }
        for (var i = 0; i < selects.length; i++) {
            var name = selects[i].name;
            var value = selects[i].value;
            orderfields[name+''] = value;
        }
        
    }
    
    for (var i = 0; i < selectedItems.length; i++) {
        postdata['params']['items'].push(
            {
                'itemid': selectedItems[i]['itemid'],
                'count': selectedItems[i]['count'],
                'price': '', // Nicht unterstützt!!!
                'list1': selectedItems[i]['list1'],
                'list2': selectedItems[i]['list2'],
                'myajaxplacecartobj': 'bulkitem', // = normaler Artikel
                'orderfields': orderfields
            }
        );
    }
    
    try {
        
        ajaxRequest({
            url: myinterface_lib,
            data: to_json(postdata),
            onSuccess: function(data) {
                AJAXSESSION = data._session;
                document.cookie = "SHOPPILOT_KEY="+AJAXSESSION+"; Path=/; ";
                
                myinterface = myinterface.replace(/,\d+$/, ","+AJAXSESSION);
                myinterface_lib = myinterface_lib.replace(/,\d+$/, ","+AJAXSESSION);
                m_session = AJAXSESSION;
                
                if (hashvariants) {
                    for (var i = 0; i < selectedItems.length; i++) {
                        var id = selectedItems[i].itemid;
                        var elems = document.getElementsByName('a__'+id);
                        if (elems.length) {
                            elems[0].value = "0";
                        }
                    }
                }
                
                var title = TEXTS.html_placecart_info_title;
                var msg = TEXTS.html_placecart_info_message;
                
                var elemwk = document.getElementById('miniwk');
                if (elemwk) {
                    elemwk.setAttribute("class", "box_miniwk_ne"); // FF
                    elemwk.setAttribute("className", "box_miniwk_ne"); // IE...
                }

                libAjaxShowcart();
                libCloseWaitingWnd();
                libAjaxPlacecart_onSuccess();
            },
            onFailure: function () {
                libCloseWaitingWnd();
            }
        });
        

    } catch(e) {
        libCloseWaitingWnd();
    } 
    
}

function libAjaxPlacecart_onSuccess() {

    var msg = '<div>'+TEXTS.placecart_successdlg_text+'</div><br>';
    if (LIB_WKAUTOCHANGED) {
        LIB_WKAUTOCHANGED = 0;
        msg = msg + '<p>' + TEXTS.html_placecart_autowkpack1 + '</p>';
    }

    messageBox({
        title: TEXTS.placecart_successdlg_title,
        msg: msg +
                            '<table style="width:100%">'+
                            '<tr>'+
                            '<td valign="bottom">'+
                                '<div class="jBtn"><a class="zurueck" href="javascript:void(0)" onclick="jQuery(\'#ajaxMessageBox\').dialog(\'close\');"><span>'+TEXTS.placecart_successdlg_weitereinkaufen+'</span></a></div>'+
                            '</td>'+
                            '<td valign="bottom" align="right">'+
                                '<div class="jBtnBlueL fullblock"><a class="bestellen" href="'+m_scripturl+'?showwk,'+m_session+'"><span>'+TEXTS.placecart_successdlg_bestellen+'</span></a></div>'+
                                '<div class="jBtn fullblock"><a class="anfragen" href="'+m_scripturl+'?show'+m_pgid_form_inquiry+','+m_session+'"><span>'+TEXTS.placecart_successdlg_anfragen+'</span></a></div>'+
                            '</td>'+
                            '</tr>'+
                            '</table>',
        width:400,
        buttons: []
    });
}

function libAjaxPlacecartDirectItem(itemid, count, price, pHashOrderfields) {
    var selectedItems = new Array();
    
    selectedItems.push({ 
        itemid: itemid, 
        count: count,
        list1: '',
        list2: ''
    });
    
    if (!selectedItems.length) {
        messageBox({
           title: TEXTS.html_placecart_info_title,
           msg: TEXTS.ajaxplacecart_countinvalid2
        });
        return;
    }
    
    libShowWaitingWnd();
    window.setTimeout("libCloseWaitingWnd()",2000);
    
    var postdata = {
        method: 'myajaxplacecart',
        params: {
            items: [
            ]
        }
    };
    
    for (var i = 0; i < selectedItems.length; i++) {
        postdata['params']['items'].push(
            {
                'itemid': selectedItems[i]['itemid'],
                'count': selectedItems[i]['count'],
                'price': '', // Nicht unterstützt!!!
                'list1': selectedItems[i]['list1'],
                'list2': selectedItems[i]['list2'],
                'myajaxplacecartobj': 'reorder', // = normaler Artikel
                'orderfields': //{ // benutzerdef. Felder für Auftragspositionen
                    pHashOrderfields
                //}
            }
        );
    }
    
    try {
        ajaxRequest({
            url: myinterface_lib,
            onSuccess: function (data) {
                try {
                    AJAXSESSION = data._session;
                    document.cookie = "SHOPPILOT_KEY="+AJAXSESSION+"; Path=/; ";
                    
                    myinterface = myinterface.replace(/,\d+$/, ","+AJAXSESSION);
                    myinterface_lib = myinterface_lib.replace(/,\d+$/, ","+AJAXSESSION);
                    m_session = AJAXSESSION;

                    
                    var title = TEXTS.html_placecart_info_title;
                    var msg = TEXTS.html_placecart_info_message;
                    
                    var elemwk = document.getElementById('miniwk');
                    if (elemwk) {
                        elemwk.setAttribute("class", "box_miniwk_ne"); // FF
                        elemwk.setAttribute("className", "box_miniwk_ne"); // IE...
                    }

                    
                    libAjaxShowcart();
                    
                } catch(e) {
                } 
            },
            onFailure: function () {
            },
            data: to_json(postdata)
        });
    } catch(e) {
    } 
    
}

function libRegister_CheckLogin(login, pass1, pass2, customertype, submittingform) {
    var postdata = {
        method: 'libRegister_CheckLogin',
        params: {
            login: login,
            pass1: (pass1.length ? jQuery.md5(m_session + pass1) : "" ),
            pass2: (pass2.length ? jQuery.md5(m_session + pass2) : "" ),
            customertype: customertype
        }
    };
    
    libShowWaitingWnd();
    //window.setTimeout("libCloseWaitingWnd()",2000);

    try {
        ajaxRequest({
            url: myinterface_lib,
            onSuccess: function (data) {
                try {
                    if (data._data.status) {
                        if (submittingform) {
                            submittingform.submit();
                        }
                    } else {
                        libCloseWaitingWnd();
                        messageBox({
                            title: 'Fehler',
                            msg: data._data.msg
                        });
                    }
                    
                    return true;
                } catch(e) {
                    libCloseWaitingWnd();
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                libCloseWaitingWnd();
                //debugger;
            },
            data: to_json(postdata)
        });
    } catch(e) {
        //debugger;
    } 
}

function libRegister_CheckEmail(email) {
    var postdata = {
        method: 'libRegister_CheckEmail',
        params: {
            email: email
        }
    };
    
    libShowWaitingWnd();

    try {
        ajaxRequest({
            url: myinterface_lib,
            onSuccess: function (data) {
                try {
                    if (data._data.status) {
                        var form = document.getElementById('userdataform');
                        if (form) {
                            form.submit();
                        }
                    } else {
                        libCloseWaitingWnd();
                        messageBox({
                            title: 'Fehler',
                            msg: data._data.msg
                        });
                    }
                    
                    return true;
                } catch(e) {
                    libCloseWaitingWnd();
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            },
            data: to_json(postdata)
        });
    } catch(e) {
        //debugger;
    } 
}

function libRegister_CheckStep2() {
    var elemEmail = document.getElementById('eMail');
    var elemGEWORBEN = document.getElementById('GEWORBEN');
    
    var email = (elemEmail ? elemEmail.value : '');
    var GEWORBEN = (elemGEWORBEN ? elemGEWORBEN.value : '');

    var postdata = {
        method: 'libRegister_CheckStep2',
        params: {
            email: email,
            geworben: GEWORBEN
        }
    };
    
    libShowWaitingWnd();

    try {
        ajaxRequest({
            url: myinterface_lib,
            onSuccess: function (data) {
                try {
                    if (data._data.status) {
                        var form = document.getElementById('userdataform');
                        if (form) {
                            form.submit();
                        }
                    } else {
                        libCloseWaitingWnd();
                        messageBox({
                            title: 'Fehler',
                            msg: data._data.msg
                        });
                    }
                    
                    return true;
                } catch(e) {
                    libCloseWaitingWnd();
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            },
            data: to_json(postdata)
        });
    } catch(e) {
        //debugger;
    } 
}

function libAltorder_findUserAccount(email, name, vorname) {
    
    var postdata = {
        method: 'libAltorder_findUserAccount',
        params: {
            email: email,
            name: name,
            vorname: vorname
        }
    };
    
    libShowWaitingWnd();

    try {
        ajaxRequest({
            url: myinterface_lib,
            onSuccess: function (data) {
                try {
                    if (data._data.status) {
                    
                        /*var fn = function(buttonId, text) {
                            if (buttonId == 'ok') {
                                libShowWaitingWnd();
                                window.location.href= m_scripturl.replace(/https:/, 'http:') + "?showbynameLogin," + m_session;
                            } else {
                                libShowWaitingWnd();
                                var form = document.getElementById('userdataform');
                                if (form) {
                                    form.submit();
                                }
                            }
                        }*/
                    
                        if (data._data.msg != '') {
                            libCloseWaitingWnd();
                            messageBox({
                                title: 'Hinweis',
                                msg: data._data.msg,
                                width: 400,
                                buttons: {
                                    "Ohne Login fortfahren": function() { 
                                        jQuery(this).dialog("close"); 
                                        libShowWaitingWnd();
                                        var form = document.getElementById('userdataform');
                                        if (form) {
                                            form.submit();
                                        }
                                    },"Jetzt einloggen": function() { 
                                        jQuery(this).dialog("close"); 
                                        libShowWaitingWnd();
                                        window.location.href= m_scripturl.replace(/https:/, 'http:') + "?showbynameLogin," + m_session;
                                    }
                                }
                            });
                        } else {
                            libShowWaitingWnd();
                            var form = document.getElementById('userdataform');
                            if (form) {
                                form.submit();
                            }
                        }
                    
                        
                    } else {
                        libCloseWaitingWnd();
                        messageBox({
                            title: 'Fehler',
                            msg: data._data.msg
                        });
                    }
                    
                    return true;
                } catch(e) {
                    libCloseWaitingWnd();
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            },
            data: to_json(postdata)
        });
    } catch(e) {
        //debugger;
    } 
}

function libAltorder_setCustomertype(type, redirecturl) {
    var postdata = {
        method: 'libAltorder_setCustomertype',
        params: {
            customertype: type
        }
    };
    
    libShowWaitingWnd();

    try {
        ajaxRequest({
            url: myinterface_lib,
            onSuccess: function (data) {
                try {
                    
                    if (data._data.status) {
                    
                        window.location.href = redirecturl;
                        
                    } else {
                        libCloseWaitingWnd();
                        messageBox({
                            title: 'Fehler',
                            msg: data._data.msg
                        });
                    }
                    
                    return true;
                } catch(e) {
                    libCloseWaitingWnd();
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            },
            data: to_json(postdata)
        });
    } catch(e) {
        //debugger;
    } 
}

function libAjaxAboDelete(userid, login, itemid, bulkitemid, returnto) {
    libShowWaitingWnd();

    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'libSparAbo_DeleteAbo',
                params: {
                    userid: userid,
                    login: login,
                    itemid: itemid,
                    bulkitemid: bulkitemid
                }
            }),
            onSuccess: function (data) {
                try {
                    AJAXSESSION = data._session;
                    document.cookie = "SHOPPILOT_KEY="+AJAXSESSION+"; Path=/; ";
                    
                    myinterface = myinterface.replace(/,\d+$/, ","+AJAXSESSION);
                    myinterface_lib = myinterface_lib.replace(/,\d+$/, ","+AJAXSESSION);
                    m_session = AJAXSESSION;

                    if (returnto == 'cart') {
                        window.location.href = m_scripturl + "?showwk," + m_session;
                    } else {
                        window.location.reload();
                    }
                    
                    
                } catch(e) {
                } 
            },
            onFailure: function () {
            }
        });
    } catch(e) {
    } 
    
    return;
    
}

function libAjaxAboCreate(interval, status, pParams) {
    pParams.order_interval = interval;
    pParams.status = status;
    
    libShowWaitingWnd();
    window.setTimeout("libCloseWaitingWnd()",2000);

    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'libSparAbo_CreateAbo',
                params: pParams
            }),
            onSuccess: function (data) {
                try {
                    AJAXSESSION = data._session;
                    document.cookie = "SHOPPILOT_KEY="+AJAXSESSION+"; Path=/; ";
                    
                    myinterface = myinterface.replace(/,\d+$/, ","+AJAXSESSION);
                    myinterface_lib = myinterface_lib.replace(/,\d+$/, ","+AJAXSESSION);
                    m_session = AJAXSESSION;

                    window.location.href = m_scripturl + "?showwk," + m_session;
                    
                } catch(e) {
                } 
            },
            failure: function () {
            }
        });
    } catch(e) {
    } 
    
    return;
    
}


function libAjaxAboChange(interval, itemcount, itemid, bulkitemid, userid) {
    libShowWaitingWnd();
    
    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'libSparAbo_Change',
                params: {
                    userid: userid,
                    itemid: itemid, 
                    bulkitemid: bulkitemid,
                    order_interval: interval,
                    order_intervalunit: 'm', // momentan gibts noch nichts anderes
                    itemcount: itemcount
                }
            }),
            onSuccess: function (trans) {
                var data; 
                try {
                    data = eval('('+trans.responseText+')'); // JSON "parsen"
                    
                    AJAXSESSION = data._session;
                    document.cookie = "SHOPPILOT_KEY="+AJAXSESSION+"; Path=/; ";
                    
                    myinterface = myinterface.replace(/,\d+$/, ","+AJAXSESSION);
                    myinterface_lib = myinterface_lib.replace(/,\d+$/, ","+AJAXSESSION);
                    m_session = AJAXSESSION;
                    
                    libCloseWaitingWnd();

                    window.location.reload();
                } catch(e) {
                    libCloseWaitingWnd();
                } 
            },
            onFailure: function () {
                libCloseWaitingWnd();
            }
        });
    } catch(e) {
        libCloseWaitingWnd();
    } 
    
    return;
    
}

function libAjaxPlacecart_Hose_Userinfo(itemid, hashvariants, elForm) {
    var unit = 'Stk.'; // 'Stk.' || 'Meter'
    
    var html =  '<div id="libAjaxPlacecart_Hose_Userinfo" title="">'+
                '<p>'+TEXTS.hose_select_title+'</p>'+
                '<input type="radio" name="unit" value="Meter" checked="checked">&nbsp;'+TEXTS.hose_select_option1+'<br>'+
                '<input type="radio" name="unit" value="Stk.">&nbsp;'+TEXTS.hose_select_option2+'<br>'+
                '</div>';
    jQuery('body').append(html);
    jQuery('#libAjaxPlacecart_Hose_Userinfo').dialog({
        autoOpen: true,
        resizable: false,
        minHeight:60,
        modal: true,
        width: 400,
        title: TEXTS.html_printingform_select,
        buttons: [ 
            {
                text: TEXTS.abort,
                click: function() { jQuery(this).dialog("close"); }
            },
            {
                text: TEXTS.hose_select_continue,
                click: function() { 
                    unit = jQuery('#libAjaxPlacecart_Hose_Userinfo input[name=unit]:checked').val();
                    jQuery(this).dialog("close");
                    //libAjaxPlacecart(itemid, hashvariants, elForm, unit);
                    libAjaxPlacecart(itemid, {
                        itemtype: (hashvariants ? 'variantbaseitem' : 'default'),
                        elForm: elForm,
                        unit: unit
                    });
                }
            },
        ],
        close: function() {
            jQuery(this).remove();
        }
    });
}

function libGuthaben_RedeemVoucher(voucherid, userid, login, sessionid) {
    libShowWaitingWnd();
    
    var postdata = {
        method: 'libGuthaben_RedeemVoucher',
        params: {
            voucherid: voucherid,
            userid: userid,
            login: login,
            sessionid: sessionid
        }
    };

    try {
        ajaxRequest({
            url: myinterface_lib,
            onSuccess: function (data) {
                try {
                    var elem = document.getElementById('balance');
                    
                    var msg = data._data.msg;
                    
                    if (data._data.status) {                        
                        window.location.reload();
                        return;
                    } else {
                        libCloseWaitingWnd();
                        msg = "Beim Einlösen des Gutscheins trat ein Fehler auf.<br>Bitte überprüfen Sie den Gutscheincode.";
                    }
                    
                    messageBox({
                       title: 'Gutschein einlösen',
                       msg: msg,
                       fn: function () {
                            if (data._data.status) {
                                window.location.reload();
                            }
                       }
                    });
                    
                    return true;
                } catch(e) {
                    return false;   
                } 
            },
            onFailure: function () {
            },
            data: to_json(postdata)
        });
    } catch(e) {
    } 
}

function libAjaxDispatcherSet(dispatcher, callback) {
    libShowWaitingWnd();
    
    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'libDispatcher_Set',
                params: {
                    dispatcher: dispatcher
                }
            }),
            onSuccess: function (data) {
                try {
                    AJAXSESSION = data._session;
                    document.cookie = "SHOPPILOT_KEY="+AJAXSESSION+"; Path=/; ";
                    
                    myinterface = myinterface.replace(/,\d+$/, ","+AJAXSESSION);
                    myinterface_lib = myinterface_lib.replace(/,\d+$/, ","+AJAXSESSION);
                    m_session = AJAXSESSION;

                    jQuery.cookie('dispatcher', data._data.dispatcher);
                    jQuery.cookie('dispatcher_changed', 1);
                    
                    window.location.reload();
                    
                    /*jQuery.cookie('shipping_zone', data._data.zoneid);
                    
                    if (callback) {
                        callback();
                    }
                    
                    libCloseWaitingWnd();*/
                    
                } catch(e) {
                } 
            },
            onFailure: function () {
            }
        });
    } catch(e) {
    } 
    
    return;
    
}

function libAjaxShippingZoneSet(zoneid, callback) {
    libShowWaitingWnd();
    
    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'libShippingZone_Set',
                params: {
                    zoneid: zoneid
                }
            }),
            onSuccess: function (data) {
                try {
                    AJAXSESSION = data._session;
                    document.cookie = "SHOPPILOT_KEY="+AJAXSESSION+"; Path=/; ";
                    
                    myinterface = myinterface.replace(/,\d+$/, ","+AJAXSESSION);
                    myinterface_lib = myinterface_lib.replace(/,\d+$/, ","+AJAXSESSION);
                    m_session = AJAXSESSION;

                    jQuery.cookie('shipping_zone', data._data.zoneid);
                    
                    if (callback) {
                        callback();
                    }
                    
                    libCloseWaitingWnd();
                    
                } catch(e) {
                } 
            },
            onFailure: function () {
            }
        });
    } catch(e) {
    } 
    
    return;
    
}

function formatPrice(p) {
    if (TEXTS.lang == 'se') {
        return jQuery.sprintf('%0.2f SEK', p).replace(/\./, ',');
    } else {
        return jQuery.sprintf('&euro; %0.2f', p).replace(/\./, ',');
    }
}

/* JS Variante der preis::myfp Funktion*/
function myfp(price, priceab) {
    price = String(price).replace(/,/g, '.');
    
    //if (!price) return TEXTS.variant_price_info;
    
    var steuersatz = CONST.taxes[0];
    
    var price_brutto = '';
    
    if (price) {
        price_brutto = formatPrice(price * (100. + steuersatz) / 100.);
        price = formatPrice(price);
        
        if (1 || TEXTS.lang == 'de' || TEXTS.lang == 'xx' || TEXTS.lang == 'en' || TEXTS.lang == 'se') {
            return '<div class="price '+TEXTS.lang+'">'+
                '<table cellspacing="0" cellpadding="0">'+
                '<tr>'+
                '    <td class="netto">'+
                '        '+(priceab ? '<span class="pre">' + TEXTS.search_items_staffelfrom + '</span>' : '') +
                '        <span class="value">'+price+'</span>'+
                '    </td>'+
                '</tr>'+
                '<tr>'+
                '    <td class="brutto">'+
                '        <span class="pre">'+TEXTS.price_brutto+':</span>'+
                '        <span class="value">'+price_brutto+'</span>'+
                '    </td>'+
                '</tr>'+
                //'<tr><td class="versand"><a class="linkversandkosten" href="$ssp::xxpath?showbynameVersandkosten,$ssp::xxsession">|.language::myget('info_shipping_spedition_cart_label').qq|</a></td></tr>'+
                '</table>'+
                '</div>';
            
        } 
    } else {
        price = '<div style="font-weight:normal; letter-spacing:-1px;">'+TEXTS.variant_price_info+'</div>';
        
        if (1 || TEXTS.lang == 'de' || TEXTS.lang == 'xx' || TEXTS.lang == 'en' || TEXTS.lang == 'se') {
            return '<div class="price '+TEXTS.lang+'">'+
                '<table cellspacing="0" cellpadding="0">'+
                '<tr>'+
                '    <td class="netto">'+
                '        <span class="value">'+price+'</span>'+
                '    </td>'+
                '</tr>'+
                '<tr>'+
                '    <td class="brutto">'+
                '        <span class="pre"></span>'+
                '        <span class="value">&nbsp;</span>'+
                '    </td>'+
                '</tr>'+
                //'<tr><td class="versand"><a class="linkversandkosten" href="$ssp::xxpath?showbynameVersandkosten,$ssp::xxsession">|.language::myget('info_shipping_spedition_cart_label').qq|</a></td></tr>'+
                '</table>'+
                '</div>';
            
        } 
    }
    
    /*else {
        #return main::fp($price);
        return qq|
            <div class="price">
            <table cellspacing="0" cellpadding="0">
            <tr>
                <td class="netto">
                    |.($priceab ? qq|<span class="pre">| . language::myget('search_items_staffelfrom'). "</span>" : '').
                    qq|<span class="value">| . main::fp($price).qq|</span>
                </td>
            </tr>
            <tr><td class="versand"><a class="linkversandkosten" href="$ssp::xxpath?showbynameVersandkosten,$ssp::xxsession">|.language::myget('info_shipping_spedition_cart_label').qq|</a></td></tr>
            </table>
            </div>
        |;
    }
*/
}

function html_get_defaultbox(title, content) {
    return '<table cellspacing="0" cellpadding="0" style="" class="box2 contact">'+
'<tbody><tr>'+
    '<td nowrap="" class="hl">&nbsp;</td>'+
    '<td class="hc"><h3 class="hch3">'+title+'</h3></td>'+
    '<td nowrap="" class="hr">&nbsp;</td>'+
'</tr>'+
'<tr>'+
    '<td class="cl"></td>'+
    '<td class="cc">'+
        content +
    '</td>'+
    '<td class="cr"></td>'+
'</tr>'+
'<tr>'+
    '<td class="fl"></td>'+
    '<td valign="top" class="fc"></td>'+
    '<td class="fr"></td>'+
'</tr>'+
'</tbody></table>';
}



function libShowLoginBox(execafterlogin) {

    // execafterlogin ist optional, falls angegeben, muss ein Objekt für execAfterReload übergeben werden!
    // Die dort angegebene Funktion wird autom. ausgeführt, nachdem die Seite neu geladen wurde.
    /*
        Also zum Beispiel:
        
        {
            type: 'js',
            js_function: 'alert',
            js_params: 'hello world'
        }
    */

    //jQuery('#ajaxLoginBox').dialog('destroy');

    var btnConfig = [ 
        {
            text: TEXTS.useraccount_login_submit_label,
            click: function() { 
                libShowLoginBox_submit(execafterlogin);
            }
        },
        {
            text: TEXTS.abort,
            click: function() { 
                jQuery(this).dialog("close"); 
            } 
        }
    ];
    
    // Die Box wird jetzt in globals::printpagefooter fix (aber nicht sichtbar) ausgegeben
    // Grund: andernfalls werden zumindest im FF die gespeicherten Passwörter nicht korrekt eingetragen!
    
    /*jQuery('body').append(' <form id="ajaxLoginBox" action="#" onsubmit="return false;" autocomplete="on">'+
                                '<table>'+
                                '<tr><td>Login</td><td><input type="text" name="user" class="required" minlength="2"></td></tr>'+
                                '<tr><td>Passwort</td><td><input type="password" name="pass" class="required" minlength="2"></td></tr>'+
                                '<tr><td colspan="2" class="status"></td></tr>'+
                                '</table>'+
                            '</form>');*/
    jQuery('#ajaxLoginBox').dialog({
        title: TEXTS.useraccount_login_submit_label,
        autoOpen: true,
        resizable: false,
        minHeight:60,
        modal: true,
        width: 300,
        buttons: btnConfig,
        close: function() {
        }
    });

    jQuery('#ajaxLoginBox input').keydown(function(event) {
        if (event.keyCode == 13) { // ENTER
            libShowLoginBox_submit();
        }
    });

    jQuery('#ajaxLoginBox').dialog('open');
    jQuery('#ajaxLoginBox').validate({
        debug: true
    });
}

function libShowLoginBox_submit(execafterlogin) {
    if (jQuery('#ajaxLoginBox').valid()) {
    
        var login = jQuery('#ajaxLoginBox input[name="user"]').val();
        var pass  = jQuery('#ajaxLoginBox input[name="pass"]').val();
        
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'mylogin',
                params: {
                    login: login,
                    pass:  crypt(pass)
                }
            }),
            onSuccess: function(resp) {
                if (resp.data.loginstate == 1) {
                    // Login ok!
                    
                    // Cookie setzen!
                    //alert(resp.data.login + '|' + resp.data.password);
                    jQuery.cookie('SHOPPILOT_USERID', resp.data.login + '|' + resp.data.password, { 
                        path: '/', 
                        expires: 9999,
                        raw: true  // Damit | unverändert gespeichert wird!
                    });
                    
                    // In Cookie speichern, dass ein Artikel in die Merkliste eingetragen werden muss.
                    // Wird ausgeführt, nachdem die Seite neu geladen wurde!
                    if (execafterlogin) {
                        execAfterReload(execafterlogin);
                    }
                    
                    libShowWaitingWnd();
                    window.location.reload();
                } else {
                    jQuery('#ajaxLoginBox .status').html('<div class="error">'+TEXTS.login_error_msg+'</div>');
                }
                //jQuery('#ajaxLoginBox').dialog("close"); 
            },
            onFailure: function(resp) {
                jQuery('#ajaxLoginBox').dialog("close"); 
            }
        });
    
        
        
    }
}

function libAjaxLogin() {
    
}

function libAjaxLogin_Ok() {

}

function libAjaxLogin_Error() {

}

function setBookmark(link, title) {
    if (window.sidebar) {
        // firefox
        window.sidebar.addPanel(title,link,'');
    } else if(window.opera && window.print) {
        // opera
        var elem = document.createElement('a');
        elem.setAttribute('href',link);
        elem.setAttribute('title',title);
        elem.setAttribute('rel','sidebar');
        elem.click();
    } else if(document.all) {
        // ie
        window.external.AddFavorite(link,title);
    }
}

function mask_on(elSelector) {
    var maskid = jQuery.md5(elSelector);
    jQuery('body').append('<div id="'+maskid+'" class="jQueryMask">');
    
    var maskHeight = jQuery(document).height();
    var maskWidth = jQuery(window).width();
    var maskTop = 0;
    var maskLeft = 0;

    if (elSelector) {
        maskHeight = jQuery(elSelector).outerHeight();
        maskWidth = jQuery(elSelector).outerWidth();
        maskTop = jQuery(elSelector).offset().top;
        maskLeft = jQuery(elSelector).offset().left;
    }
    
    //Set height and width to mask to fill up the whole screen
    jQuery('#'+maskid).css({
        'position':'absolute',
        'width':maskWidth,
        'height':maskHeight,
        'top':maskTop,
        'left':maskLeft
    });
     
    //transition effect    
    //jQuery('#mask').fadeIn(5000);   
    jQuery('#'+maskid).fadeTo(500,0.2);  
}

function mask_off(elSelector) {
    var maskid = jQuery.md5(elSelector);
    jQuery('#'+maskid).fadeOut(1);
}

function ahetestfunc() {
    
}

function crypt(text) {
    var out = new Array;
    for (var i = 0; i < text.length; i++) {
        out.push( (text.charCodeAt(i) + i) ^ (50+i) );
    }
    return out;
}

function execAfterReload(params) {
    //params.type = js | redirect | reload;
    // js:
        //params.js_function = '';
        //params.js_params   = param-obj;
    // redirect:
        //params.redirect_url = '...';
        
    var task = {
        type: '',
        js_function: '',
        js_params: '',
        redirect_url: ''
    };
    
    if (params.type == 'js') {
        task.type = 'js';
        task.js_function = params.js_function;
        task.js_params   = params.js_params;
    } else if (params.type == 'redirect') {
        task.type = 'redirect';
        task.redirect_url = params.redirect_url;
    } else if (params.type == 'reload') {
        // Nichts zu tun
        task.type = 'reload';
    } else {
        // Error
        return;
    }

    var tasks = jQuery.cookie('exec_once');
    var empty = true;
    if (tasks) {
        if (tasks.length) {
            empty = false;
        }
    }
    if (empty) {
        tasks = new Array();
    } else {
        tasks = from_json(tasks);
    }
    tasks.push(task);
        
    jQuery.cookie('exec_once', to_json(tasks));
}

function execAfterReload_process() {
    var tasks = jQuery.cookie('exec_once');
    
    var empty = true;
    if (tasks) {
        if (tasks.length) {
            empty = false;
        }
    }
    if (empty) {
        tasks = new Array();
    } else {
        tasks = from_json(tasks);
    }
    
    while (tasks.length) {
        var task = tasks.shift();
        jQuery.cookie('exec_once', to_json(tasks)); // Rest für spätere Ausführung speichern
        
        if (task == 'reload') {
            window.location.reload();
            return;
        } else if (task == 'redirect') {
            window.location.href = task.redirect_url;
            return;
        } else {
            try {
                //http://stackoverflow.com/questions/359788/javascript-function-name-as-a-string
                window[task.js_function](task.js_params);
            } catch(e) {
                alert("error");
            }
        }
    }
}

function scrollToElemById(id) {
    var el = jQuery('#'+id);
    if (el) {
        var x = el.offset().top - 100; // 100 provides buffer in viewport
        jQuery('html,body').animate({scrollTop: x}, 500);
        return 1;
    }
    return 0;
}

function selectDetailTab(tabid) {
    if (scrollToElemById('detailTabs')) {
        jQuery('#detailTabs').tabs('select', '#'+tabid);
    }
}

function renderItemsByCategory(params) {
    // 8380
    
    mask_on(params.renderTo.content);
    
    var postdata = {
        method: 'getItemsByCategory',
        params: { 
            catid: params.catid,  
            start: params.start,
            limit: params.limit
        }
    };
    
    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json(postdata),
            onSuccess: function (res) {
                
                try {
                    //data = eval('('+trans.responseText+')'); // JSON "parsen"
                    
                    params.renderFromItemlist = {
                        items: res.data.items,
                        hasprev: res.data.hasprev,
                        hasnext: res.data.hasnext
                    };
                    renderItems(params);
                    
                    return true;
                } catch(e) {
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            } 
        });
        
    } catch(e) {
        //debugger;
    } 
}

function renderItemsByItemid(params) {
    // [ 'artikel1', 'artikel2', ... ]
    
    mask_on(params.renderTo.content);
    
    var postdata = {
        method: 'getItemsByItemid',
        params: { 
            itemids: params.itemids,
            start: params.start,
            limit: params.limit
        }
    };
    
    try {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json(postdata),
            onSuccess: function (res) {
                
                try {
                    //data = eval('('+trans.responseText+')'); // JSON "parsen"
                    
                    params.renderFromItemlist = {
                        items: res.data.items,
                        hasprev: res.data.hasprev,
                        hasnext: res.data.hasnext
                    };
                    renderItems(params);
                    
                    return true;
                } catch(e) {
                    //debugger;
                    return false;   
                } 
            },
            onFailure: function () {
                //debugger;
            } 
        });
        
    } catch(e) {
        //debugger;
    } 
}

function renderItems(params) {
    /*
        params.renderFromItemlist = {
            items: [
                {
                    itemid: ...,
                    pgid: ...,
                    title: ...,
                    image: ...,
                    price: ...,
                    priceab: 1 || 0
                }
            ],
            hasprev: 1 || 0,
            hasnext: 1 || 0,
        },
        //params.renderFromAjaxQuery = {
        //    method: 'getItemsByCategory',
        //    params: {
        //        catid: PGID
        //    }
        //}
        params.renderFromjQueryData = {
            selector: '...' // jQuery Selektor
        },
        params.renderTo: jQuery-Selektor, zb '#idOutputDiv',
        params.idxStart: Index || 0,
        params.maxItems: Anzahl || 4,
    */
    
    var container = jQuery(params.renderTo.content);
    if (!container) return;
    
    var start = parseInt(params.start) || 0;
    var limit = parseInt(params.limit) || 4;
    
    container.html('');
    var out = "";
    
    var items = [];
    var bPrev = false;
    var bNext = false;
    
    //console.log(params);
    
    if (params.renderFromItemlist) {
        items = params.renderFromItemlist.items;
        bPrev = params.renderFromItemlist.hasprev;
        bNext = params.renderFromItemlist.hasnext;
    } else if (params.renderFromjQueryData) {
        items = jQuery(params.renderFromjQueryData.selector).data('items');
        bPrev = (start > 0);
        bNext = ((start + limit) < items.length);
        //bNext = params.renderFromItemlist.hasnext;
    }
    
    //console.log(items);
    
    for (var i = 0; i < items.length; i++) {
        if (params.renderFromjQueryData) {
            if (i < start) { continue; }
            if (i >= (start + limit)) { break; }
        }
        var item = items[i];
        var link = m_scripturl + '?showd' + item.pgid + ',' + m_session + ',' + item.itemid;
        var price = item.price;
        var priceab = item.priceab;
        if (item.pricefrom) {
            price = item.pricefrom;
            priceab = 1;
        }
        
        out +=  '<div class="floatedItemContainer">' +
                '<table cellspacing="0" cellpadding="0" style="" class="box2 floatedItem item">' +
                '<tbody><tr>' +
                '    <td nowrap="" class="hl">&nbsp;</td>' +
                '    <td class="hc"><h3 style="font-weight:normal; font-size:11px; line-height:15px; text-transform:none; height:45px; width:145px; overflow:hidden;" class="hch3"><a href="'+link+'">'+item.title+'</a></h3></td>' +
                '    <td nowrap="" class="hr">&nbsp;</td>' +
                '</tr>' +
                '<tr>' +
                '    <td class="cl"></td>' +
                '    <td class="cc">' +
                '                <div class="" style="padding: 10px; width: auto;">' +
                '                    <div class="image"><a href="'+link+'"><img border="" style="max-height:100px; max-width:100px;" alt="'+item.title+'" src="'+item.image+'"></a></div>' +
                '                    <div class="preis">' +
                myfp(price, priceab)+
                '        </div>' +
                '                </div>' +
                '            </td>' +
                '    <td class="cr"></td>' +
                '</tr>' +
                '<tr>' +
                '    <td style="background:url(bilder/layoutbilder/boxes/box_gray_bottom_left_btn.gif) left bottom no-repeat;" class="fl"></td>' +
                '    <td valign="top" style="background:url(bilder/layoutbilder/boxes/box_gray_bottom_content_btn.gif) right bottom repeat-x; overflow:hidden;" class="fc">' +
                '                    <a style="display:block; padding:5px;" href="'+link+'">'+TEXTS.btn_detail+'</a>' +
                '                </td>' +
                '    <td style="background:url(bilder/layoutbilder/boxes/box_gray_bottom_right_btn.gif) right bottom no-repeat;" class="fr"></td>' +
                '</tr>' +
                '</tbody></table>    ' +
                '    ' +
                '</div>';
    }
    
    //console.log(container);
    
    if (bPrev || bNext) {
    
        var catid    = params.catid;
        var itemids  = params.itemids;
        var contPrev = jQuery(params.renderTo.prev);
        var contNext = jQuery(params.renderTo.next);
    
        //out += '<div style="clear:both;"><table style="width:100%;"><tr>';
        if (bPrev) {
            var onclick = "";
            if (catid) {
                onclick = "renderItemsByCategory({catid: "+catid+",renderTo: { content: '"+params.renderTo.content+"', prev: '"+params.renderTo.prev+"', next: '"+params.renderTo.next+"' },start: "+parseInt(start-limit)+",limit: "+limit+"}); return false;";
            } else if (itemids) {
                onclick = "renderItemsByItemid({itemids: ['"+itemids.join("','")+"'],renderTo: { content: '"+params.renderTo.content+"', prev: '"+params.renderTo.prev+"', next: '"+params.renderTo.next+"' },start: "+parseInt(start-limit)+",limit: "+limit+"}); return false;";
            } else if (params.renderFromjQueryData) {
                onclick = "renderItems({ renderFromjQueryData: { selector: '"+params.renderFromjQueryData.selector+"'}, renderTo: { content: '"+params.renderTo.content+"', prev: '"+params.renderTo.prev+"', next: '"+params.renderTo.next+"' },start: "+parseInt(start-limit)+",limit: "+limit+"}); return false;";
            }
            contPrev.html('<div><a href="#" onclick="'+onclick+'"><img src="'+m_catalog_abs+'/bilder/layoutbilder/btn_left_large.jpg" border="0" /></a></div>');
        } else {
            contPrev.html('');
        }
        
        if (bNext) {
            var onclick = "";
            if (catid) {
                onclick = "renderItemsByCategory({catid: "+params.catid+",renderTo: { content: '"+params.renderTo.content+"', prev: '"+params.renderTo.prev+"', next: '"+params.renderTo.next+"' },start: "+parseInt(start+limit)+",limit: "+limit+"}); return false;";
            } else if (itemids) {
                onclick = "renderItemsByItemid({itemids: ['"+itemids.join("','")+"'],renderTo: { content: '"+params.renderTo.content+"', prev: '"+params.renderTo.prev+"', next: '"+params.renderTo.next+"' },start: "+parseInt(start+limit)+",limit: "+limit+"}); return false;";
            } else if (params.renderFromjQueryData) {
                onclick = "renderItems({ renderFromjQueryData: { selector: '"+params.renderFromjQueryData.selector+"'}, renderTo: { content: '"+params.renderTo.content+"', prev: '"+params.renderTo.prev+"', next: '"+params.renderTo.next+"' },start: "+parseInt(start+limit)+",limit: "+limit+"}); return false;";
            }
            contNext.html('<div><a href="#" onclick="'+onclick+'"><img src="'+m_catalog_abs+'/bilder/layoutbilder/btn_right_large.jpg" border="0" /></a></div>');
        } else {
            contNext.html('');
        }
        //out += '</tr></table></div>';
    }
    
    container.html(out);
    
    mask_off(params.renderTo.content);
}

function reviewShowAddForm_submit() {
    if (jQuery('#reviewAddForm').valid()) {
    
        libShowWaitingWnd();
    
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'review_add',
                params: {
                    itemid:     jQuery('#reviewAddForm input[name="itemid"]').val(),
                    userid:     jQuery('#reviewAddForm input[name="userid"]').val(),
                    username:   jQuery('#reviewAddForm input[name="username"]').val(),
                    email:      jQuery('#reviewAddForm input[name="email"]').val(),
                    city:       jQuery('#reviewAddForm input[name="city"]').val(),
                    rating:     jQuery('#reviewAddForm input[name="rating"]').val(),
                    review:     jQuery('#reviewAddForm textarea[name="review"]').val()
                }
            }),
            onSuccess: function(resp) {
                libCloseWaitingWnd();
                if (resp._status) {
                    messageBox({
                        title: TEXTS.review_success_title, 
                        msg: TEXTS.review_success_msg, 
                        fn: function(){ libShowWaitingWnd(); window.location.reload(); }
                    });
                } else {
                    messageBox({
                        title: TEXTS.review_error_title, 
                        msg: resp._err
                    });
                }
                
            },
            onFailure: function(resp) {
                jQuery('#reviewAddForm').dialog("close"); 
            }
        });
    
        
    }
}

function reviewShowCommentForm(bwnr, userdata) {
    
    var btnConfig = [ 
        {
            text: TEXTS.forms_contact_submit,
            click: function() { 
                reviewShowCommentForm_submit();
            }
        },
        {
            text: TEXTS.abort,
            click: function() { 
                jQuery(this).dialog("close"); 
            } 
        }
    ];
    
    jQuery('body').append(' <form id="reviewCommentForm" action="#" onsubmit="return false;" autocomplete="on">'+
                                '<input type="hidden" name="bwnr" value="'+bwnr+'">'+
                                '<input type="hidden" name="userid" value="">'+
                                '<table style="width:100%;">'+
                                '<tr><td style="width:150px;">'+TEXTS.review_shop_add_name+'</td><td><input type="text" name="username" minlength="2"></td></tr>'+
                                '<tr><td>'+TEXTS.review_shop_add_email+' *</td><td><input type="text" name="email" class="required email" minlength="2"></td></tr>'+
                                '<tr><td>'+TEXTS.review_add_comment_field+' *</td><td><textarea name="comment" class="required" rows="10" style="width:100%;"></textarea></td></tr>'+
                                '<tr><td colspan="2" class="status"></td></tr>'+
                                '</table>'+
                            '</form>');
    
    if (userdata.email) {
        jQuery('#reviewCommentForm input[name=email]').val(userdata.email);
        jQuery('#reviewCommentForm input[name=email]').attr('readonly', 'readonly');
    }
    if (userdata.name) {
        jQuery('#reviewCommentForm input[name=username]').val(userdata.name);
    }
    if (userdata.userid) {
        jQuery('#reviewCommentForm input[name=userid]').val(userdata.userid);
    }
    
    
    jQuery('#reviewCommentForm').dialog({
        title: TEXTS.review_add_comment,
        autoOpen: true,
        resizable: false,
        minHeight:60,
        modal: true,
        width: 650,
        buttons: btnConfig,
        close: function() {
            jQuery('#reviewCommentForm').dialog('destroy').remove(); // auch den oben hinzugefügten DOM-Node wieder entfernen
        }
    });

    jQuery('#reviewCommentForm input').keydown(function(event) {
        if (event.keyCode == 13) { // ENTER
            libShowLoginBox_submit();
        }
    });

    jQuery('#reviewCommentForm').dialog('open');
    jQuery('#reviewCommentForm').validate({
        debug: true
    });
}

function reviewShowCommentForm_submit() {
    if (jQuery('#reviewCommentForm').valid()) {
    
        libShowWaitingWnd();
    
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'review_comment',
                params: {
                    bwnr:       jQuery('#reviewCommentForm input[name="bwnr"]').val(),
                    userid:     jQuery('#reviewCommentForm input[name="userid"]').val(),
                    username:   jQuery('#reviewCommentForm input[name="username"]').val(),
                    email:      jQuery('#reviewCommentForm input[name="email"]').val(),
                    comment:    jQuery('#reviewCommentForm textarea[name="comment"]').val()
                }
            }),
            onSuccess: function(resp) {
                libCloseWaitingWnd();
                if (resp._status) {
                    messageBox({
                        title: TEXTS.review_comment_success_title, 
                        msg: TEXTS.review_comment_success_msg, 
                        fn: function(){ libShowWaitingWnd(); window.location.reload(); }
                    });
                } else {
                    messageBox({
                        title: TEXTS.review_comment_error_title, 
                        msg: resp._err
                    });
                }
                
            },
            onFailure: function(resp) {
                jQuery('#reviewCommentForm').dialog("close"); 
            }
        });
    
        
    }
}

function reviewShowAddForm(type, itemid, userdata) {
    // type = shop | item

    var btnConfig = [ 
        {
            text: TEXTS.forms_contact_submit,
            click: function() { 
                reviewShowAddForm_submit();
            }
        },
        {
            text: TEXTS.abort,
            click: function() { 
                jQuery(this).dialog("close"); 
            } 
        }
    ];
    
    jQuery('body').append(' <form id="reviewAddForm" action="#" onsubmit="return false;" autocomplete="on">'+
                                '<input type="hidden" name="userid" value="">'+
                                '<input type="hidden" name="itemid" value="">'+
                                TEXTS.review_shop_add_welcome +
                                
                                '<table style="width:100%;">'+
                                '<tr><td style="width:150px;">'+TEXTS.review_shop_add_name+'</td><td><input type="text" name="username" minlength="2"></td></tr>'+
                                '<tr><td>'+TEXTS.review_shop_add_email+' *</td><td><input type="text" name="email" class="required email" minlength="2"></td></tr>'+
                                '<tr><td>'+TEXTS.review_shop_add_review+' *</td><td class="stars"><input type="hidden" name="rating" class="required" value="5">'+
                                    '<img class="rateStar1" src="'+m_catalog_abs+'/review_modul/note.gif">'+
                                    '<img class="rateStar2" src="'+m_catalog_abs+'/review_modul/note.gif">'+
                                    '<img class="rateStar3" src="'+m_catalog_abs+'/review_modul/note.gif">'+
                                    '<img class="rateStar4" src="'+m_catalog_abs+'/review_modul/note.gif">'+
                                    '<img class="rateStar5" src="'+m_catalog_abs+'/review_modul/note.gif">'+
                                '</td></tr>'+
                                '<tr><td>'+TEXTS.review_shop_add_reviewtext+' *</td><td><textarea name="review" class="required" rows="10" style="width:100%;"></textarea></td></tr>'+
                                '<tr><td colspan="2" class="status"></td></tr>'+
                                '</table>'+
                            '</form>');
    
    jQuery('.stars img').hover(reviewShowAddForm_starHover);
    jQuery('.stars img').mouseout(function(){reviewShowAddForm_starSelect(jQuery('input[name=rating]').val());});
    jQuery('.stars img').click(reviewShowAddForm_starClick);
    
    if (userdata.email) {
        jQuery('#reviewAddForm input[name=email]').val(userdata.email);
        jQuery('#reviewAddForm input[name=email]').attr('readonly', 'readonly');
    }
    if (userdata.name) {
        jQuery('#reviewAddForm input[name=username]').val(userdata.name);
    }
    if (userdata.userid) {
        jQuery('#reviewAddForm input[name=userid]').val(userdata.userid);
    }
    if (itemid) {
        jQuery('#reviewAddForm input[name=itemid]').val(itemid);
    }
    
    
    jQuery('#reviewAddForm').dialog({
        title: (type == 'shop' ? TEXTS.review_shop_add_title : TEXTS.review_item_add_title),
        autoOpen: true,
        resizable: false,
        minHeight:60,
        modal: true,
        width: 650,
        buttons: btnConfig,
        close: function() {
            jQuery('#reviewAddForm').dialog('destroy').remove(); // auch den oben hinzugefügten DOM-Node wieder entfernen
        }
    });

    jQuery('#reviewAddForm input').keydown(function(event) {
        if (event.keyCode == 13) { // ENTER
            libShowLoginBox_submit();
        }
    });

    jQuery('#reviewAddForm').dialog('open');
    jQuery('#reviewAddForm').validate({
        debug: true
    });
}

function reviewShowAddForm_starClick(event) {
    var el = jQuery(event.currentTarget);
    var num = parseInt(el.attr('class').replace('rateStar', ''));
    reviewShowAddForm_starSelect(num);
}
function reviewShowAddForm_starHover(event) {
    var el = jQuery(event.currentTarget);
    var num = parseInt(el.attr('class').replace('rateStar', ''));
    
    //if (num == jQuery('input[name=rating]').val()) return;
    //console.log(num);
    
    for (var i = 1; i <= num; i++) {
        jQuery('.rateStar' + i).attr('src', 'review_modul/note.gif');
    }
    for (var i = (num+1); i <= 5; i++) {
        jQuery('.rateStar' + i).attr('src', 'review_modul/note2.gif');
    }
}
function reviewShowAddForm_starSelect(num) {
    num = parseInt(num);
    
    jQuery('input[name=rating]').val(num);
    
    for (var i = 1; i <= num; i++) {
        jQuery('.rateStar' + i).attr('src', 'review_modul/note.gif');
    }
    for (var i = num+1; i <= 5; i++) {
        jQuery('.rateStar' + i).attr('src', 'review_modul/note2.gif');
    }
}

function insertGoogleTranslateWidget() {
    var bInsertCode = false;
    if (jQuery.cookie('useGoogleTranslateWidget') == 'true') {
        insertGoogleTranslateWidget_do();
    } else {
        // Nachfragen und Einstellung in Cookie speichern...
        var html = '<p id="idGoogleTranslate">' + html_get_defaultbox(
            TEXTS.google_translate_title, 
            TEXTS.google_translate_text +
            '<p><div class="jBtn"><a href="javascript:void(0);" id="btnUseGoogleTranslate" style="width:95%;"><span>'+TEXTS.google_translate_activate+'</span></a></div></p>'
        ) + '</p>';
        jQuery('#layout_mainright').append(html);
        jQuery('#btnUseGoogleTranslate').click(function(){
            jQuery.cookie('useGoogleTranslateWidget', true);
            libShowWaitingWnd();
            window.location.reload();
        });
    }
}  

function insertGoogleTranslateWidget_do() {
    var lang = TEXTS.lang;
    if (lang == 'se') lang = 'sv';
    
    jQuery('#layout_mainright').append(
        '<p id="idGoogleTranslate">' + 
            html_get_defaultbox(TEXTS.google_translate_title,
                '    <div id="google_translate_element" style="display:block"></div><script>' +
                '    function googleTranslateElementInit() {' +
                '      new google.translate.TranslateElement({' +
                '           pageLanguage: "'+lang+'",' +
                '           gaTrack: true,' +
                '           gaId: "'+TEXTS.html_google_analytics_id+'"' +
                '      }, "google_translate_element");' +
                '    };</script>' +
                '    <script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>' +
                '<p><a href="javascript:void(0);" id="btnForbidGoogleTranslate">'+TEXTS.google_translate_deactivate+'</a></p>'
        ) + '</p>'
    );
    jQuery('#btnForbidGoogleTranslate').click(function(){
        jQuery.cookie('useGoogleTranslateWidget', false);
        libShowWaitingWnd();
        window.location.reload();
    });
}

/* Notifications */
var NOTIFICATIONS = [];
function initNotifications(userid) {
    //showNotification(userid);
    
    if (userid) {
        ajaxRequest({
            url: myinterface_lib,
            data: to_json({
                method: 'notifications_get',
                params: {
                    userid:     userid
                }
            }),
            onSuccess: function(resp) {
            
                for (var i = 0; i < resp.notifications.length; i++) {
                    showNotification(resp.notifications[i]);
                }    
                
                window.setTimeout(renderNotifications, 100);
                
            },
            onFailure: function(resp) {
                
            }
        });
    } else {
        window.setTimeout(renderNotifications, 100);
    }
    
}

function showNotification(notification) {
    NOTIFICATIONS.push(notification);
}


function renderNotifications() {
    if (NOTIFICATIONS.length) {
        var notification = NOTIFICATIONS.shift();
        var msg = notification.msg;
        var type = notification.type;
        if (type == '') { type = 'info'; }
        jQuery('#layout_maincontent > .content').prepend('<div class="notification '+type+'" style="display:none;">'+msg+'</div>');
        jQuery('#layout_maincontent > .content .notification:first').toggle( 'blind', {}, 1000, renderNotifications);
    }
}
