//var $ = jQuery; 
var objSlideShowElements = [];
var objSlideShowTimeouts = [];
var slideshow_config = {};
var animationTimeOut = 5000;
var homeSliderAnimationSpeed = 1500;
var animationEasing = 'easeInOutQuart';
function changeImage(newIndex,pElement) {
		var pElementIndex = $(pElement).index();
		var max_elements = 4;
		if(objSlideShowTimeouts[pElementIndex]) {
			window.clearTimeout(objSlideShowTimeouts[pElementIndex]);
		}
		$(pElement).find('ul.caption li.current').removeClass("current");
		$(pElement).find('ul.caption li:eq('+newIndex+')').addClass("current");
		
		var tapWidth = $(pElement).find('.bg_active').innerWidth();
		
		$(pElement).find('.bg_active').animate({
			'left':(tapWidth*newIndex)
		},homeSliderAnimationSpeed,animationEasing);

		$(pElement).find('.bg_white_left').animate({
			'width':(tapWidth*(newIndex))
		},homeSliderAnimationSpeed,animationEasing);

		$(pElement).find('.bg_white_right').animate({
			'width':((max_elements-1)*tapWidth)-(tapWidth*newIndex)
		},homeSliderAnimationSpeed,animationEasing);

		var newULMargin = ($(pElement).innerWidth()*newIndex)*-1;
		$(pElement).find('ul.images').animate({
			'marginLeft':newULMargin
		},homeSliderAnimationSpeed,animationEasing);


//		$(pElement).find('ul.images li.current').removeClass("current");
//		$(pElement).find('ul.images li:eq('+newIndex+')').addClass("current")

		if($(pElement).find('ul.caption li:eq('+(newIndex+1)+')').length<=0) {
			newIndex = -1;
		}

		objSlideShowElements[pElementIndex] = $(pElement);
        var actAniTimeOut;
		if(slideshow_config[pElementIndex]) {
			actAniTimeOut = slideshow_config[pElementIndex]
		} else {
			actAniTimeOut = animationTimeOut
		}
		objSlideShowTimeouts[pElementIndex] = window.setTimeout("changeImageAfterTimeOut("+(newIndex+1)+","+pElementIndex+")",actAniTimeOut);
//		$(this).addClass("current");
	
}

function changeImageAfterTimeOut(newIndex,pElementIndex) {
	changeImage(newIndex,objSlideShowElements[pElementIndex]);
}

function replaceCheckboxWithImage(){
	//$("label.checkbox").addClass("unchecked");
	$("input.checkbox + label").removeClass("checked").addClass("unchecked");
	$("input.checkbox:checked + label").removeClass("unchecked").addClass("checked");
}

// Product Color chooser: display flyout when mousing over swatches
function colorFlyout(pElement){
	var imgSrc = $(pElement + " img").attr("src");
	alert(imgSrc);
	var flyoutHtml = "<div class=\"flyout\"><img src=\"" + imgSrc + "\" width=\"61\" height=\"61\" alt=\"\" \/><p><strong>Orchid<\/strong><br \/>Nr. 189<br \/>20ml<br \/><span>Artikel Nr: 28120010<\/span><\/p><\/div>";
	$(pElement).append(flyoutHtml);
}

var translations = {
    'de': {
        'other_street': 'Andere Strasse'
    },
    'fr': {
        'other_street': 'Autre Rue'
    }
}




$(document).ready(function(){
    var lang = 'de';
    if ($('body').hasClass('fr')){
        lang = 'fr';
    }

    function get_trans(key){
        try {
            return translations[lang][key];
        } catch(e){return key;}
    }
	$('#subnav_wrapper ul li ul li').each(function(){
		$(this).find('a.second_level').click(function(){
			if($(this).parent().hasClass("selected")) {
				$(this).parent().removeClass("selected");
				$(this).next().hide();
			} else {
				$(this).parent().addClass("selected");
				$(this).next().show();
			}
			return false;
		});
		if(!$(this).hasClass("selected")) {
			$(this).find('ul').hide();
		}
	});
	$('#subnav_wrapper ul li ul li.selected ul li.selected').each(function(){
		$(this).parent().parent().removeClass("selected");
		$(this).parent().parent().addClass("opened");
	});

	$('.history_teaser').each(function(){
		if($(this).children().length<=0) {
			$(this).remove()
		}
	});
	
	// Show and hide second level panel
	$("ul#main_navigation > li > a").mouseenter(function(){
		$("ul#main_navigation div").hide();
		$("ul#main_navigation li a.over").removeClass("over");
		$(this).addClass("over");
		var secondLevelDiv = $(this).next("div");
		$(secondLevelDiv).show();
		$("ul#main_navigation > li").mouseleave(function(){
			$(secondLevelDiv).hide();
			$("ul#main_navigation li a.over").removeClass("over");
		});
	});
	
	// Social Media Teaser: toggle Blog and Twitter
	$("ul.tab_navigation li").click(function(){
		 var ID = $(this).attr("id");
		$("ul.tab_navigation li").removeClass("current");
		$("div.socialmedia_teaser div").hide();
		$(this).addClass("current");
		$("div." + ID + "_content").show();
	});
	
	// Image Slide Show on Homepage
	$("ul.caption li").click(function(){
		changeImage($(this).index(),$(this).parent().parent());
		window.clearTimeout(objSlideShowTimeouts[$(this).parent().parent().index()])
	});
	
	$('.slideshow').each(function(){
			changeImage(0,$(this));
	});
	
	// Filter Pulldown for Products
	$(".product_filter ul").mouseleave(function(){
		if($(this).hasClass("opened")) {
			$(this).removeClass("opened");
		}
	});
	$(".product_filter ul li").click(function(){
		if($(this).parent().hasClass("opened")) {
			$(this).parent(".opened").removeClass("opened");
			$(this).removeClass();
			$(this).parent().find(".selected").removeClass("selected");
			$(this).addClass("selected");
			if($(this).find("a").attr("href")) {
				location.href = $(this).find("a").attr("href")
			}
		} else {
			$(this).parent().addClass("opened");
			if($(this).parent().innerHeight()>300) {
				$(this).parent().css("height","300px")
			}
		}
	});

	// Product Overview page: remove left margin
	$(".my_marionnaud_home_wrapper div:nth-child(4n+1) a").css("border-left","0");
	$(".products_wrapper div:nth-child(5n+1) a").css("border-left","0");
	$(".brands_wrapper div:nth-child(5n+1) a").css("border-left","0");
	
	// Brands A-Z page: display links list when clicking a letter
	$(".links_bar.brands a").click(function(e){
		$(".links_bar a").removeClass("current");
		$(this).addClass("current");
		var listID = $(this).text().toLowerCase();
		$(".brand_list div").hide();
		$(".brand_list div ul").hide();
		$(".brand_list ul#" + listID).parent().show();
		$(".brand_list ul#" + listID).show();
		if($(this).text() == "Alle"){
			$(".brand_list div").show();
			$(".brand_list div ul").show();
		}
		e.preventDefault();
	});
	
	// Billing and Shipping Address: choose address on click
	$(".data_container .address_wrapper h4").click(function(){
		var grandParentID = $(this).parent().parent().attr("id");
		$("#" + grandParentID + " .selected").removeClass("selected");
		$(this).parent(".address_wrapper").addClass("selected");
	});
	
	// Replace checkboxes with images by adding a background-image to the label element
	replaceCheckboxWithImage();
	$("input.checkbox").click(function(){
		replaceCheckboxWithImage();
	});
	
	// Checkout Address page: display form according to checked radio button
	$("#chooseAccount input.radio").click(function(){
		var panelID = $(this).attr("value");
		$("div.panel_container ").hide();
		$("div#panel_" + panelID).show();
	});
	// Checkout Address page: display delivery address form when clicking on button
	$("input.btn_delivery").click(function(){
        var inp = $(this);
        var container = inp.closest('fieldset');
        $('div.panel_deliveryaddress', container).show();
        $('legend', container).show();
        $('input.btn_no_delivery', container).show();
        $('input.use_delivery_address', container).removeAttr("disabled");
        $('input.noaccount-use_delivery_address', container).removeAttr("disabled");
		inp.hide();
	});
	$("input.btn_no_delivery").click(function(){
        var inp = $(this);
        var container = inp.closest('fieldset');
        $('div.panel_deliveryaddress', container).hide();
        $('legend', container).hide();
        $('input.btn_delivery', container).show();
        $('input.use_delivery_address', container).attr("disabled","true");
        $('input.noaccount-use_delivery_address', container).attr("disabled","true");
		inp.hide();
	});
	
	
	// Product Color chooser: display flyout when mousing over swatches
	$("div.color_container a").mouseover(function(){
		$(this).mousemove(function(e){
			var mousePosLeft = e.pageX-$(this).offset().left+10;
//			mousePosTop = e.pageY-$(this).offset().top-40
//			$(this).find('.flyout')
//			$(this).find('.flyout').css('top',mousePosTop+'px');
			$(this).find('.flyout').css('left',mousePosLeft+'px');
		});
		
		$(this).find('.flyout').show();
		$(this).addClass("over");
	});
	$("div.color_container a").mouseout(function(){
		$(this).find('.flyout').hide();
		$(this).removeClass("over");
	});
	$("div.color_container a").click(function(){
		$('#display_form').html($(this).next('.hidden_form').html());
		return false;
	});
	$("div.color_container a:eq(0)").trigger("click");
/*	$("div.color_container a").hover(
		function(){
			var imgSrc = $(this).children("img").attr("src");
			var flyoutHtml = "";
			$(this).addClass("over");
			$(this).append(flyoutHtml);
		},
		function(){
			$(this).removeClass("over");
			$(".flyout").remove();
		})
		.click(function(e){
			$("div.color_container a").removeClass("selected");
			$(this).addClass("selected");
			e.preventDefault();
		});*/
	
	// MyMarionnaud Forms
		$('form').submit(function(){
			$(this).find('input').each(function(){
				if($(this).val()==$(this).attr("title")) {
					$(this).val("");
				}
			});
		});
		$('form input').each(function(){
			if($(this).val()=="") {
				$(this).val($(this).attr("title"))
			}
		});
		$('form input').focus(function(){
			if($(this).val()==$(this).attr("title")) {
				$(this).val("");
			}
		});
		$('form input').blur(function(){
			if($(this).val()=="") {
				$(this).val($(this).attr("title"))
			}
		});

	// Cart Change Address	
		$('a.change_address').mouseenter(function(){
			$(this).parent().find('ul.add_to_basket').show();
		});
		$('div.change_address').mouseleave(function(){
			$(this).find('ul.add_to_basket').hide();
		});
		$('ul.add_to_basket a.create').click(function(){
			popup($(this).attr("href"),680,500);
			return false;
		});
		$('ul.add_to_basket a.edit').click(function(){
			popup($(this).attr("href"),680,580);
			return false;
		});
	// MyMarionnaud Wishlist
	
	$('body').delegate('a.add_to_wishlist','mouseenter',function(){
		$(this).parent().find('ul.add_to_wishlist').show();
	});
	$('body').delegate('ul.add_to_wishlist','mouseleave',function(){
		$(this).hide();
	});
	$('body').delegate('ul.add_to_wishlist a.wishlist','click',function(){
		$(this).parent().parent().parent().find('.wishlist_msg').hide().html("");
		var url = $(this).attr("href");
		popup(url.substring(0,url.length-1)+'-json/',400,145);
		return false;
	});
	$('body').delegate('ul.add_to_wishlist a.create','click',function(){
		popup($(this).attr("href"),400,240);
		return false;
	});
	
/*	$('a.add_to_wishlist').mouseenter(function(){
		$(this).parent().find('ul.add_to_wishlist').show();
	});*/
/*	$('div.add_to_wishlist').mouseleave(function(){
		$(this).find('ul.add_to_wishlist').hide();
	});
	$('ul.add_to_wishlist a.wishlist').click(function(){
		$(this).parent().parent().parent().find('.wishlist_msg').hide().html("");
		url = $(this).attr("href");
		popup(url.substring(0,url.length-1)+'-json/',400,145);
		return false;
	});
	$('ul.add_to_wishlist a.create').click(function(){
		popup($(this).attr("href"),400,240);
		return false;
	});*/
	
	$('a#checkout_edit_order_options').click(function(){
		popup($(this).attr("href"),500,390);
		return false;
	});
	
	$('a.not_implemented_yet').click(function(){
		popup('/media/not_implemented_yet.html',400,240);
		return false;
	});
	
	$('a.view_agbs').click(function(){
		popup($(this).attr("href"),700,480);
		return false;
	});
	
	$('a.delete_profile').click(function(){
		popup($(this).attr("href"),400,260);
		return false;
	});

	$('a.password_change').click(function(){
		popup($(this).attr("href"),400,290);
		return false;
	});

	$('a.email_change').click(function(){
		popup($(this).attr("href"),400,290);
		return false;
	});

	// move Wirz Logo according to viewport and height
	if($("div#creator").length>0) {
		var stickyLogoTimeOut = false;
		stickyLogo();
/*		$(window).scroll(function(){
			window.clearTimeout(stickyLogoTimeOut);
			stickyLogoTimeOut = window.setTimeout("stickyLogo()",300);
			stickyLogo();
		});*/
		$(window).resize(function(){
			window.clearTimeout(stickyLogoTimeOut);
			stickyLogoTimeOut = window.setTimeout("stickyLogo()",300);
			stickyLogo();
		});
	}
	$(document).keyup(function(e) {
	  if (e.keyCode == 27) { popup_close(); $('#lightbox-secNav-btnClose').trigger("click"); }   // esc
	});
	
	// Show / hide Basket Flyout
	$("#basket").mouseenter(function(){
		$("#cart_flyout").show();
	});
	$("#basket").mouseleave(function(){
		$("#cart_flyout").hide();
	});

    $('.dyn_city, .dyn_street').each(function(){
        var that = $(this);
        that.data('empty_value', that.find('option'));
    });

    $('body').delegate('input.dyn_zipcode', 'keyup', function(){
        var that = $(this);
        var container = that.closest('div.container_padding');
        var city = $('.dyn_city', container);
        var zipcode = that.val();
        var old_pk = -1;
        var old_val = $('.dyn_city_hidden', container);
        if (old_val.val()){
            old_pk = old_val.val();
            old_val.val(-1);
        }
        if (zipcode.length >= 4){
            $.ajax({
                url: '/ajax/places/',
                data: {'zip_code': zipcode},
                async: true,
                dataType: 'json',
                success: function(data){
                    that.data('places', data);
                    city.find('option').remove();
                    var html = '';
                    $.each(data, function(i, city){
                        var selected_html = '';
                        if(city.pk == old_pk){
                            selected_html = ' selected="selected"'
                        }
                        html += '<option' + selected_html + ' class="pk-' + city.pk + '" value="' + city.name + '">' + city.name + '</option>';
                    });
                    if (html.length){
                        city.find('option').remove().end().append(html);
                    } else {
                        city.find('option').remove().end().append(city.data('empty_value'));
                    }
                    city.trigger('change');
                }
            })
        }
    });

    $('input.dyn_zipcode').each(function(){
        var that = $(this);
        if (that.val()){
            that.trigger('keyup');
        }
    });

    $('body').delegate('select.dyn_city', 'change', function(){
        var that = $(this);
        var container = that.closest('div.container_padding');
        var zipcode = $('.dyn_zipcode', container);
        var street = $('.dyn_street', container);
        var data = zipcode.data('places');
        var pk = parseInt(that.find('option:selected').attr('class').split('-')[1]);
        $('.dyn_city_hidden', container).val(pk);
        var old_pk = '-1';
        var old_val = $('.dyn_street_hidden', container);
		var old_street = old_val.val();
		var custom_street = true;
        if (old_val.val()){
            old_pk = old_val.val();
            old_val.val('-1');
        }
		else{
			custom_street = false;
		}
        $.each(data, function(i, city){
            if (city.pk == pk){
                var html = '';
                var selected_html_tpl = ' selected="selected"';
				$.each(city.streets, function(j, street){
                    var selected_html = '';
                    if(street == old_pk){
                        selected_html = selected_html_tpl;
						custom_street = false;
                    }
					html += '<option' + selected_html + ' value="' + street + '">' + street + '</option>';
                });
                if (html.length){
                    var selected_html = '';
					if (old_val.val() != undefined){
						if (custom_street && old_street != undefined){
							$('.additional_street', container).val(old_street);
							$('.dyn_street', container).hide();
							selected_html = selected_html_tpl;
                            html = html.replace(selected_html, '');
						}
					}
					html = '<option' + selected_html + ' value="other">- - - - ' + get_trans('other_street') + ' - - - -</option>' + html;
                    html = '<option value=""></option>' + html;
                    street.hide().find('option').remove().end().append(html).show();
                } else {
                    street.hide().find('option').remove().end().append(street.data('empty_value')).show();
                }
            }
        });

        $('select.dyn_street', container).trigger('change');
    });

    $('body').delegate('select.dyn_street', 'change', function(){
        var that = $(this);
        var container = that.closest('div.container_padding');
        var add_street = $('.additional_street', container);
		if(that.is(':hidden')){
			$('.dyn_street_hidden', container).val(add_street.val());
		}
		else{
			$('.dyn_street_hidden', container).val(that.val());
		}
        if(that.val() == 'other'){
            that.hide();
            add_street.show().focus();
        }
        else {
            add_street.hide();
        }
	});

	$('body').delegate('input.additional_street', 'change', function(){
		var that = $(this);
		var container = that.closest('div.container_padding');
		if(that.is(':hidden')){
			$('.dyn_street_hidden', container).val($('.additional_street', container).val());
		}
		else{
			$('.dyn_street_hidden', container).val(that.val());
		}
	});

	//hide additional street field and show street field when value is empty when leaving the field
	$('body').delegate('.additional_street', 'focusout', function(){
		var that = $(this);
		var container = that.closest('div.container_padding');
		if(that.val() == ''){
			that.hide();
			$('.dyn_street', container).show();
			$('.dyn_street option:first', container).attr('selected','selected');
			$('.dyn_street', container).change();
		}
	});

	$('body').delegate('.additional_street', 'keyup', function(){
		var that = $(this);
		var container = that.closest('div.container_padding');
		if(that.val() == ''){
			that.hide();
			$('.dyn_street', container).show();
			$(".dyn_street option:first", container).attr('selected','selected');
			$('.dyn_street', container).change();
		}
	});

    $('#id_reg-password, #panel_newaccount #id_password').keyup(function(){
        var that = $(this);
        var span = that.next();
        if (that.val().length < 8){
            span.addClass('error');
        } else {
            span.removeClass('error');
        }
    })

});


function popup_close() {
	$('#popup_bg').hide();
	$('#popup').hide();
	$('#popup_content').html("");
}

function popup(url,width,height,args,method) {
	if(!args) args = {};
	if(!method) method = 'GET';
	$('#popup_content').html("");
	$('#popup_content').addClass("loading");
	$('#popup_content').css("width",width);
	$('#popup_content').css("height",height);
	$('#popup').css("top",($(window).height()-height)/2);
	$('#popup').css("left",($(window).width()-width)/2);
	$('#popup_bg').css("width",$(window).width());
	$('#popup_bg').css("height",$(window).height());
	$('#popup_bg').show();
	$('#popup').show();
	$.ajax({
		url:url,
		data:args,
		type:method,
		error: function(jqXHR, textStatus, errorThrown){
/*			alert(jqXHR)
			alert(textStatus)
			alert(errorThrown)*/
		},
		success:function(html,second){
			try {
				var json = jQuery.parseJSON(html);
				switch(json.action) {
					case "redirect":
						location.href = json.url;
						break;
					default:
						alert(json.action+" nicht definiert");
						break;

				}
			} catch(err) {
				$('#popup_content').removeClass("loading");
				$('#popup_content').append($(html).hide().show());
			}
		}
	});
}

// sticky wirz logo function by uch
function stickyLogo() {
/*	$("div#creator").css("top",$(document).height()-36)
	$("div#creator").css("left",(($(document).width()-1000)/2)+1000)*/
	
}
function stickyLogo1() {
	var heightContent = $("div#content_wrapper").height(); 		// get height of content column
	var heightSubnav = $("div#subnav_wrapper").height();   		// get height of navigation column
	if(heightSubnav >= heightContent){
		heightContent = heightSubnav;														// set the bigger height
	}
	$("div#teaser_wrapper").css({height:heightContent+"px"}); // set height of teaser column same as content or navigation column
	var viewportHeight = $(window).height();									// get the window / viewport height
	var scrolledAmount = $("html").scrollTop();								// get height of what is hidden on top of viewport
	var topPostionDiv = $("div#creator").offset().top;				// get y-coordinate of creator div from top of document
	var relTopPosition = $("div#creator").position().top;			// get y-coordinate relative to teaser column
	var maxHeight = heightContent - relTopPosition;						// calculate max-height
	var computedHeight = (viewportHeight + scrolledAmount) - topPostionDiv; // calculate height
	$("div#creator").stop().animate({height:computedHeight+"px", maxHeight:maxHeight+"px"},600,"easeOutQuart"); // set calculated height
}
