﻿/* Standardfuntkion bei Erfolg */
function CallSuccess(res, destCtrl) {
    var dest = document.getElementById(destCtrl);
    dest.innerHTML = evalScript(res);
}

function evalScript(scripts) {
    try {
        if (scripts != '') {
            var script = "";
            scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function () {
                if (scripts !== null) script += arguments[1] + '\n';
                return '';
            });
            if (script) (window.execScript) ? window.setTimeout(script, 0) : window.setTimeout(script, 0);
        }
        return scripts;
    }
    catch (e) { }
}

function reload() {
    location.reload();
}

/* Standardfuntkion bei Fehler */
function CallFailed(res)
{
//    alert(res.get_message());
}

/* SingleItem */
function ManageTabs(id, opt, itemID) {
    document.getElementById('divContent').innerHTML = '<div class="wait"></div>';
    logicbase.Shop.LBShopWebService.GetTabContent(id, opt, itemID, CallSuccess, CallFailed, 'divContent');

}

/* SingleItem Cross */
function ManageCross(divid, id, opt, start, Itemid) {
    document.getElementById(divid).innerHTML = '<div class="wait"></div>';
    logicbase.Shop.LBShopWebService.GetCrossContent(id, opt, start, divid, Itemid, CallSuccess, CallFailed, divid);

}

/* ItemRatings */
function SetAndGetUseful(id, dest, useful) {
    logicbase.Shop.LBShopWebService.SetAndGetUsefulString(id, useful, SetAndGetUsefulDone, CallFailed, dest);
}

function SetAndGetUsefulDone(res, destCtrl) {
    var dest = document.getElementById(destCtrl);
    dest.innerHTML = res;
    alert(ratingDoneText);
}

/* Webservice Suche BEGIN*/
var pressedKeyCode = 0;
var SearchCtrl = null;
var timer = 0;

function KeyHandler(e) {
    if (!e) var e = window.event
    if (e.keyCode) pressedKeyCode = e.keyCode;
    else if (e.which) pressedKeyCode = e.which;
}

function startSearch(content, tbSearchUniqueID) {
    if (content != '') {
        document.getElementById('searchresultpreview').style.display = 'inline';
        logicbase.Shop.LBShopWebService.startSearch(content, tbSearchUniqueID, CallSuccessWSSearch, CallFailed, 'searchresultpreview');
    }
    else {
        document.getElementById('searchresultpreview').style.display = 'none';
    }
}

function CallSuccessWSSearch(res, destCtrl) {
    if (res.length != 0) {
        document.getElementById('searchresultpreview').style.display = 'inline';
    }
    else {
        document.getElementById('searchresultpreview').style.display = 'none';
    }
    var dest = document.getElementById(destCtrl);
    dest.innerHTML = res;
}

function doChange(tbSearchUniqueID, itemName, itemID, categoryID) {
    __doPostBack(tbSearchUniqueID, itemName + '~' + itemID + '~' + categoryID);
}
function tbSearchEvent(MinimumLetters4Search, Ctrl, e) {
    timer = 0;
    KeyHandler(e);

    if (pressedKeyCode >= 37 && pressedKeyCode <= 40) {
        scrollSearch();
    }
    else if (pressedKeyCode == 13) {
        if (document.getElementById("lblSearchPlugin_SelectedRow") != null && document.getElementById("lblSearchPlugin_SelectedRow").innerHTML != '') {
            try {
                window.setTimeout(document.getElementById(document.getElementById("lblSearchPlugin_SelectedRow").innerHTML).onclick, 0);
            }
            catch (e) {
                document.getElementById(document.getElementById("lblSearchPlugin_SelectedRow").innerHTML).click();
            }
        }
        else {
            //__doPostBack(Ctrl.uniqueID, '');
            //nach Enter die Textbox sperren
            Ctrl.disabled = true;
        }
    }
    else {
        if (Ctrl.value.length > MinimumLetters4Search) {
            SearchCtrl = Ctrl;
            startTimer();
            //startSearch(Ctrl.value, Ctrl.name);
        }
        else {
            document.getElementById('searchresultpreview').style.display = 'none';
        }
    }
}

function startTimer() {
    timer++;

    if (timer > 1) {
        startSearch(SearchCtrl.value, SearchCtrl.name);
    }
    else {
        setTimeout('startTimer()', 2000);
    }

}

function selectRow(ctrl) {
    if (document.getElementById("lblSearchPlugin_SelectedRow").innerHTML != '') {
        unSelectRow(document.getElementById(document.getElementById("lblSearchPlugin_SelectedRow").innerHTML));
    }
    document.getElementById("lblSearchPlugin_SelectedRow").innerHTML = ctrl.id;
    ctrl.className = "tb_WSSearch_selected";
}

function unSelectRow(ctrl) {
    var i = parseInt(ctrl.id.replace("SearchPlugin_Row", ""));
    if (i % 2 == 0) {
        ctrl.className = "tb_WSSearch_evenrow";
    }
    else {
        ctrl.className = "tb_WSSearch_oddrow";
    }
}

function scrollSearch() {
    var selectedRow = document.getElementById("lblSearchPlugin_SelectedRow");
    var i;
    if (pressedKeyCode == 38) {
        //Pfeil nach oben
        if (selectedRow.innerHTML == '') { selectedRow.innerHTML = 'SearchPlugin_Row1'; }
        i = parseInt(selectedRow.innerHTML.replace("SearchPlugin_Row", ""));

        if (i - 1 >= 0) {
            selectRow(document.getElementById("SearchPlugin_Row" + (i - 1)));
        }
    }
    else if (pressedKeyCode == 39 || pressedKeyCode == 40) {
        //Pfeil nach unten
        if (selectedRow.innerHTML == '') {
            i = -1;
        }
        else {
            i = parseInt(selectedRow.innerHTML.replace("SearchPlugin_Row", ""));
        }
        if (document.getElementById("SearchPlugin_Row" + (i + 1)) != null) {
            selectRow(document.getElementById("SearchPlugin_Row" + (i + 1)));
        }
    }
}

/* Webservice Suche END*/


/* Artikelvergleich BEGIN*/

function doCompare() {
    document.getElementById('divItemCompare').style.display = 'inline';
    logicbase.Shop.LBShopWebService.GetItemsCompare(CallSuccess, CallFailed, 'divItemCompare');
}

function boxClicked(itemId,title,state){
    logicbase.Shop.LBShopWebService.SetItemCompare(itemId,title,state);
    if (document.getElementById('divItemCompare').style.display == 'inline'){
        window.setTimeout('logicbase.Shop.LBShopWebService.GetItemsCompare(CallSuccess, CallFailed, "divItemCompare")',0);
    }
}

/* Artikelvergleich END*/

/* Sachmerkmale BEGIN */
function ddlSMLClass_changed(emptyMSG){
    if (document.getElementById(ddlSMLClassClientID).value == ''){
        document.getElementById("divSMLAttributes").innerHTML = emptyMSG;
    }
    else{
        CallWebService('');
    }
}

function GetVersions(){
    var attrIDs = '';
    var counter = 0;
    var classID = document.getElementById(ddlSMLClassClientID).value;
    while (document.getElementById('DDLAttribute' + counter) != null){
        var AttrID = document.getElementById('AttributeID' + counter).value;
        var AttrValue = document.getElementById('DDLAttribute' + counter).value;
        attrIDs = attrIDs + AttrID + 'µ' + AttrValue + '~';
        counter++;
    }
    attrIDs = attrIDs.replace (/^~+/, '').replace (/~+$/, '');
    CallWebService(attrIDs);
}

function CallWebService(attrIDs){
    var classID = document.getElementById(ddlSMLClassClientID).value;
    var hoehe = document.getElementById("divSMLAttributes").style.height;
    document.getElementById("divSMLAttributes").innerHTML = '<img src="' + waitIMG + '" width="20px" />';
    document.getElementById("divSMLAttributes").style.height = hoehe;
    logicbase.Shop.LBShopWebService.GetClassAttributes(classID, attrIDs , CallSuccess, CallFailed, 'divSMLAttributes');
}

function ResetClass(){
    var classID = document.getElementById(ddlSMLClassClientID).value;
    var hoehe = document.getElementById("divSMLAttributes").style.height;
    document.getElementById("divSMLAttributes").innerHTML = '<img src="' + waitIMG + '" width="20px" />';
    document.getElementById("divSMLAttributes").style.height = hoehe;
    logicbase.Shop.LBShopWebService.ResetSML(classID, CallSuccess, CallFailed, 'divSMLAttributes');
}
/* Sachmerkmale END*/

/* Gibt die Pflichtzubehörartikel zu einem Artikel zurück, die im Warenkorb sind */
function GetAccessoryItems(shoppingCartPositionId, DivId, isOptionalAccessory, itemId) {
    if (isOptionalAccessory == 'false')   logicbase.Shop.LBShopWebService.GetAccessoryItems(shoppingCartPositionId, CallSuccess, CallFailed, DivId)
    else                                logicbase.Shop.LBShopWebService.GetOptionalAccessoryItems(itemId, CallSuccess, CallFailed, DivId)
}

/* Andere Artikel der gleichen Kategorie */
function GetOtherCategoryItems(firstItem, DivId) {
    logicbase.Shop.LBShopWebService.GetOtherCategoryItems(firstItem, CallSuccess, CallFailed, DivId);
}

/* Erweiterung QuickView BEGIN */
function displayQuickView(itemId, versionId) {
    logicbase.Shop.LBShopWebService.GetQuickView(itemId, versionId, callQuickViewSuccess, CallFailed);
}

function callQuickViewSuccess(response) {

    var popup_width = 600;
    //var popup_height = 259;

    var width = 0;
    var height = 0;
    var scrollPos = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;

    BrowserDetect.init();
    switch (BrowserDetect.browser) {
        case 'Firefox':
            width = window.innerWidth;
            //height = window.innerHeight + window.pageYOffset;
            break;
        case 'Explorer':
            width = document.documentElement.clientWidth;
           // height = document.documentElement.clientHeight + 
            break;
        case 'Chrome':
            width = window.innerWidth;
            //height = window.innerHeight;
            break;
        case 'Opera':
            width = window.innerWidth;
           // height = window.innerHeight;
            break;
        case 'Safari':
            width = window.innerWidth;
            //height = window.innerHeight;
            break;
    }

    document.getElementById('quickViewItem').style.position = 'absolute';
    document.getElementById('quickViewItem').style.width = popup_width + "px";
   // document.getElementById('quickViewItem').style.height = popup_height + "px";
    document.getElementById('quickViewItem').style.left = (width / 2) - (popup_width / 2) + "px";
    //document.getElementById('quickViewItem').style.top = (height / 2) + "px"; //- (popup_height / 2)
    document.getElementById('quickViewItem').innerHTML = evalScript(response);
    document.getElementById('quickViewItem').style.display = 'block';


    if (window.innerHeight && window.scrollMaxY) {// Firefox
        yWithScroll = window.innerHeight + window.pageYOffset;
        xWithScroll = window.innerWidth + window.scrollMaxX;
        yScrollPosition = document.documentElement.scrollTop;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
        yWithScroll = document.body.scrollHeight;
        xWithScroll = document.body.scrollWidth;
        yScrollPosition = document.documentElement.scrollTop;
    } else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
        yWithScroll = document.body.offsetHeight;
        xWithScroll = document.body.offsetWidth;
        yScrollPosition = document.documentElement.scrollTop;
    }

    yScrollPosition = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
    document.getElementById('quickViewBackground').style.height = yWithScroll + 'px';
    document.getElementById('quickViewBackground').style.display = 'block';
    document.getElementById('quickViewBackground').style.height = yWithScroll + 'px';
    
    document.getElementById('quickViewItem').style.marginTop = (yScrollPosition + 100) + 'px';
}

function displayQuickViewPopUp() {
    logicbase.Shop.LBShopWebService.GetQuickViewPopUp(callQuickViewPopUpSuccess, CallFailed);
}

function callQuickViewPopUpSuccess(response) {

    if (response != '') {

        var popup_width = 660;
        var popup_height = 259;

        var width = 0;
        var height = 0;

        BrowserDetect.init();
        switch (BrowserDetect.browser) {
            case 'Firefox':
                width = window.innerWidth;
                height = window.innerHeight;
                break;
            case 'Explorer':
                width = document.documentElement.clientWidth;
                height = document.documentElement.clientHeight
                break;
            case 'Chrome':
                width = window.innerWidth;
                height = window.innerHeight;
                break;
            case 'Opera':
                width = window.innerWidth;
                height = window.innerHeight;
                break;
            case 'Safari':
                width = window.innerWidth;
                height = window.innerHeight;
                break;
        }
        document.getElementById('popUpItem').style.position = 'absolute';
        document.getElementById('popUpItem').style.width = popup_width + "px";
        document.getElementById('popUpItem').style.height = popup_height + "px";
        document.getElementById('popUpItem').style.left = (width / 2) - (popup_width / 2) + "px";
        document.getElementById('popUpItem').style.top = (height / 2) - (popup_height / 2) + "px";
        document.getElementById('popUpItem').innerHTML = document.getElementById('popUpItem').innerHTML + response;
        document.getElementById('popUpItem').style.display = 'block';
    }
}

function clearLayer() {
    document.getElementById('quickViewItem').style.display = 'none';
    document.getElementById('quickViewItem').innerHTML = '';
    document.getElementById('popUpItem').style.display = 'none';
    document.getElementById('popUpItem').innerHTML = '';
    document.getElementById('quickViewBackground').style.display = 'none'; 
    document.body.style.overflow = '';
}


/* Erweiterung QuickView END */

function addItemToCart(itemId, versionItem, versionId, ddl) {
    if ((versionItem == 1) && (document.getElementById(ddl).value == "0")) {
        document.getElementById('divvarianten').style.display = 'block';
        return;
    }
    if (versionItem == 1) versionId = document.getElementById(ddl).value;
    logicbase.Shop.LBShopWebService.AddItemToCart(itemId, versionId, addItemToCartSuccess, CallFailed);
}

function addItemToCartSuccess(response) {
    if (response.split("|")[0] == "1") {
        redirect(response.split("|")[1])
    }
    else {
    }
}

function redirect(url) {
    location.href = url;
}

function GetAvailability(itemId, versionId, isVersionItem, label, ctrl) {
    //versionId:        AuspraegungId
    //isVersionItem:    Gibt an, ob der Artikel Varianten besitzt {0,1}
    //label:            Text, der der Verfügbarkeitsanzeige voran steht {string}
    logicbase.Shop.LBShopWebService.GetAvailability(itemId, versionId, isVersionItem, label, CallSuccess, CallFailed, ctrl);
}
