/**
 * AJAX SUBMIT
 */

$("#livebox form.ajax").livequery("submit", function(e) {
    e.preventDefault();
	$(this).ajaxSubmit(e, jQuery.websystem.ajax.livebox.update);
	return false;
});

$("#livebox form.ajax :submit").livequery("click", function (e) {
	e.preventDefault();
	$(this).ajaxSubmit(e, jQuery.websystem.ajax.livebox.update);
	return false;
});


$("#livebox form.ajax :submit").livequery(function () {
                        this.oldonclick = this.onclick;
                        this.onclick = null;
                        $(this).click(function(e) {
                                if ($.isFunction(this.oldonclick) && !this.oldonclick())
                                        return false;
								$(this).ajaxSubmit(e, jQuery.websystem.ajax.livebox.update);
                                return false;
                        });
}, function () {});

$("form.ajax").livequery("submit", function (e) {
	$(this).ajaxSubmit(e);
	return false;
});


$("form.ajax :submit").livequery(function () {
                        this.oldonclick = this.onclick;
                        this.onclick = null;
                        $(this).click(function(e) {
                                if ($.isFunction(this.oldonclick) && !this.oldonclick())
                                        return false;
                                $(this).ajaxSubmit(e);
                                return false;
                        });
}, function () {});

/**
 * Bind keys
 */
function forms_bindKeys() {
	var liveForm = $("#livebox form");
	$(document).bind('keydown', 'ctrl+s', function(e) {
		liveForm.ajaxSubmit(e, jQuery.websystem.ajax.livebox.update);
		e.stopPropagation();
		e.preventDefault();
		return false;
	});
	$(document).bind('keydown', 'esc', function(e) {
		jQuery.websystem.ajax.livebox.close();
		e.stopPropagation();
		e.preventDefault();
		return false;
	});

}
function forms_unbindKeys() {
	$(document).unbind('keydown', 'ctrl+s', function(){});
	$(document).unbind('keydown', 'esc', function(){});
}



/**
 * jQuery form helper
 */
$('input.generatePass').livequery(
function(){
	var input = $('input.generatePass');
	var parent = input.parent();
	parent.append('<a class="form-helper generatePass" href="javascript:;" title="'+input.attr('title')+'"><span class="icon icon-refresh">'+jsTranslate("Generate")+'</span></a>');
	input.attr('title', '');
	parent.children('a.generatePass').click(function() {
		input.val(secretPassword());
	});
});

$('input.webalize').livequery(
function(){
	var input = $('input.webalize');
	var parent = input.parent();
	parent.append('<a class="form-helper webalize" href="javascript:;" title="'+input.attr('title')+'"><span class="icon icon-refresh">'+jsTranslate("Generate")+'</span></a>');
	input.attr('title', '');
	parent.children('a.webalize').click(function() {
		input.val(webalize(document.getElementById(input.attr('rel')).value));
	});
});

$('input.webalize').livequery(
function(){
	var input = $('input.webalize');
	input.width(input.width()-input.parent().children('a.webalize').width()-6);
});

$('input.generatePass').livequery(
function(){
	var input = $('input.generatePass');
	input.width(input.width()-input.parent().children('a.generatePass').width()-6);
});


// datepicker
$("input.datepicker:not([readonly])").livequery(function () {
	$(this).datepicker();
});

/**
 * @link	http://www.mediacollege.com/internet/javascript/number/random.html
 */
function secretPassword() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var secretPassword = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		secretPassword += chars.substring(rnum,rnum+1);
	}
	return secretPassword;
}

// TODO: Add more characters
var nodiac = { 
	'á': 'a', 'č': 'c', 'ď': 'd', 'é': 'e', 'ě': 'e', 'í': 'i', 'ó': 'o',
	'ř': 'r', 'š': 's', 'ť': 't', 'ú': 'u', 'ů': 'u', 'ý': 'y', 'ž': 'z'};

/** Vytvoření přátelského URL
 * @param string řetězec, ze kterého se má vytvořit URL
 * @return string řetězec obsahující pouze čísla, znaky bez diakritiky, podtržítko a pomlčku
 * @copyright Jakub Vrána, http://php.vrana.cz
 */
function webalize(s) {
    s = s.toLowerCase();
    var s2 = '';
    for (var i=0; i < s.length; i++) {
        s2 += (typeof nodiac[s.charAt(i)] != 'undefined' ? nodiac[s.charAt(i)] : s.charAt(i));
    }
    return s2.replace(/[^a-z0-9_]+/g, '-').replace(/^-|-$/g, '');
}

/*
 * Zobrazeni a skryti plateb podle typu dopravy
 */
function setPayment(el) {
	var value = $(el).val();
	var oldValue;
	if($(el).is("select")) {
		oldValue = $("#frmrecountBasket-payment").val();
		$(".shipping"+value).css({display:"block"});
		$("[class*=shipping]:not(.shipping"+value+")").css({display:"none"});
		if($("[class*=shipping][value="+oldValue+"]").css("display")=="none") {
			$("#frmrecountBasket-payment").val($(":first(.shipping"+value+")").val());
		}
	} else {
		oldValue = $("[name=payment]:checked").val();
		$(".shipping"+value).each(function(){
			var id = $(this).parent().attr("for");
			$("#"+id).removeAttr("disabled");
		});
		$("[class*=shipping]:not(.shipping"+value+")").each(function(){
			var id = $(this).parent().attr("for");
			$("#"+id).attr("disabled", "disabled");
		});
		if($("[name=payment]:checked").attr("disabled")) {
			$("[name=payment]:not([disabled=disabled]):first").attr("checked", "checked");
		}
	}
}
$("[id*=frmrecountBasket-shipping]:checked").livequery(function(){
	setPayment(this);
});


/**
 * Counts length of sourceElement and according to that and maxlength changes
 * target element specified by targetID.
 * @param Element sourceElement Textarea object, where should proceed counting of characters
 * @param string targetID ID of container, where should be written count of remairing characters
 * @param int maxlength Maximum length of textarea content
 * @param string text Label - e.g. "Characters left: "
 */
function textAreaCountdown(sourceElement, targetID, maxlength, text) {
	count = maxlength - sourceElement.value.length;
	targetElement = document.getElementById(targetID);
	targetElement.innerHTML = text + count;
	if (count < 0)
		targetElement.style.color = 'red';
	else
		targetElement.style.color = 'green';
}
