/**
 * Javascript pro stranku bisaku
 */
var bisaku = {
	order: {
		// Typy doruceni
		deliveryTypes: new Array(),
		// Data prstenu
		data: null,

		/**
		 * Inicializace objednavky
		 * @returns
		 */
		init: function() {
			// Pridani tlaticka na tisk
			if($("#final-buttons").length > 0) {
				$("#final-buttons").append($('<span class="inline-btn calc"><input onclick="window.print()" type="button" value="Vytisknout" /></span>'));
			}
			
			if($("#ringText").length > 0) {
				bisaku.order.data = eval($("#order-data").html());
				
				$("#order-form").each(function(){
					$(this).ajaxForm({
						data: {ajax: 1},
						success: function(response){
							$("#product").html($(response).find("#product").html());
							//tb_init('a.thickbox, area.thickbox, input.thickbox');
							bisaku.order.init();
						}
					});
					$(this).submit(function(){
						return false;
					});
				});
				
				$("#order-button")
					.attr('href', 'javascript:')
					.click(function(){
						$("#product-price-description").html("cena objednávky:");
						$("#order-form")
							.removeClass("order-none")
							.addClass("order-visible");
						$("#order-step1").removeClass("order-none");
						$("#order-step2").addClass("order-none");
						$("#order-button-step1").addClass("active");
						$("#order-button-step2").removeClass("active");
						window.location.hash = "#product-price";
					});
				
				if($(".legends").length > 0) {
					$(".legends").remove();
					$("#order-form").prepend(
						$("<p></p>")
							.addClass("legends")
							.append(
								$("<a></a>")
									.attr("id", "order-button-step1")
									.attr("href", 'javascript:')
									.html('Informace o prstenu')
									.click(function(){
										$("#order-button-step1").addClass("active");
										$("#order-button-step2").removeClass("active");
										$("#order-step1").removeClass("order-none");
										$("#order-step2").addClass("order-none");
									})
							)
							.append(
								$("<a></a>")
									.attr("id", "order-button-step2")
									.attr("href", 'javascript:')
									.html('Kontaktní údaje')
									.click(function(){
										$("#order-button-step2").addClass("active");
										$("#order-button-step1").removeClass("active");
										$("#order-step2").removeClass("order-none");
										$("#order-step1").addClass("order-none");
									})
							)
					);
					if(!$("#order-step1").hasClass("order-none")) {
						$("#order-button-step1").addClass("active");
					} else if(!$("#order-step2").hasClass("order-none")) {
						$("#order-button-step2").addClass("active");
					}
					
					$("#order-next-step input").remove();
					$("#order-next-step").append(
						$('<input type="button" name="form[info]" value="Další krok" />')
							.click(function(){
								$("#order-button-step2").addClass("active");
								$("#order-step2").removeClass("order-none");
								$("#order-button-step1").removeClass("active");
								$("#order-step1").addClass("order-none");
							})
					);
				}
				
				$("#ringText").change(function(){
					bisaku.order.showText();
				}).change();
				
				$("#delivery").change(function(){
					bisaku.order.showDelivery();
				}).change();
				$("#delivery-refresh").remove();
				
				$("#orderType").change(function(){
					bisaku.order.showType();
					bisaku.order.calculatePrice();
				}).change();
				
				$("#order-info input, #order-info select").change(function(){
					bisaku.order.calculatePrice();
				});
				
				$("#woman-version").change(function() {
					var version = $("#woman-version").val();
					$("#woman_jewell_number").html(bisaku.order.data.woman[version].jewell_number);
					$("#goldColor")
						.html('')
						.append('<option value="0">dle vzoru</option>');
					for(var i in bisaku.order.data.woman[version].gold_color) {
						$("#goldColor").append('<option value="'+i+'">'+bisaku.order.data.woman[version].gold_color[i]+'</option>');
					}
					$("#womanStone").html('');
					for(var i in bisaku.order.data.woman[version].jewell) {
						if(i == bisaku.order.data.woman[version].jewell_main) {
							$("#womanStone").append('<option selected="selected" value="'+i+'">'+i+'</option>');
						} else {
							$("#womanStone").append('<option value="'+i+'">'+i+'</option>');
						}
					}
					bisaku.order.calculatePrice();
				});
				
				$("#order-recalculate").remove();
			}
		},
		
		/**
		 * Vlozi do deliveryTypes novy zaznam
		 * @param text Text zaznamu
		 * @param price Cena zaznamu
		 */
		addDeliveryType: function(text, price) {
			bisaku.order.deliveryTypes[bisaku.order.deliveryTypes.length] = new Array(text, price);
		},
		
		/**
		 * @returns Array Delivery type [0] = text, [1] = cena
		 */
		getDeliveryType: function() {
			var value = parseInt($('#delivery option:selected').val()); 
			return bisaku.order.deliveryTypes[value];
		},
		
		/**
		 * Zobrazi objednavku a prejde na ni
		 */
		showOrder: function() {
			$("#order").css("display", "block");
		},
		
		/**
		 * Skryje objednavku
		 */
		hideOrder: function() {
			$("#order").css("display", "none");
		},
		
		/**
		 * Zobrazi, nebo skryje podle checkboxu okno na zadani vyrezavaneho textu
		 */
		showText: function() {
			if($("#ringText").attr("checked")) {
				$("#order-cut").css("display", "block");
			} else {
				$("#order-cut").css("display", "none");
				$("#order-cut input").val("");
				$("#order-cut input").keyup();
			}
		},
		
		/**
		 * V pripade zmene zpusobu prevzeti se zmeni text pod selectem
		 */
		showDelivery: function() {
			var deliveryType = bisaku.order.getDeliveryType();
			if(!deliveryType){
				return;
			}
			
			$("#delivery-text").html(deliveryType[0]);
		},
		
		/**
		 * Zobrazi objednavaci data pro informace o prstenu
		 */
		showRing: function() {
			$("#order-ring").css("display", "block");
			$("#order-contact").css("display", "none");
			$("#order-link-ring").addClass("active");
			$("#order-link-contact").removeClass("active");
		},
		
		/**
		 * Zobrazi kontaktni formular
		 */
		showContact: function() {
			$("#order-ring").css("display", "none");
			$("#order-contact").css("display", "block");
			$("#order-link-ring").removeClass("active");
			$("#order-link-contact").addClass("active");
		},
		
		// Prepocita cenu prstenu podle zadanych hodnot
		calculatePrice: function() {
			if($("#order-step1").css("display") != "block") {
				return;
			}
			
			var type = parseInt($('#orderType option:selected').val());
			var price = 0;
			var deposit = 0;
			
			// spocitani muzske ceny
			if(type == 0 || type == 1) {
				var version = parseInt($('#woman-version option:selected').val());
				if(!(version > 0)) {
					version = 1;
				}
				
				var size = parseInt($('#womanRingSize option:selected').val());
				var jewell = $('#womanStone option:selected').val();
				
				price += (size - 53) * parseInt(bisaku.order.data.woman[version].price_size_add);
				price += parseInt(eval("bisaku.order.data.woman["+version+"].jewell." + jewell));
			}
			
			// spocitani zenske ceny
			if(type == 0 || type == 2) {
				var version = parseInt($('#man-version option:selected').val());
				if(!(version > 0)) {
					version = 1;
				}
				
				var size = parseInt($('#manRingSize option:selected').val());
				price += (size - 63) * bisaku.order.data.man[version].price_size_add;
				price += parseInt(bisaku.order.data.man[version].price);
			}
			
			// Spocitani zalohy
			var deposit = ((price / 3) % 1000) < 500 ? 0: 500;
			deposit += Math.floor(price / 3 / 1000) * 1000;
			
			$("#progress-panel")
				.stop()
				.css("display", "block")
				.animate({
					"opacity": 1
				}, 250, "swing", function(){
					setTimeout(function(){
						$("#order-price, #product-price").html(price);
						$("#product-price").append(',- Kč');
						$("#order-deposit").html(deposit);
						
						$("#progress-panel")
							.stop()
							.animate({
								"opacity": 0
							}, 250, "swing", function(){
								$("#progress-panel")
									.css("display", "none")
									.css("opacity", 0);
							});
					}, 500);
				});
		},
		
		// Vyber typu objednavky (oba prsteny, zensky, muzsky)
		showType: function() {
			switch(parseInt($('#orderType option:selected').val())) {
				case 0:
					$(".sex-form").removeClass("sex-form-man").removeClass("sex-form-woman");
					$(".order-woman").css("display", "inline-block");
					$(".order-man").css("display", "inline-block");
					break;
				case 1:
					$(".sex-form").removeClass("sex-form-man").addClass("sex-form-woman");
					$(".order-woman").css("display", "inline-block");
					$(".order-man").css("display", "none");
					break;
				default:
					$(".sex-form").addClass("sex-form-man").removeClass("sex-form-woman");
					$(".order-woman").css("display", "none");
					$(".order-man").css("display", "inline-block");
					break;
			}
		}
	},
	
	page: {
		baseUrl: null,
		musicPlay: true,
		music: "http://snubni-prsteny.cz/public/files/default/music.mp3",
		// Slouzi, jako pomocna promenna k zamezeni vytvoreni historie
		historyFlag: false,
		
		/**
		 * Inicializace ovladani hudby
		 */
		initMusic: function() {
			$("#music-down").click(function(){
				document.getElementById('player').SetVariable('player:jsPause', '');
				$(this).addClass("down-active");
				$("#music-up").removeClass("up-active");
				bisaku.page.musicPlay = false;
				//document.cookie = 'bisakuplayer=false; path=/';
			});
			$("#music-up").click(function(){
				document.getElementById('player').SetVariable('player:jsPlay', '');
				$(this).addClass("up-active");
				$("#music-down").removeClass("down-active");
				bisaku.page.musicPlay = true;
				//document.cookie = 'bisakuplayer=true; path=/';
			});
			
			if(bisaku.page.musicPlay == false) {
				$("#music-down").click();
			}
			$("#music").css("display", "block");
		},
		
		/**
		 * Inicializuje stranku. Zmeni vsechny odkazy odkazujici na bisaku
		 * na ajaxove. Provede upravu formularu, aby se posilali ajaxem.
		 * @param body object jQuery element
		 */
		init: function(body) {
			bisaku.order.init();
			
			// Inicializace seznamu polozek v kolekci
			if(!$("#search-result").length) {
				if($("#product-list").length > 0) {
					// History init
					$.history.init(function(hash) {
						if(hash.match("zpet")) {
							return;
						}
						
						if(hash == '') {
							bisaku.page.historyFlag = true;
							$("#product-list a:first").click();
							bisaku.page.historyFlag = false;
						}
						hash = hash+"-";
						if($("#"+hash).length > 0) {
							$("#"+hash).find("a").click();
						}
					});
					
					// Nastaveni odkazu v seznamu prstenu
					$("#product-list a").each(function(){
						var link = $(this).attr("href");
						var hash = link.split('/');
						hash = hash[hash.length-1];
						
						$(this).click(function(){
							$.post(link, {ajax: 1}, function(data) {
								var response = $(data);
								$("#product").html(response.find("#product").html());
								//tb_init('a.thickbox, area.thickbox, input.thickbox');
								bisaku.order.init();
							});
							
							if(bisaku.page.historyFlag == false) {
								$.history.load(hash);
							}
							$("#product-list li.selected-ring").removeClass("selected-ring");
							$(this).parent().parent().parent().addClass("selected-ring");
							$("#order-form").css("display", "none");
						});
						
						if(hash == window.location.hash.substring(1)) {
							$(this).click();
						}
						
						$(this).attr("href", "javascript:");
					});
				}
			}
		},
		
		/**
		 * Zkontroluje vsechny a elementy v danem jquery prvku.
		 * Nahradi jejich odkazy v pripade vnitrniho odkazu na javascript
		 * @param element jQuery element
		 * @returns
		 */
		checkLinks: function(element) {
			element.find("a").each(function(){
				var el = $(this);
				if(el.hasClass("thickbox")) {
					thickbox = true;
					return;
				}
				if(el.attr("target").length > 0) {
					return;
				}
				if(el.attr("href") && (el.attr("href").search(bisaku.page.baseUrl) != 0)){
					return;
				}
				var target = encodeURI(el.attr("href"));
				if(target.search('uvod') != -1){
					target = encodeURI(bisaku.page.baseUrl);
				}
				el.attr("href", "javascript:");
				el.click(function(){
					//bisaku.page.load(target);
					$.history.load(target);
				});
			});
		},
		
		/**
		 * Pomoci ajaxoveho dotazu nacte stranku
		 * @param string page
		 * @param bool notLoad
		 * @returns
		 */
		load: function(page) {
			if(!page.match(/^\//)) {
				return;
			}
		
			if(page != "") {
				page = page.replace(/#.*/, '');
				
				$.post(page, {ajax: 1}, function(data) {
					$("#refresh")
						.html(data);
					bisaku.page.init($("#refresh"));
				});
			} else {
				bisaku.page.init($("#refresh"));
			}
		},
	},
	
	boxnew: {
		// Seznam vsech boxnew novinek
		list: null,
		// Cas po kterem se bude menit obsah
		time: 10000,
		// Fade in, fade out cas
		fadeTime: 400,
		// Aktualni index v seznamu
		current: 0,
		// Adresar v kterem jsou ulozene obrazky s boxama novinek
		imgUrl: null,
		timeout: null,
		
		// Inicializace boxu novinek
		init: function() {
			if(bisaku.boxnew.list != null && bisaku.boxnew.list.length > 1) {
				if(bisaku.boxnew.timeout){
					clearTimeout(bisaku.boxnew.timeout);
				} 
				bisaku.boxnew.timeout = setTimeout(function(){bisaku.boxnew.showNext(bisaku.boxnew.time);}, bisaku.boxnew.time);
			}
		},
		
		// Zobrazeni dalsi novinkovy box z seznamu
		showNext: function(time) {
			$(".trailer-box")
				.animate({opacity:0}, bisaku.boxnew.fadeTime, "swing", function(){
					$(this).find("a").attr("href", bisaku.boxnew.list[bisaku.boxnew.current].url);
					$(this).find("img").attr("src", bisaku.boxnew.imgUrl + bisaku.boxnew.list[bisaku.boxnew.current].id + ".jpg");
					$(this).find("span.name span").html(bisaku.boxnew.list[bisaku.boxnew.current].name);
					$(this).animate({opacity:1}, bisaku.boxnew.fadeTime, "swing");
					bisaku.page.checkLinks($(this));
				});
			
			// Zavolani dalsiho pruchodu
			bisaku.boxnew.current++;
			bisaku.boxnew.current = bisaku.boxnew.current % bisaku.boxnew.list.length;
			bisaku.boxnew.timeout = setTimeout(function(){bisaku.boxnew.showNext(time);}, time);
		}
	}
};

$(function(){
	// Inicializace boxu novinek
	bisaku.boxnew.init();
	
	// Ajaxove obnovavani stranky
	bisaku.page.init($("#refresh"));
	
	$('.info-ico').tooltip({ position: "right" });
});

