/* 	Funktion: 	Fancy Product Scroller (FPC)
	Author: 	Marc Widmer
*/


$(document).ready(function(){
	//wichtige globale variablen
	var SITE_URL = "http://preview.netzbarkeit.ch/redshop/"
	var PATH_product_detail = "img/products/product_detail/";
	//var act_button = "img/product_switch_1.png";
	//var pas_button = "img/product_switch_0.png";

	// jqueryObj, damit DOM nur einmal abgefragt wird
	var scroller = $("div.hide_area");
	var produkt_wrap = $("div.prod_wrap");
	var produkt = $("div.prod");
	var produkt_bild = $("div.prod img");
	var produkt_bild_detail = $("div.show_pic img");
	var descriptions = $('div.prod_desc_wrap');
	var slide_menu = $('div #slide_menu');
	var slide_menu_element = $('div.slider');
	var menu_element = $('div #menu img');
	var loading = $('div #loading');
	var moving = 0; //Animationsstatus, damit keine Klicks möglich, wenn
	var max_prod = $('div.prod').size(); //Anzahl Produkte
	var max_kat = $('div.slider').size(); //Anzahl Produkte

	var anim_pos = 0; //Position der Animation

	var product_div_w = 732;
	var oWidth = 732; //Halbe Bildbreite
	var oHeight = 278; //Halbe Bildhöhe
	var skalierer = 1; //Skalierungsfaktor
	var desc_h = 20; //Höhe des farbigen Beschreibungsdivs
	var desc_hmin = 1; //Höhe des farbigen Beschreibungsdivs
	var menu_height = (max_kat+1)*22;

	var cat_pos = new Array();

	//browser detection, wird bald abgelöst schon depricated, aber keine andere lösung gefunden
	$.browser.msie6 = jQuery.browser.msie &&
    	parseInt(jQuery.browser.version) == 6 &&
    	typeof window['XMLHttpRequest'] != "object";


	//berechnet die positionen an denen eine produktekategorie beginnt
	function init_product_cats () {
		cat_pos[0] = 0;
		cat_pos[1] = $('div.grp0').size()+cat_pos[0];;
		cat_pos[2] = $('div.grp1').size()+cat_pos[1];
		cat_pos[3] = $('div.grp2').size()+cat_pos[2];
		cat_pos[4] = $('div.grp3').size()+cat_pos[3];
		cat_pos[5] = $('div.grp4').size()+cat_pos[4];
	}

	//alert(max_prod);
	
	if (max_prod <= 1) {
		$('.move_right').hide();
		$('.move_left').hide();
	}
	
	/*
	function zoom_in (product_div) {
		$(product_div).animate({
			width: (oWidth * skalierer) +'px',
			height: (oHeight * skalierer) +'px',
			marginLeft: 30 +'px',
			marginTop: 0 + 'px'
		});
	}

	function zoom_out (product_div) {
		$(product_div).animate({
			width: (oWidth) +'px',
			height: (oHeight) +'px',
			marginLeft: 100 +'px',
			marginTop: 82 + 'px'
		});

	}
	*/

	function slide_menu_open() {
		if ($(slide_menu).height() != menu_height) {
			$(slide_menu).animate({
				height:menu_height + 'px'
			});
		}
	}

	function slide_menu_close(force) {
		if (anim_pos != -1 | force == true) {
			$(slide_menu).animate({
				height:20 + 'px'
			});
		}
	}

	//verkleinert und vergrössert die beschriftungs-divs
	function description(desc_0,desc_1) {
		$(desc_0).animate({
			height: desc_h + 'px'
		});
		$(desc_1).animate({
			height: desc_hmin + 'px'
		});
	}

	//scrollt an die gewünschte produkte position, via pfeil, oder dropdown menu
	function scrollslide(pos,moving) {
			var margin = parseInt(scroller.css("marginLeft"), 10); //MarginLeft ohne "px"
			var change_pos = anim_pos+1;
			var anim_0 = 'img.a'+(change_pos);
			var anim_1 = 'img.a'+(pos);
			var desc_0 = 'div.d'+(pos); //Beschreibung zum vergrössern
			var desc_1 = 'div.d'+(change_pos); //Beschreibung zum verkleinern
			var sprod_0 = 'div.s'+(pos); //Produkt einblenden
			var sprod_1 = 'div.s'+(change_pos); //Produkt ausblenden
			//zoom_out(anim_0);
			//zoom_in(anim_1);
			$(sprod_1).hide();
			description(desc_0,desc_1);


			if (pos != 0) {
				slide_menu_close(true);
			}
			$(scroller) //verschiebt den gesamten DIV
					.animate({
					marginLeft: -((pos-1)*product_div_w)
				},function () {
					if (pos ==0) {
						slide_menu_open();
					}
					anim_pos = pos-1;
					$(sprod_0).show();
					$('#arrow_left').show();
					if (pos == 1) {
						$('.move_left').show();
						$('.move_right').hide();
					}
					else if (pos == max_prod) {
						$('.move_left').hide();
					}
					else {
						$('.move_right').show();
						$('.move_left').show();
					}
			});
	}

	/*
	function ie_png_replace() {
		if ($.browser.msie6 == true) {
			 $(produkt_bild).each(
				function( intIndex ){
					src = $(this).attr("src").split(".png");
					ie_src = src[0]+'.jpg';
					$(this).attr("src",ie_src);
				}
			 );
			 $(produkt_bild_detail).each(
				function( intIndex ){
					src = $(this).attr("src").split(".png");
					ie_src = src[0]+'.jpg';
					$(this).attr("src",ie_src);
				}
			 );
			$('img.arrow').each(
				function( intIndex ){
					src = $(this).attr("src").split(".png");
					ie_src = src[0]+'.gif';
					$(this).attr("src",ie_src);
				}
			 );
		}
	}
	*/



	//transparente png durch jpg ersetzen (nur ie6)
	//ie_png_replace();

	//image preloading für die gesamte website
	//preload(SITE_URL,loading);

	//initialisierung der divs aufgrund der anzhal produkte
	init_product_cats();
	$(scroller).width(max_prod*product_div_w);
	$(produkt_wrap).width((max_prod*product_div_w));
	$(descriptions).width(max_prod*product_div_w);

	$(slide_menu_element).click(function() {
		$(slide_menu_element).removeClass("p_grp_active");
		$(slide_menu_element).addClass("p_grp_inactive");
		$(this).removeClass("p_grp_inactive");
		$(this).addClass("p_grp_active");
		var clickcat = parseInt($(this).attr("class").substring(5,6));
		if (clickcat != 0) {
			$('.move_right').show();
		}
		scrollslide(cat_pos[clickcat]);
	});

	$(slide_menu_element).hover(function() {
		if(!($(this).hasClass("p_grp_active"))) {
			$(this).removeClass("p_grp_inactive");
		}
		},function() {
		if(!($(this).hasClass("p_grp_active"))) {
			$(this).addClass("p_grp_inactive");
		}
	});

	//hoverIntent plug-in konfiguration, damit slidermenu besser funktioniert
	var config = {
     sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
     interval: 200, // number = milliseconds for onMouseOver polling interval
     over: slide_menu_open, // function = onMouseOver callback (REQUIRED)
     timeout: 500, // number = milliseconds delay before onMouseOut
     out: slide_menu_close // function = onMouseOut callback (REQUIRED)
	};

	$(slide_menu).hoverIntent(config);


	//user-interaktionen auf den folgenden zeilen
	$('img.p_switch').click(function() {
		var parent = $(this).parent().attr("id");
		var img_nr = parent.substring(1,2);
		$('#'+parent+' img:eq(0)').attr("src",PATH_product_detail+"p"+img_nr+"_"+$(this).attr("name")+".png");
		$("#"+parent+' img.p_switch').attr("src",pas_button);
		$(this).attr("src",act_button);
	});


	$('#arrow_left img.arrow').hover(function() {
		oversrc = "img/arrow_left_a.gif";
		$(this).attr("src",oversrc);
	},function() {
		outsrc = "img/arrow_left.gif";
		$(this).attr("src",outsrc);
	});

	$('#arrow_right img.arrow').hover(function() {
		oversrc = "img/arrow_right_a.gif";
		$(this).attr("src",oversrc);
	},function() {
		outsrc = "img/arrow_right.gif";
		$(this).attr("src",outsrc);
	});

	$(menu_element).hover(function() {

		if ($(this).attr("class")!= "act") {
			menu_src = $(this).attr("src");
			new_menu_src = menu_src.substring(0,(menu_src.length)-7)+"over.png";
			$(this).attr("src",new_menu_src);
		}
	},function() {
		if ($(this).attr("class")!= "act") {
			$(this).attr("src",menu_src);
		}
	});


	$('.move_left').click(function() {
		if (anim_pos <= max_prod) { // prüft ob noch Produkte dargestellt werden können
			$('.move_right').show();
			if (moving != 1) { // prüft ob derzeit bereits am Scrollen
				moving = 1; // gesetzt, damit keine Doppelklicks möglich sind
				slide_menu_close(true);
				scrollslide(anim_pos+2,moving);
				setTimeout(function(){
				    moving = 0;
				},550);
			}
		}
	});

	$('.move_right').click(function() {
		if (anim_pos > 0) { // prüft ob noch Produkte dargestellt werden können
			$('.move_left').show();
			if (moving != 1) { // prüft ob derzeit bereits am Scrollen
				moving = 1; // gesetzt, damit keine Doppelklicks möglich sind
				scrollslide(anim_pos,moving);
				setTimeout(function(){
				    moving = 0;
				},550);
			}
		}
	});

    // FancyBox Settings
	$("a.group, a#single_image").fancybox({ 
		'zoomSpeedIn': 400, 
		'zoomSpeedOut': 400, 
		'zoomOpacity': true,
		'overlayShow': true,
		'overlayOpacity': 0.8		
	}); 


});