/*
 * Because jQuery conflicts with Prototype we need to unconflict jQuery
 */
jQuery.noConflict();

var init_filter_calendar = function() {

	jQuery.datepicker.setDefaults(jQuery.datepicker.regional['sv']);

	if(jQuery('#gallery-filter-calendar').length > 0) {

		jQuery('#gallery-filter-calendar').datepicker({
			dateFormat: 'yy-mm-dd',
			onClose : function(dateText, inst) {

				add_loader();
				setGalleryLocation(document.getElementById('gallery-filter-calendar'), '/gallery');
			}
		});
	}
}

var add_loader = function() {
	var output = '<div id="loading" style="display: none"><img src="/skin/frontend/zuperbox/default/images/loading_animation.gif" alt="" />Laddar...</div>';

	jQuery('body').append(output);
	jQuery('div#loading').slideDown('fast');
}

var remove_loader = function() {
	jQuery('div#loading').slideUp('fast', function() {
		jQuery(this).remove();
	});
}

var product_info_nav = function() {
	jQuery("#product-details-tabs .nav_information").click(function(){
		jQuery("#product-details-tabs .tabs a").removeClass("active");
		jQuery(this).addClass("active");
		jQuery("#product-facts").hide();
		jQuery("#product-references").hide();
		jQuery("#product-info").fadeIn("fast");

		return false;
	});
	
	jQuery("#product-details-tabs .nav_facts").click(function(){
		jQuery("#product-details-tabs .tabs a").removeClass("active");
		jQuery(this).addClass("active");
		jQuery("#product-info").hide();
		jQuery("#product-references").hide();
		jQuery("#product-facts").fadeIn("fast");

		return false;
	});
	
	jQuery("#product-details-tabs .nav_references").click(function(){
		jQuery("#product-details-tabs .tabs a").removeClass("active");
		jQuery(this).addClass("active");
		jQuery("#product-facts").hide();
		jQuery("#product-info").hide();
		jQuery("#product-references").fadeIn("fast");

		return false;
	});
}

var anythingslider = function() {
	jQuery('#product_image_slider').anythingSlider({
		width			: 720,			// Override the default CSS width
		height			: 250,			// if resizeContent is false, this is the default height if panel size is not defined
		resizeContents	: false,		// If true, solitary images/objects in the panel will expand to fit the viewport
		autoPlay		: true,			// This turns off the entire slideshow FUNCTIONALY, not just if it starts running or not
		buildArrows		: false,
		delay			: 9000,			// How long between slideshow transitions in AutoPlay mode (in milliseconds)
		easing			: 'easeInOutExpo'
	});
}

var addtocart_options = function() {
	add_loader();
	jQuery.get(base_url+'zuperajax/index/addtocart', {
		productId: jQuery('#product_addtocart_form').find('input[name=product]').val(),
		qty: jQuery('input#qty').val()
	}, function(data) {
		show_toplayer(data);
		product_delivery();
		continue_shopping_link();
		remove_loader();

		jQuery('#toplayer').find('form#product_options').unbind('submit').submit(function() {
			if(jQuery(this).find('input[name=shipping]:checked').val() == undefined) {
				alert('Var vänlig och välj ett fraktalternativ innan du går vidare');
				return false;
			}
			add_loader();
			jQuery.post(base_url+'zuperajax/index/addtocart', jQuery(this).serialize(), function(data) {
				var secondaryDone = true;
				if(data.secondaryAddtocartUrl) {
					var secondaryDone = false;
					jQuery.get(data.secondaryAddtocartUrl, function() {
						secondaryDone = true;
					});
				}
				jQuery.get(data.addtocartUrl, function() {
					if(data.hasCrossells != false) { /* Display another div with cross sells */
						jQuery('#toplayer').html(data.hasCrossells);
						remove_loader();
					} else { // Redirect to onestepcheckout
						var timer = setInterval(function() { // wait for secondary cart url
							if(secondaryDone) {
								window.clearInterval(timer)
								window.location.replace(base_url+'onestepcheckout');
							}
						}, 100);
					}
				});

			}, 'json');

			return false;
		});
	});
}

var edit_cart_options = function() {
	jQuery('a.edit_cart_options').unbind('click').click(function() {
		

		return false;
	});
}

var continue_shopping_link = function() {
	jQuery('a.continue_shopping').unbind('click').click(function() {
		if(jQuery('form#product_options').find('input[name=shipping]:checked').val() == undefined) {
			alert('Var vänlig och välj ett fraktalternativ innan du går vidare');
			return false;
		}
		add_loader();
		jQuery.post(base_url+'zuperajax/index/addtocart', jQuery('form#product_options').serialize(), function(data) {
			var secondaryDone = true;
			if(data.secondaryAddtocartUrl) {
				var secondaryDone = false;
				jQuery.get(data.secondaryAddtocartUrl, function() {
					secondaryDone = true;
				});
			}
			jQuery.get(data.addtocartUrl, function() {
				var cart_link = jQuery('a.top-link-cart');
				jQuery(cart_link).html(jQuery(cart_link).html().replace(/^(\w+)/, function(n){
					var num = ++n;
					if(isNaN(num)) return 1;
					return num
				}));

				jQuery("#toplayer, #toplayer-background").fadeOut().remove();
				remove_loader();
			});
		}, 'json');

		return false;
	});
}

function addtocartfromlist(productId, href, edit) {
	add_loader();
	var link = jQuery(this);

	if(edit == undefined) {
		var edit = 0;
	} else {
		var edit = 1
	}
	jQuery.get(base_url+'zuperajax/index/addtocart', {
		productId: productId,
		qty: 1,
		edit: edit
	}, function(data) {
		show_toplayer(data);
		product_delivery();
		continue_shopping_link();
		remove_loader();

		jQuery('#toplayer').find('form#product_options').unbind('submit').submit(function() {
			if(jQuery(this).find('input[name=shipping]:checked').val() == undefined) {
				alert('Var vänlig och välj ett fraktalternativ innan du går vidare');
				return false;
			}
			add_loader();

			jQuery.post(base_url+'zuperajax/index/addtocart', jQuery(this).serialize(), function(data) {
				var secondaryDone = true;
				if(data.secondaryAddtocartUrl) {
					var secondaryDone = false;
					jQuery.get(data.secondaryAddtocartUrl, function() {
						secondaryDone = true;
					});
				}
				if(data.edit == 1) {
					var timer = setInterval(function() { // wait for secondary cart url
						if(secondaryDone) {
							window.clearInterval(timer)
							window.location.reload();
						}
					}, 100);
				} else {
					jQuery.get(data.addtocartUrl, function() {
						if(data.hasCrossells != false) { /* Display another div with cross sells */
							jQuery('#toplayer').html(data.hasCrossells);
							remove_loader();
						} else { // Redirect to onestepcheckout
							var timer = setInterval(function() { // wait for secondary cart url
								if(secondaryDone) {
									window.clearInterval(timer)
									window.location.replace(base_url+'onestepcheckout');
								}
							}, 100);
						}
					});
				}
			}, 'json');

			return false;
		});
	});

	return false;
}

var product_delivery = function() {
	var present_box		= jQuery("#product_options .present_box");
	var download_pdf	= jQuery("#product_options .download_pdf");
	var posten			= jQuery("#product_options .mail");
	var shipping_box	= jQuery("#shipping_box");
	var shipping_pdf	= jQuery("#shipping_pdf");
	var shipping_mail	= jQuery("#shipping_mail");
	var pdf_theme		= jQuery("#pdf_theme");
	
	present_box.click(function(){
		present_box.addClass("active");
		download_pdf.removeClass("active");
		posten.removeClass("active");
		shipping_box.attr("checked", true);
		shipping_pdf.attr("checked", false);
		shipping_mail.attr("checked", false);
		pdf_theme.hide();
	});
	
	shipping_box.click(function(){
		present_box.addClass("active");
		download_pdf.removeClass("active");
		posten.removeClass("active");
		shipping_box.attr("checked", true);
		shipping_pdf.attr("checked", false);
		shipping_mail.attr("checked", false);
		pdf_theme.hide();
	});
	
	download_pdf.click(function(){
		download_pdf.addClass("active");
		present_box.removeClass("active");
		posten.removeClass("active");
		shipping_pdf.attr("checked", true);
		shipping_box.attr("checked", false);
		shipping_mail.attr("checked", false);
		pdf_theme.fadeIn("fast");
	});
	
	shipping_pdf.click(function(){
		download_pdf.addClass("active");
		present_box.removeClass("active");
		posten.removeClass("active");
		shipping_pdf.attr("checked", true);
		shipping_box.attr("checked", false);
		shipping_mail.attr("checked", false);
		pdf_theme.fadeIn("fast");
	});
	
	shipping_mail.click(function(){
		posten.addClass("active");
		present_box.removeClass("active");
		shipping_pdf.removeClass("active");
		shipping_mail.attr("checked", true);
		shipping_box.attr("checked", false);
		shipping_pdf.attr("checked", false);
		pdf_theme.hide();
	});
	
	posten.click(function(){
		posten.addClass("active");
		present_box.removeClass("active");
		download_pdf.removeClass("active");
		shipping_mail.attr("checked", true);
		shipping_box.attr("checked", false);
		shipping_pdf.attr("checked", false);
		pdf_theme.hide("fast");
	});
}

var show_toplayer = function(data) {
	remove_toplayer();
	jQuery('body').append(data);
	jQuery('#toplayer-background, #toplayer').fadeIn('fast');
	jQuery('#toplayer-background').css({
		'height' : jQuery(document).height()
	});
	jQuery('#toplayer').css({
		'top' : jQuery(window).scrollTop() + 50
	});
}

var remove_toplayer = function() {
	jQuery('#toplayer-background, #toplayer').remove();
}

var close_toplayer = function() {
	jQuery("#toplayer a.close, #toplayer-background").live('click', function(){
		jQuery("#toplayer, #toplayer-background").fadeOut().remove();
		return false;
	});
}

var slide_to_newsletter = function() {
	jQuery(".slide_to_newsletter").click(function(){
		jQuery("html").animate({
			scrollTop: jQuery(document).height()
		}, "fast");
		jQuery("#newsletter_signup").select();
		return false;
	});
}

function addcrosstocart(productId, url) {
	jQuery.get(url, function() {
		jQuery('li#item-'+productId).hide('fast').html('<li>Produkten har lagts till i din varukorg</li>').show('fast');
	});
}

var newsletter_input = function() {
	var newsletter_signup = jQuery("#newsletter_signup");

	var org_val = newsletter_signup.val();
	
	// Eng
	if (newsletter_signup){
		newsletter_signup.bind('focus',function(){
			if(newsletter_signup.val()== org_val){
				newsletter_signup.val('');
			}
		});
		newsletter_signup.bind('blur',function(){
			if(newsletter_signup.val()==''){
				newsletter_signup.val(org_val);
			}
		});
	}
}

var fade_messages = function() {
	if(jQuery('ul.messages').length > 0) {
		setTimeout(function() {
			jQuery('ul.messages').fadeOut('slow');
		}, 10000);
		
	}
}

var close_checkout_topplayer = function() {
	var wrapper		= jQuery("#onestepcheckout-login-popup");
	var background	= jQuery("#onestepcheckout_popup_overlay");
	var close_btn	= jQuery("#onestepcheckout-login-popup .close a");
	
	close_btn.click(function(){
		wrapper.fadeOut("fast");
		background.fadeOut("fast");
		return false;
	});
}

var show_terms = function() {
	add_loader();
	jQuery.get(base_url+'zuperajax/index/getterms', function(data) {
		show_toplayer(data);
		remove_loader();
	});

	return false;
}

var tiptip = function() {
	if (jQuery(".questionmark_link").length > 0){
		jQuery(".questionmark_link").tipTip();
		jQuery("a.questionmark_link").click(function(){
			return false;
		});
	}
}

var giftcard_extension = function() {
	if(jQuery('a.extend_giftcard').length > 0) {
		jQuery('a.extend_giftcard').unbind('click').click(function() {
			add_loader();
			jQuery.get(base_url+'zuperajax/index/extendgiftcard',{
				giftcardId: jQuery(this).attr('rel').split('-').pop()
			}, function(data) {
				show_toplayer(data);
				giftcard_extension_form();
				remove_loader();
			});
			return false;
		});
	}
}

var giftcard_extension_form = function() {
	jQuery('form#giftcard_extension_form').live('submit', function() {
		add_loader();
		jQuery.post(base_url+'zuperajax/index/extendgiftcard', jQuery(this).serialize(), function(data) {
			if(data.status == 'success') {
				jQuery.get(data.addtocartUrl, function() {
					window.location.replace(base_url+'onestepcheckout');
				});
			}
		}, 'json');

		return false;
	});
}

var checkout_fields_transform = function() {
	jQuery('div.input-firstname input').change(function() {
		alert(capitAll(jQuery(this).val()));
		jQuery(this).val(capitAll(jQuery(this).val()));
	});
}

var capitAll = function(e){
	e= window.event? event.srcElement: e.target;
	var str= e.value.toLowerCase();
	var Rx= /\b([a-z]+)\b/ig;
	str= str.replace(Rx,function(w){
		return w.charAt(0).toUpperCase()+w.substring(1);
	});
	return str;
}


/**
* And off we go...
*/
jQuery(document).ready(function(){
	// addtocart_options();
	product_info_nav();
	anythingslider();
	close_toplayer(); // Will listen using live
	slide_to_newsletter();
	newsletter_input();
	fade_messages();
	close_checkout_topplayer();
	tiptip();
	init_filter_calendar();
	giftcard_extension();
});

