function LPad(ContentToSize, PadLength, PadChar) {
	var PaddedString = ContentToSize.toString();
	for (i = ContentToSize.length + 1; i <= PadLength; i++) {
		PaddedString = PadChar + PaddedString;
	}
	return PaddedString;
}

function addTimeZero(i) {
	return LPad(i, 2, "0");
}

/**
 * Najde k predanemu inputu label podle atributu 'for' a vrati jeho text
 * @param id id zkoumaneho inputu
 * @param hideLabel pokud tru, tak nalezeny label zaroven v CSS zneviditelni
 * @return textovy obsah nalezeneho labelu
 */
function getLabelFor(id, hideLabel) {
	var labels = document.getElementsByTagName("label");
	for (i = 0; i < labels.length; i++) {
		if (labels[i].htmlFor == id) {
			if (hideLabel) {
				labels[i].style.display = 'none';
			}
			var text = labels[i].innerHTML;

			return text;
		}
	}
	return '';
}


var gener_on_focus = function() {
	if (this.value == getLabelFor(this.id)){
		this.value = '';
		this.className = '';
	}
}

var gener_on_blur = function() {
	if (this.value == '') {
		this.className = 'innertext';
		this.value = getLabelFor(this.id);
	}
}

/** Zavesi funkci na event objektu. Protoze je mnoho prohlizecu, ktere maji
 * jinou implementaci, tak je na to takovahle konstrukce
 */
if (typeof addEvent == 'undefined') {
	addEvent = function( obj, evt, fn ){
	    if (obj.addEventListener){
		obj.addEventListener(evt, fn, false);
	    } else if (obj.attachEvent){
		obj.attachEvent("on" + evt, fn.bind(obj));
	    } else {
		if (evt == "focus") {
		    obj.onfocus = fn;
		} else if (evt == "blur") {
		    obj.onblur = fn;
		} else if (evt == "mouseover") {
		    obj.onmouseover = fn;
		} else if (evt == "hover") {
		    obj.onhover = fn;
		}
	    }
	} 
}

/** Zaradi funkci ke spusteni po dokonceni nacitani stranky.
 */
function addLoadEvent(func) { 
	var oldonload = window.onload; 
	if (typeof window.onload != 'function') { 
		window.onload = func; 
	} else { 
		window.onload = function() { 
			if (oldonload) { 
				oldonload(); 
			} 
			func(); 
		} 
	} 
}

function setInnerLabels() {
	var hideLabel = false;
	var i = 0;
	if ((arguments[0] === true) || (arguments[0] === false)) {
		hideLabel = arguments[0];
		i++;
	}

	for (; i<arguments.length; i++) {
		var obj = document.getElementById(arguments[i]);
		if (obj) {
			text = getLabelFor(arguments[i], hideLabel);
			args = arguments;
			$(arguments[i]).addEvent('focus', gener_on_focus);
			$(arguments[i]).addEvent('blur', gener_on_blur);
			if (obj.value == '') {
				obj.className = 'innertext';
				obj.value = getLabelFor(obj.id);
			}
			if (parentForm = getParentForm(obj))
				if (parentForm.addEventListener) {
					parentForm.addEventListener('submit',
						function() {
							var i = 0;
							if ((args[0] === true) || (args[0] === false)) {
								i++;
							}

							for (; i<args.length; i++) {
								var obj = document.getElementById(args[i]);
								if (obj) {
									text = getLabelFor(args[i], false);
									if (obj.value == text) {
										obj.value = '';
									}
								}
							}
						},
						false
					);
				} else if (obj.attachEvent) {
					parentForm.attachEvent('onsubmit',
						function() {
							var i = 0;
							if ((args[0] === true) || (args[0] === false)) {
								i++;
							}

							for (; i<args.length; i++) {
								var obj = document.getElementById(args[i]);
								if (obj) {
									text = getLabelFor(args[i], false);
									if (obj.value == text) {
										obj.value = '';
									}
								}
							}
						}
					);
				}
		}
	}
}


/**
 * Najde rodocovsky node typu FORM od predaneho objektu.
 * @param obj zkoumany objekt
 * @return null nebo rodicovsky form
 */
function getParentForm(obj) {
	var tmp_obj = obj;
	while (tmp_obj = tmp_obj.parentNode) {
		if (tmp_obj.nodeName == 'FORM')
			return tmp_obj;
	}
	return null;
}


/**
 * Vlozi do kosiku polozky urcene v parametrech
 * @param item_id id polozky
 * @param count pocet kusu ke vlozeni
 * @return true nebo false, jestli se vlozeni povedlo
 */
function addItemToBasket(item_id, count) {
	var xmlAddItemResponse = null;
	var addItemRequest = new Request({	method: 'post',
						url: '/ajax-api/xml/order/basket_add/?',
						async: false,
						noCache: true,
						onSuccess: function(xmlDataTxt, xmlData) {
								xmlAddItemResponse = xmlData;
							}
					});
	addItemRequest.send('basket_add_submit=ajax&basket_add_id='+item_id+'&basket_add_count='+count);
	return xmlAddItemResponse.getElementsByTagName('success_message').length > 0;
}


/**
 * Vrati textovou hodnotu xml tagu. Je nato dobre mit fci, protoze se to resi v
 * kazdem prohlizeci trochu jinak.
 * @param node nod, ze ktereho chceme jeho obsah
 * @return textovy obsah nodu
 */
function getNodeTextVal(node) {
	if (Browser.Engine.gecko) {
		/* IE */
		return node.textContent;
	} else {
		return node.text;
	}
}


// posklada query pro Publis filtr a presmeruje
// @form_name - id formulare
// @prefix_url - prefix pro catalog url
function pfilter_qs() {
	var f_obj = $(arguments[0]);
	var q = f_obj.toQueryString();
	var path_pref = '/catalog/?filter=';
	if (arguments.length > 1) {
		path_pref = arguments[1];
	}
	document.location = path_pref + q.replace(/&/g, ":");
	return false;
}
