/**
 * omeco(R) webshop
 * Copyright (c) by omeco GmbH, All rights reserved
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * Öffnet die AGB in einem neuen Popup Fenster.
 *
 * @param string mainControl
 */
function showAgb(mainControl)
{
	window.open(mainControl + "?EVENT=agbStandalone", "AGB", "toolbar=no,scrollbars=yes");
}

/**
 * Schreibt den Link zu den AGB in das HTML Dokument.
 *
 * @param string mainControl
 * @param string agbText
 */
function writeAgbLink(mainControl, agbText)
{
	document.write("<a class=\"navkleindunkel\" href=\"javascript: showAgb('" + mainControl + "');\">" + agbText + "</a>");
}

/**
 * Öffnet die Widerrufbelehrung in einem neuen Popup Fenster.
 *
 * @param string mainControl
 */
function showAvoidance(mainControl)
{
	window.open(mainControl + "?EVENT=avoidanceStandalone#avoidance", "AVOIDANCE", "toolbar=no,scrollbars=yes");
}

/**
 * Schreibt den Link zur Widerrufbelehrung in das HTML Dokument.
 *
 * @param string mainControl
 * @param string avoidanceText
 */
function writeAvoidanceLink(mainControl, avoidanceText)
{
	document.write("<a class=\"navkleindunkel\" href=\"javascript: showAvoidance('" + mainControl + "');\">" + avoidanceText + "</a>");
}

/**
 * Setzt das Attribut 'target' auf den Wert '_blank'.
 *
 * @param string id
 */
function setBlankTargetForElement(id)
{
	element = document.getElementById(id);

	if (null != element && element.target != undefined)
	{
		element.target = "_blank";
	}
}

/**
 * Zeigt ein Bild in einem Popup an.
 *
 * @param string path
 * @param string title
 * @param double width
 * @param double height
 */
function showItemImage(path, title, width, height)
{
	window.open(path, title, 'width=' + width + ', height=' + height);
}

/**
 * Schreibt den Link zum L�schen des kleinen Warenkorbs in das Dokument.
 *
 * @param string question
 * @param string redirection
 * @param string img_path
 * @param string text
 * @see deleteCart
 */
function writeDeleteCartAnchorTag(question, redirection, img_path, text)
{
	document.write("<a href=\"#\" onclick=\"deleteCart('" + question + "','" + redirection + "');\">");
	document.write('<img src="' + img_path + '" alt="' + text + '" /><br />' + text + '</a>');
}

/**
 * Öffnet einen Bestätigungsdialog zum Löschen des Warenkorbs. Bei 'OK' erfolgt eine Weiterleitung zur Seite
 * auf der der Warenkorb gelöscht wird.
 *
 * @param string question
 * @param string redirection
 */
function deleteCart(question, redirection)
{
	if (confirm(question))
	{
		document.location = redirection;
	}
}

function setupSuggest() {
    SetupMMSuggest(document.getElementById('searchterm'),
        {'requestURL' : '/mall/1/js/mmsuggest.php?query=$v$&', 'debug' : false});
}
/* deprecated
function setElementStatus(elementId, enabled)
{
    var element = document.getElementById(elementId);

    if (null != element)
    {
        element.disabled = !enabled;
    }
}

function setElementStyle(elementId, attribute, value)
{    
    if (null != $('#'+elementId))
    { 
        $('#'+elementId).css(attribute, value);        
    }
}
*/
function increment(id, inc_value)
{
    var i = document.getElementById(id);
    if (i != null && i != 'undefined')
    {
        i.value = parseFloat(i.value) + ((typeof(inc_value) == "undefined") ? 1.0 : inc_value);
    }
}

function decrement(id, minimum, dec_value)
{
    var i = document.getElementById(id);
    if (i != null && i != 'undefined')
    {
        i.value = Math.max(minimum, parseFloat(i.value) - ((typeof(dec_value) == "undefined") ? 1.0 : dec_value));
    }
}

function switchFieldStates(containerId, state) {
    $('#' + containerId + ' *').each(
        function(i) {
            if (this.disabled!='undefined') {
                this.disabled = !state ? 'disabled' : '';
            }
        });
    if (state) {
        $('#' + containerId + ' label').each(
            function(i) {
                $(this).removeClass('inaktiv');
            });
    } else {
        $('#' + containerId + ' label').each(
            function(i) {
                $(this).addClass('inaktiv');
            });
    };
}

/**
  * Lightbox
  * Öffnet ein Popup mit Bildern und Daten in einem semi-transparenten Overlay über der aktuellen Seite
  */
function toggleLightBox(activewin, overlay, mode) {
    if (activewin != null) {
    	activewin.style.display  = mode;
    	overlay.style.display = mode;
    }
}


function toggleswitch(id, imgId, accordionId)
{
	var d = document.getElementById(id);

	if (d.style.display=='block')
	{
		d.style.display = 'none';
		document.getElementById(imgId).src = '/mall/1/img/accordion_closed.gif';
		document.getElementById(accordionId).className = 'accordion closed';

	} else {

		d.style.display = 'block';
		document.getElementById(imgId).src = '/mall/1/img/accordion_opened.gif';
		document.getElementById(accordionId).className = 'accordion opened';
	}
}

function retainedPosition() {
  var y = 0;
  if (window.pageYOffset) {
    y = window.pageYOffset;

  } else if (document.body && document.body.scrollTop) {
    y = document.body.scrollTop;

  }
  /*if (y > 0) {
    window.scrollBy(0, -10);
    setTimeout('ScrollToLastPos()', 10);
  }*/
}

/**
 * itemVariation
 *
 * Die Funktion aktualisiert einen Variantenartikel mit
 * (Preis, Verfuegbarkeit, Bildinformation)
 *
 * @author: eandre
 */
function itemVariation(ajax_url, itemId, variations) {    
    $.ajax({
        type: "POST",
        url: ajax_url,
        complete: function(transport) {
            // Basispreis aktualisieren
            if ($('#baseprice_'+itemId)) {
                var baseprice = $.evalJSON(transport.responseText).baseprice;                
                $('#baseprice_'+itemId).text(baseprice);
            }
            // Aktionspreis aktualisieren
            if ($('#actionprice_'+itemId)) {
                var actionprice = $.evalJSON(transport.responseText).actionprice;                
                $('#actionprice_'+itemId).text(actionprice);
            }

            // Artikelnummer mit Variation-Postfix aktualisieren
            if ($('#itemnumber_'+itemId)) {
                var itemNumber = $.evalJSON(transport.responseText).itemNumber;
                $('#itemnumber_'+itemId).text(itemNumber);
            }
            
            // Variationen highlighten, wenn nicht verfuegbar
            if ($('#variations_'+itemId)) {
                var validVariation = $.evalJSON(transport.responseText).validVariation;
                var isAvailable = $.evalJSON(transport.responseText).isAvailable;
               
                if (validVariation == 'true') {
                    color = '';
                } else {
                    $('#submit_allowed_'+itemId).val('false');
                    color = 'red';
                }

                // Select-Elemente rot einfaerben
                $('select#variation_'+itemId+'_1,select#variation_'+itemId+'_2').each(function(i, elem) {                    
                    if (color) {
                        $(elem).css('color', color);
                    } else {
                        $(elem).css('color', '');
                        $(elem).removeAttr('color');
                    }
                });
                // Kann nicht in den WK gelegt werden Kennzeichnung
                $('#submit_allowed_'+itemId).val(isAvailable);
            }

            // Bild der Variation ändern
            if ($('#variation_image_link_'+itemId) && $('#variation_image_'+itemId)) {
                var variationImageData = $.evalJSON(transport.responseText).variationImage;
                // Link zum Bild nur in Detailansicht einfuegen
                if ($('#variation_image_link_'+itemId).hasClass('MagicZoomPlus')) {
                	
                	// Link für MagicZoom auf Originalbild
                    $('#variation_image_link_'+itemId).attr('href', variationImageData.ORIGNAME);                    
                    
                    // divZoomImage ist das Bild was gezoomt wird
                    var divZoomImage = $('.MagicZoomBigImageCont').children("div").get(1);
                    $(divZoomImage).children("img").attr("src", variationImageData.ORIGNAME);
                    
                    // divLightbox ist anschließend das Bild was in der Lightbox nach onClick aufgerufen wird
                    // Hier wird das Originalbild verwendet
                    var divLightbox = $('.MagicThumb-expanded').children("div").get(0);
                    $(divLightbox).children("img").attr("src", variationImageData.ORIGNAME);
                    $('.MagicThumb-caption').text(variationImageData.BILDTITEL);                                       
                    
                } else {
                    // Listenansicht Link mit ausgewaehlter Variation
                    var href = $('#variation_image_link_'+itemId).attr('href');
                    href = href.split("?");
                    href = href[0];                    
                    $('#variation_image_link_'+itemId).attr('href', '');
                    $('#variation_image_link_'+itemId).attr('href', href+variations);
                }
                $('#variation_image_link_'+itemId).attr('title', variationImageData.BILDTITEL);
                $('#variation_image_'+itemId).attr('src', variationImageData.BILDNAME);
                $('#variation_image_'+itemId).attr('alt', variationImageData.ALTTEXT);
            }

            // Verfuegbarkeit, Lager und Reserve aktualisieren
            if ($('#availability'+itemId)) {
                var availabilityHtml = $.evalJSON(transport.responseText).availabilityHtml;
                $('#availability'+itemId).html(availabilityHtml);
            }
        }
    });
}

/**
 * rateItem
 *
 * Speichert eine Bewertung am Artikel. 
 */
function rateItem() {
    var url = "/ajax.php?c=itemRating";
    
    // Formulardaten werden geladen und URL-Encoded übertragen.
    var query = $("#rateitemformular").serialize();
    query = query+"&action=insert"; // initiiert, dass gespeichert werden soll

    $.ajax({
       type: "POST",
       url: url,
       data: query,
       complete: function(transport) {
           // Aktualisiert das HTML im Layer
           $('#itemratinglayer').html(transport.responseText);

           /* Über die Frontendkonfiguration kann eingestellt werden, ob die Bewertungen sofort angezeigt werden. */
            var updateRatings = $('input[name=updateRatings]').val();
            
            /* Der Wert enthält die boolsche Information, ob die Validierung des Formulars in Ordnung war. */
            var success = $('input[name=success]').val();
            
            if (updateRatings == true && success == true) {
                var itemId = $('input[name=itemId]').val();                                 
                /* Sollen die Bewertungen direkt im Frontend erscheinen, werden die Bewertungen erneut geladen.
                 * Der Link bewerten wird dann durch Smarty ausgeblendet.
                 */                
                reloadRatings(itemId);
            } else if (updateRatings == false && success == true) {
                /* Sollen Bewertungen nicht direkt angezeigt, muss der Linkt anhand der CSS-Klasse ausgeblendet werden. */                
                $('.rateitemlink-active').hide();
                $('.rateitemlink-inactive').show();
            }
       }
    });    
}

/**
 * reloadRatings
 *
 * Lädt die Bewertungen eines Artikel neu.
 *
 * @autor eandre
 */
function reloadRatings(itemId) {
    var url = "/ajax.php?c=reloadRatings";

    var params = {
      itemId: itemId
    };

    $.ajax({
       type: "POST",
       url: url,
       data: params,
       complete: function(transport) {
           // Aktualisiert den Bereich im Akkordion
           $('#item-ratings').html($.evalJSON(transport.responseText).html);           

           /**
            * Folgende 2 Zeilen müssen gemacht werden, da diese Informationen ausserhalb des item_showRatings.tpl stehen.
            */
           // Erstellt dynamische StarRating Input-Elemente für die Detailansicht (oben rechts)
           createStarRatings($.evalJSON(transport.responseText).average, 
                             $.evalJSON(transport.responseText).shopid,
                             'starrating'+itemId);

           // Ueberschreibt die Gesamtbewertung in der Detailansicht.           
           var sum = $('#artikel-bewerten-top').html();           
           $('#artikel-bewerten-top').html(sum.replace(/([0-9]|[a-zA-Z])+ {1}/, $.evalJSON(transport.responseText).total+" "));           
       }
    });
}

/**
 * updateRating
 *
 * Speichert die Meinungen zu einer Bewertung 
 */
function updateRating(ratingId, itemId, value) {
    var url = "/ajax.php?c=updateRating";

    var params = {
      ratingId: ratingId,
      value: value
    };

    $.ajax({
       type: "POST",
       url: url,
       data: params,
       complete: function(transport) {
            /* Im Erfolgsfall werden die Bewertungen neu geladen, damit die Links entsprechende
             * ausgeblendet werden können
             */            
            if ($.evalJSON(transport.responseText).success == true) {
                //reloadRatings(itemId);               
                $('#opinionlinkactive'+ratingId).hide();
                $('#opinionlinkinactive'+ratingId).show();
            }
       }
    });
}

/**
  * createStarRatings
  *
  * Erzeugt dynamisch die Input-Elemente für das StarRating.
  *
  * rating: Wert des Ratings
  * num: Anzahl der Sterne (bei halben, ist die Anzahl dopppelt
  * cssClass: Klasse eines div-Elements, worin die Inputs eingefügt werden  
  */
function createStarRatings(rating, shopId, cssClass) {
    var html_result = "";
    var imagePath = "/mall/"+shopId+"/img";
    for (var r = 1; r <= 5; r++) {
        if (r <= rating) {
            html_result += "<img src='"+imagePath+"/star_yellow.png' />";
        } else if (rating < r && rating > (r-1)) {
            html_result += "<img src='"+imagePath+"/star_yellow_grey.png' />";
        } else {
            html_result += "<img src='"+imagePath+"/star_grey.png' />";
        }
    }

    $('div.'+cssClass).html([html_result].join(''));
}

/**
 * itemRecommendation
 */
function itemRecommendation() {
    var url = "/ajax.php?c=itemRecommendation";

    // Formulardaten werden geladen und URL-Encoded übertragen.
    var query = $("#itemrecommendation-form").serialize();
    query = query+"&action=insert"; // initiiert, dass gespeichert werden soll

    $.ajax({
       type: "POST",
       url: url,
       data: query,
       complete: function(transport) {
           // Aktualisiert das HTML im Layer
           //$('#item-recommendation').html(transport.responseText);
           $('#item-recommendation').replaceWith(transport.responseText);
       }
    });
}

/**
 * showLightbox
 *
 * Zeigt die Lightbox mit Ajax-Content an. 
 */
function showLightbox(url, params){    
    $.lightboxManual({
        modal: false,        
        type: 'ajax',        
        ajax: {
            url: url,
            type: 'post',
            data: params
        },
        resizeable: true,
        autoSizeable: true
    });
}

/**
 * closeLightbox
 *
 * Schließt die Lightbox 
 */
function closeLightbox() {
    $.lightboxRemove();
}

/**
 * charsLeft
 *
 * Funktion gibt in einem Label die verbleibenden Zeichen aus.
 */
function charsLeft(elem, label) {
    if ($('#'+elem)) {
        var elem = $('#'+elem);        
        var input = elem.val();
        var tokens = input.length;
        var maxlen = elem.attr('maxlength');        
        var left = maxlen-tokens;
        if(left<0){
            elem.val(input.substring(0,500));
            $('#'+label).val('0');
        }else{
            $('#'+label).html(left);
        }       
    }
}

function scrollTo(elem) {
      var targetOffset = $('#'+elem).offset().top;      
      $('html,body').animate({scrollTop: targetOffset}, 1000);
}

function quicklogin_fields() {
    $("#quicklogin_content").slideToggle('slow');
    $("#showhide_loginfields").toggleClass('active');
};

function checkAGB() {
	
	// wenn agb ausgewaehlt => submit zulassen
	oAgb = document.getElementById('agb');
	bChecked = oAgb.checked;
	
	if (bChecked === true) {
		
		bResult = true;
		
	} else {

		$('#confirmagb').addClass('erroragb');
		$('#erroragb_text').show();
		bResult = false;
	}

	return bResult;
}

function hideErroragbStyle() {
	$('#confirmagb').removeClass('erroragb');
	$('#erroragb_text').hide();
}

/**
 * Validiert die BLZ.
 * Ist die BLZ nicht bekannt, werden die Eingabefelder
 * für Kontonummer und Insititut gesperrt, womit
 * nach Absenden des Formulars, ein Fehler ausgegeben wird.
 *
 * @param bankCode
 */
function determineBankName(bankCode) {

    var url = "/ajax.php?c=determineBankName";

    var params = {
      code: bankCode
    };

    $.ajax({
       type: "POST",
       url: url,
       data: params,
       complete: function(transport) {

           var bankName = $.evalJSON(transport.responseText).bankName;

            if (bankName != "") {
                $('#bankname').val(bankName);
            }
       }
    });
}
