$(document).ready(function() {
	$(".flash").fadeIn().delay(3001).fadeOut();
		
	$("a.fancybox").fancybox();
				
	$(".flash").live("click", function(){$(this).dequeue().fadeOut('fast');});
});


/**
 * @param type message|warning|error
 */
function displayFlashMessage(type, msg) {
	var html = $("<div class=\"flash "+type+"\" style=\"display:none\"><div id=\"flashText\"><strong>"+msg+"</strong></div></div>");
	$("#page-container").append(html);
	html.fadeIn().delay(3001).fadeOut();
}



/**
 * Tabs support
 * example usage (#tab): users/edit.tpl
 * example usage (#tabid): pages/manage.tpl (use "li" with id="tab_n" and "div" with id="tab_n_body")
 */
function initTabs() {
	$(".tabs_area ul.tabs li").each(function(index) {
		$(this).click(function() {
			$(".tabs_area ul.tabs li").removeClass("active");
			$(this).addClass("active");
			$(".tabs_area div.tab_body").fadeOut(0);

			if( this.id!='' ) {
				var id = $(this).attr('id').replace("tab_", "");
				$('#tab_'+id+'_body').fadeIn(0);
				window.previousLocation = window.location.href = setUrlAnchor(window.location.href, 'tabid_'+id);
			}else {
				$(".tabs_area div.tab_body:eq("+index+")").fadeIn(0);
				window.previousLocation = window.location.href = setUrlAnchor(window.location.href, 'tab_'+index);
			}
		});
	});
	
	/* default to show first tab */
	$(".tabs_area div.tab_body").hide();
	$(".tabs_area div.tab_body:eq(0)").show();
	$(".tabs_area ul.tabs li").removeClass("active");
	$(".tabs_area ul.tabs li:first-child").addClass("active");
	var anchors = getUrlAnchor(window.location.href).split('%7C');
	for(var i=0; i<anchors.length; ++i) { 
		if(!anchors[i]) continue;
		
		if(anchors[i].match(/^tab_(\d+)$/)) {
			var tab = anchors[i].replace("tab_", "");
			$(".tabs_area div.tab_body").hide(); // hide all tabs
			$(".tabs_area div.tab_body:eq("+tab+")").show();
			$(".tabs_area ul.tabs li").removeClass("active");
			$(".tabs_area ul.tabs li:eq("+tab+")").addClass("active");
		} 
		else if( anchors[i].match(/^tabid_(\d+)$/) ) {
			var id = anchors[i].replace("tabid_", "");
			$(".tabs_area div.tab_body").hide(); // hide all tabs
			$('#tab_'+id+'_body').show();
			$(".tabs_area ul.tabs li").removeClass("active");
			$('#tab_'+id).addClass("active");
		}
		else {
			$('#'+anchors[i]).click();
		}
	}
}



/**
 * Toggler for divs
 */
$(document).ready(function() {
	$(".toggle_visibility .toggler span").each(function(index) {
		$(this).click(function() {
			var main = $(this).parent().parent();
			var $b = main.find(".body");
			if($b.css('display') == 'block') {
				$b.hide();
				main.find(".toggler span.on").hide();
				main.find(".toggler span.off").show();
			}
			else {
				$b.show();
				main.find(".toggler span.on").show();
				main.find(".toggler span.off").hide();
			}
		});
	});
	
	$(".toggle_visibility .toggler span.on").hide();
	$(".toggle_visibility .body").hide();
	
});


/**
 * If changed location, reload tabs
 */
window.previousLocation = window.location.href;
function monitorLocation() {
	if(window.location.href != window.previousLocation) {
		window.previousLocation = window.location.href;
		initTabs();
	}
}



$(document).ready(function() {
	
	// monitor tabs change made with history.back();
	setInterval ( "monitorLocation()", 300 );
	
	
	$(".datefield").datepicker({dateFormat: 'yy-mm-dd'});
	$('.datetimefield').datetime({
		userLang	: 'pl',
		americanMode: false
	});
	
	// enable resizable boxes
	$(function() {
		$(".html_edit").resizable();
	});
	
	initTabs();
	
	
	enableRebatesTooltip();
	
	$('.cornerbox').each(function() {
		$(this).corner();
	});
	
	// ebook pin
	$('#pin_click').click( function() {
		$('#pin_value').clearQueue().slideDown('slow').delay(5000).slideUp('slow');
	});
});



function enableRebatesTooltip() {
	$(".rebates a").tooltip({
		position: {my: "left top"},
		items: "[href^='#']",
		content: function() {
			return $($(this).attr("href")).html();
		}
	});
}


function pad(number, length) {
	var str = '' + number;
	while (str.length < length) {
		str = '0' + str;
	}
	return str;
}



function getUrlAnchor(url) {
	var idx = url.lastIndexOf('#');
	if(idx > 0) {
		return url.substr(idx+1);
	}
	return "";
}


function setUrlAnchor(url, anchor) {
	var idx = url.lastIndexOf('#');
	if(idx > 0) {
		return url.substr(0, idx) + "#" + anchor;
	}
	return url + '#' + anchor;
}




/**
 * JSON fields validator
 */
function validateForm(form, url) {
 	var t = this;

	this.form = form;
	this.url = url;
	
	this.visitedFields = new Array();
	
	
	
	this.validate = function(e) {
		var r = e.target.id.substring(e.target.id.indexOf('_')+1, e.target.id.lastIndexOf('_'));
		var parent = $(e.target).closest(".row > .field").parent();
		
		if(r.match(/[a-z_]+_\d+$/)) {
			r = r.substring(0, r.lastIndexOf('_'));
			r = r.substr(0, 1).toUpperCase() + r.substr(1);
		}
		
		if(parent.find(".field_status").length == 0) {
			parent.append("<div class='field_status'></div>");
		}
		field = parent.find(".field_status");
		/*
		if($(e.target).val().length < 3) {
			field.hide();
			return;
		}
		else {
			field.show();
		}
		*/
		$.post(this.url, this.form.serialize(), function(json) {
			if(typeof json.data.errors[r] != 'undefined') {
				string = json.data.errors[r].join(', ');
				field.removeClass("valid_msg").addClass("error_msg").html(string);
				parent.find("input").addClass("error");
			}
			else {
				field.removeClass("error_msg").addClass("valid_msg").html("OK");
				parent.find("input").removeClass("error");
			}
		}, 'json');
	};
	
	
	this.form.find("input[type='text'], input[type='password'], select").not(".no_validation").blur(function(e) {
		if(t.visitedFields.indexOf($(this).attr('id')) == -1) {
			t.visitedFields.push($(this).attr('id'));
		}
		t.validate(e);
	});
	this.form.find("input[type='text'], input[type='password']").not(".no_validation").keyup(function(e) {
		if(t.visitedFields.indexOf($(this).attr('id')) >= 0) {
			t.validate(e);
		}
	});
	
	this.form.find("input[type='checkbox'], select").not(".no_validation").change(t.validate);
	
}



function validateForm2(form, url) {

	form.find("input[type='text'], input[type='password'], select").not(".no_validation").blur(function() {
		validateField(this, form, url);
	});
	
	form.find("input[type='checkbox'], select").not(".no_validation").change(function() {
		validateField(this, form, url);
	});

}

function validateField( field_obj, form, url ){

		var field_id = $(field_obj).attr('id');

		var field_name = field_obj.name.substring(0, field_obj.name.lastIndexOf(']'));
		field_name = field_name.substring(field_name.lastIndexOf('[')+1);

// 		if(field_name.match(/[a-z_]+_\d+$/)) {
// 			field_name = field_name.substring(0, field_name.lastIndexOf('_'));
// 			field_name = field_name.substr(0, 1).toUpperCase() + field_name.substr(1);
// 		}
		
		$.post(url+'&field_name='+field_name+'&field_id='+field_id, form.serialize(), function(json) {
			var parent = $('#'+json.data.field_id).closest(".row > .field").parent();

			// Wstawianie pola z informacją, gdy jest błąd lub gdy nie ma błędu i pole jest wypełnione
			if(typeof json.data.errors[json.data.field_name] != 'undefined' 
				|| ( $('#'+json.data.field_id).val()!='' && $('#'+json.data.field_id).val()!='0' )
			) {
				if(parent.find(".field-status").length == 0) {
					parent.append("<div class='field-status'></div>");
				}
			}
			var field = parent.find(".field-status");

			/* Wyświetlanie informacji */
			/* -- gdy jest błąd: */
			if(typeof json.data.errors[json.data.field_name] != 'undefined') {
				string = json.data.errors[json.data.field_name].join(', ');
				field.removeClass("valid_msg").addClass("error-msg").html(string);
				parent.find("input").addClass("error");
			}
			else {
				/* -- gdy nie ma błędu i pole jest wypełnione, to wstawia OK */
				if( $('#'+json.data.field_id).val()!='' && $('#'+json.data.field_id).val()!='0' ) {
					field.removeClass("error-msg").addClass("valid_msg").html("OK");
					parent.find("input").removeClass("error");
				}else {	/* -- gdy pola jeszcze nie wypełniono i nie ma żadnego zgłoszonego błędu, to nie wyświetla żadnej informacji */
					field.remove();
				}
			}
		}, 'json');
	
}




// function ajaxDelete(url, warning, success) {
// 	var t = this;
// 	
// 	t.url = url;
// 	t.warning = warning;
// 	t.success
// 
// }


/* shoppings */
function resumSummary() {
	var sum = 0.0;
	$(".pricing").each(function() {
		var p = parseFloat($(this).text());
		var c = parseInt($(this).parent().parent().find("input").val());
		sum += p*c;
		$(this).parent().parent().find(".summary").text((p*c).toFixed(2));
	});
	$(".summaryall").text(sum.toFixed(2));	
}

$(document).ready(function() {
	resumSummary();
	
	$(".shoppingsformlist input").keyup(function() {
		if($(this).val().length > 0 && parseInt($(this).val()).toString() != $(this).val()) {
			$(this).val(0);
		}
		if($(this).val().length > 0) {
			resumSummary();
		}
	});
	
	$(".shoppingsformlist input").change(function() {
		if(parseInt($(this).val()).toString() != $(this).val()) {
			$(this).val(0);
		}
		resumSummary();
	});
	
	$(".shoppingsformlist_disability_toggler").click(function() {
		if($(this).parent().parent().is(".disabled")) {
			$(this).css("background-image","url('/img/cancel.png')");
			$(this).parent().parent().removeClass("disabled");
			$(this).parent().parent().children().removeClass("disabled");
			$(this).parent().parent().find("input").val(10);
			$(this).parent().parent().find("input").removeAttr("disabled");
		}
		else {
			$(this).css("background-image","url('/img/none.png')");
			$(this).parent().parent().addClass("disabled");
			$(this).parent().parent().children().addClass("disabled");
			$(this).parent().parent().find("input").val(0);
			$(this).parent().parent().find("input").attr("disabled","disabled");
		}
		
		resumSummary();
	});
	

});


/**
 * Beznadziejnie i bezdennie glupie IE nie ma obsluga indexOf()
 * Workaround
 */
if (!Array.indexOf) {
	Array.prototype.indexOf = function (obj, start) {
		for (var i = (start || 0); i < this.length; i++) {
			if (this[i] == obj) {
				return i;
			}
		}
	}
}

/**
 * IE7 i 8 nie znaja pojecia trim(), co psuje trim nawet w jQuery.
 */
if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, ''); 
  }
}



function enableTinyMCE(id) {
	if($("#"+id+"_but_t").is('.selected')) {
		return;
	}
	
	var $w = $('#'+id).parent(); // ui-wrapper
// 	if($w.width() < 611) {
// 		$w.css('width', 611);
// 	}
// 	if($w.height() < 230) {
// 		$w.css('height', 230);
// 	}
	
	$("#"+id+"_but_t").addClass('selected');
	$("#"+id+"_but_s").removeClass('selected');
	
// 	$('#'+id).parent().find(".ui-resizable-handle").hide();
	$w.resizable( "option", "alsoResize", '#'+id+'_tbl' );
	
	tinyMCE.init({
		language: "pl",
		mode : "exact",
		elements: id,
		width : $w.width(),
		height: $w.height(),
		theme_advanced_resizing : false,

		document_base_url: 			'/',
		relative_urls: 					false,
		entity_encoding: 					"raw",
		theme_advanced_source_editor_wrap : true,

		//mode : "textareas",
		plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave",

		// Theme options
		theme : "advanced",
		theme_advanced_buttons1 : "save,newdocument,|,preview,print,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,outdent,indent,|,formatselect,fontsizeselect,forecolor,backcolor,|,removeformat",
		theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,undo,redo,|,bullist,numlist,|,sub,sup,",
		theme_advanced_buttons3 : "link,unlink,anchor,image,media,charmap,|,insertdate,inserttime,|,hr,advhr,|,visualchars,visualaid,nonbreaking,pagebreak,|,fullscreen,|,code,",
		theme_advanced_buttons4 : "tablecontrols,|,|,insertlayer,moveforward,movebackward,absolute,|,styleprops,|,blockquote,cite,abbr,acronym,del,ins,",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_statusbar_location : "bottom",
		theme_advanced_resizing : true,

		// Example content CSS (should be your site CSS)
		//content_css : "css/content.css",

		// Drop lists for link/image/media/template dialogs
		template_external_list_url : "/js/tiny_mce_lists/template_list.js",
		external_link_list : 			( typeof activeLinkList == "undefined" ? [] : activeLinkList ),
		external_link_list_url : "/js/tiny_mce_lists/link_list.js",

		external_image_list : 		( typeof activeImageList == "undefined" ? [] : activeImageList ),
		external_image_list_url : "/js/tiny_mce_lists/image_list.js",
		media_external_list_url : "/js/tiny_mce_lists/media_list.js",

		// Style formats
		style_formats : [
			{title : 'Bold text', inline : 'b'},
			{title : 'Red text', inline : 'span', styles : {color : '#ff0000'}},
			{title : 'Red header', block : 'h1', styles : {color : '#ff0000'}},
			{title : 'Example 1', inline : 'span', classes : 'example1'},
			{title : 'Example 2', inline : 'span', classes : 'example2'},
			{title : 'Table styles'},
			{title : 'Table row 1', selector : 'tr', classes : 'tablerow1'}
		]
	});
}



function disableTinyMCE(id) {
	if($("#"+id+"_but_s").is('.selected')) {
		return;
	}
	
	$("#"+id+"_but_s").addClass('selected');
	$("#"+id+"_but_t").removeClass('selected');
	
	if(confirm('Edytor HTML może zniszczyć formatowanie pola, jeśli pole zawiera kod HTML utworzony poza edytorem.\n\nCzy nadpisać zawartość pola treścią z edytora?')) {
		$('#'+id).val($('#'+id+'_ifr').contents().find('body').html());
	}
	
	var p = $('#'+id+'_parent');
	
	$('#'+id).show()
		.parent().find(".ui-resizable-handle").show();
	
	$('#'+id+'_parent').remove();
}


function chkAddToCart(t) {
	var st = $(t).serialize().length > 0;
	
	if(!st) {
		$(t).find(".err_ebook").clearQueue().slideDown('slow').delay(5000).slideUp('slow');
	}
	return st;
}


/* Funkcja używana do akutalizacji pól z okienek ajaxowych */
function updateAjaxFieldIdAndText( field_id, value_id, field_text, value_text ) 
{
  $('#'+field_id ).val( value_id );
  $('#'+field_text ).val( value_text );

  $('#ajax-block').hide();
}

function updateAjaxFieldIdAndTextInner( field_id, value_id, field_text, value_text ) 
{
  $('#'+field_id ).val( value_id );
  $('#'+field_text ).text( value_text );

  $('#ajax-block').hide();
}




/* ----------- jacascript podczas obslugi koszyka gwo i moze pozniej pozostalych koszykow ------------- */

/**
 * reload cart div
 */
function reloadCart() {
	$("#cartbox_container").load('/carts/cartBox');
}

function addToCart($form) {
	$.post($form.attr('action'), $form.serialize(), function(json) {
		if(json.action == 'redirect') {
			window.location.href = json.redirect;
		}
		else {
			displayFlashMessage(json.message_type, json.message);
			reloadCart();
		}
	});
}


$(".cart_form form").live("submit", function() {
	addToCart($(this));
	return false;
});

