// inCMS common js
// (c)2008 Spika David, Inexes

var inCMS = new Object();

// Fce vrátí html prvek
// parametry: ID nebo prvek
inCMS.getObj = function (x) {
	if (typeof x != 'string') return x;
	else if (Boolean(document.getElementById)) return document.getElementById(x);
		else return null;
	}

// Fce vrátí pole všech html prvků v daném prvku, jejichž className obsahuje zadaný řetězec
// parametry: ID prvku ve kterém hledat, název prvku který hledat (možno použít *), podřetězec className
inCMS.getElementsByClass = function (p,t,c) {
	var o = inCMS.getObj(p);
	var tempField = new Array();
	var elements = o.getElementsByTagName(t);
	for (var i=0; i<elements.length; i++) {
		if (elements[i].className.indexOf(c) != -1) {
			tempField[tempField.length] = elements[i];
			}
		}
	return tempField;
	}

// Fce přidá skript (před nebo za stávající funkce) navázaný na definovanou událost html prvku
// použití: addEvent(window,'onload','alert(o.id);');
// parametry: ID nebo prvek, název události, skript navázaný na událost (pravidla pro skript: na daný prvek neodkazovat přes this, ale přes o), příznak jestli má být nový skript vložen před/za stávající
inCMS.addEvent = function (obj,e,s,before) {
	var o = inCMS.getObj(obj);
	eval('var oldEvent = o.' + e + ';');
	if (!before) eval('o.' + e + ' = function (' + (inCMS.browser.IE ? '' : 'event') + ') { ' + (oldEvent ? 'oldEvent(' + (inCMS.browser.IE ? '' : 'event') + ');' : '') + s + ' };');
	else eval('o.' + e + ' = function (' + (inCMS.browser.IE ? '' : 'event') + ') { ' + s + (oldEvent ? 'oldEvent(' + (inCMS.browser.IE ? '' : 'event') + ');' : '') + ' };');
	}

// Fce přidá skript navázaný na definovanou událost všem html prvkům, jejichž className obsahuje zadaný řetězec
// parametry: ID prvku ve kterém hledat, název prvku (možno použít *), podřetězec className, název události, skript navázaný na událost, příznak jestli má být nový skript vložen před/za stávající
inCMS.addEventByClass = function (p,t,c,e,s,before) {
	var o = inCMS.getObj(p);
	var elements = o.getElementsByTagName(t);
	for (var i=0; i<elements.length; i++) {
		if (elements[i].className.indexOf(c) != -1) {
			inCMS.addEvent(elements[i],e,s,before);
			}
		}
	}

// Fce přidá skript navázaný na definovanou událost všem formulářovým prvkům, jejichž className obsahuje zadaný řetězec
// parametry: název prvku (možno použít *), podřetězec className, název události, skript navázaný na událost, příznak jestli má být nový skript vložen před/za stávající
inCMS.addEventToForm = function (t,c,e,s,before) {
	var elements = document.forms[0];	
	for (var i=0; i<elements.length; i++) {
		if (elements[i].nodeName.toLowerCase() == t && elements[i].className.indexOf(c) != -1) {
			inCMS.addEvent(elements[i],e,s,before);
			}
		}
	}

// Fce nahradí chybějící podporu css pseudotřídy :hover pro IE6- všem html prvkům, jejichž className obsahuje zadaný řetězec
// parametry: ID prvku ve kterém hledat, název prvku (možno použít *), podřetězec className
inCMS.hoverByClass = function (p,t,c) {
	if (inCMS.browser.IE6) {
		var o = inCMS.getObj(p);
		var elements = o.getElementsByTagName(t);
		for (var i=0; i<elements.length; i++) {
			if (elements[i].className.indexOf(c) != -1) {
				inCMS.addEvent(elements[i],'onmouseover','o.className += \' hover\';');
				inCMS.addEvent(elements[i],'onmouseout','o.className = o.className.replace(\' hover\',\'\');');
				}
			}
		}
	}

// Fce nastaví html prvku css styl
// parametry: ID nebo prvek, 'vlastnost', 'hodnota'
inCMS.setObjStyle = function (obj,prop,val) {
	var o = inCMS.getObj(obj);
	if (o && o.style) {
		eval ('o.style.'+prop+'="'+val+'"');
		return true;
		}
	else return false;
	}

// Fce vrátí hodnotu css parametru u html prvku
// parametry: ID nebo prvek, 'vlastnost'
inCMS.getObjStyle = function (obj,prop) {
	var o = inCMS.getObj(obj);
	if (document.defaultView) var val = window.document.defaultView.getComputedStyle(o,null).getPropertyValue(prop); // Mozilla
	else if (o.currentStyle) var val = eval('o.currentStyle.' + prop); // IE
	return val;
	}

// Fce nastaví css styl všem html prvkům, jejichž className obsahuje zadaný řetězec
// parametry: název prvku (možno použít *), podřetězec className, 'vlastnost', 'hodnota'
inCMS.setObjStyleByClass = function (p,t,c,prop,val) {
	var o = inCMS.getObj(p);
	var elements = o.getElementsByTagName(t);
	for (var i=0; i<elements.length; i++) {
		if (elements[i].className.indexOf(c) != -1) {
			inCMS.setObjStyle(elements[i],prop,val);
			}
		}
	}

// Fce na zobrazení/zneviditelnění html prvku
// parametry: ID nebo prvek, zobrazení - true/false
inCMS.showObj = function (obj,on) {
	return inCMS.setObjStyle(obj,'visibility',(on) ? 'visible':'hidden');
	}

// Fce na zobrazení/skrytí html prvku
// parametry: ID nebo prvek, zobrazení - true/false, hodnota css vlastnosti display (není povinná, pokud 2. parametr = false)
inCMS.displayObj = function (obj,on,type) {
	if (on && !type) { 
		if (!inCMS.browser.IE && inCMS.getObj(obj) && inCMS.getObj(obj).nodeName.toLowerCase() == 'tr') type = 'table-row';
		else if (!inCMS.browser.IE && inCMS.getObj(obj) && inCMS.getObj(obj).nodeName.toLowerCase() == 'tbody') type = 'table-row-group';
		else type = 'block';
		}
	return inCMS.setObjStyle(obj,'display',(on) ? type:'none');
	}

// Konstruktor na vytvoření kopie objektu (pro uživatelské objekty příjímané přes AJAX, jejichž struktura není známa)
// použití: novy_objekt = new cloneObj(stary_objekt)
// parametry: objekt
inCMS.cloneObj = function (obj) {
	for (var property in obj) {
		if (typeof obj[property] == 'object') { 
			if (obj.length) this.length = obj.length;
			this[property] = new cloneObj (obj[property]);
			}
		else this[property] = obj[property];
		}
	}

// Fce na porovnání 2 objektů (pro uživatelské objekty příjímané přes AJAX, jejichž struktura není známa)
// Pokud se liší, vrací true
// parametry: objekt1, objekt2
inCMS.compareObjs = function (obj1,obj2) {
	var isChange = false;
	var maxCount = (obj1.length >= obj2.length) ? obj1.length : obj2.length;
	for (var i=0; i<maxCount; i++) {
		var item = obj1[i]; // 1
		if (!item) { isChange = true; break; }
		else for (var property in item) {
			item = obj1[i]; // 1
			var val1 = item[property]; // 1 - vlastnost
			item = obj2[i]; // 2
			if (!item) { isChange = true; break; }
			else {
				var val2 = item[property]; // 2 - vlastnost
				if (typeof val1 != 'object' && typeof val2 != 'object' && val1 != val2) { isChange = true; break; }
				}
			}
		}
	return isChange;
	}

// Fce vrátí pole indexů, na kterých se v zadaném poli vyskytuje zadaná hodnota
// parametry: pole, hodnota, příznak podle kterého se testuje rovnost(substring=false) nebo jen obsah podřetězce(substring=true)
inCMS.findFieldIndexesByValue = function (field,value,substring) {
	var fieldIndexes = new Array();
	for (var i=0; i<field.length; i++) {
		if (field[i] == value && !substring) {
			fieldIndexes.length++;
			fieldIndexes[fieldIndexes.length-1] = i;
			}
		if (field[i].indexOf(value) != -1 && substring) {
			fieldIndexes.length++;
			fieldIndexes[fieldIndexes.length-1] = i;
			}
		}
	return fieldIndexes;
	}

// Fce odstraní zadanou hodnotu z pole
// parametry: pole; hodnota
inCMS.removeValueFromField = function (field,value) {
	var position = field.length+1;
	for (var i=0; i<field.length; i++) if (field[i] == value) position = i;
	for (var i=position; i<field.length-1; i++) field[i] = field[i+1];
	field.length--;
	}

// Fce odstraní zadanou hodnotu z pole
// parametry: pole; hodnota
inCMS.addValueToField = function (field,value) {
	field.length++;
	field[field.length-1] = value;
	}	

// Fce vrátí hodnotu zadaného parametru z url
// použití: hodnota = getParamsFromUrl()['parametr']
inCMS.getParamsFromUrl = function () {
	var field  = window.location.search.substr(1).split('&');
	var params = new Array(); 
	for (var i=0; i<field.length; i++) {
		params[field[i].split('=')[0]] = unescape(field[i].split('=')[1]); 
		}
	return params;
	}

// Objekt pro práci s popup okny
inCMS.popup = {
	// Odkaz na popup okno otevřené metodou open()
	win : null,
	// Metoda na otevření nového popup okna 
	// parametry: url, šířka okna, výška okna, posuvníky a proměnná velikost okna - true/false, název okna
	open : function (src,width,height,fixedSize) {
		if (fixedSize) var param = 'no';
		else var param = 'yes';
		var p = 'toolbar=no,menubar=no,location=no,directories=no,scrollbars=' + param + ',resizable= ' + param + ',status=no,width=' + width + ',height=' + height + ',left=' + (screen.availWidth/2-width/2) + ',top=' + (screen.availHeight/2-height/2);
		if (this.win) this.win.close();
		this.win = window.open(src,'',p);
		this.win.focus();
		},
	// Metoda vrátí odkaz na html prvek umístěný v rodičovském okně do popup okna
	// parametry: ID nebo prvek
	getObj : function (x) {
		return inCMS.getObj(x);
		}
	};

// Detail obrázku v novém okně:
inCMS.imagePopupWindow = null;
inCMS.imagePopup = function (src,title,width,height) {
	if (inCMS.imagePopupWindow) inCMS.imagePopupWindow.close();
	var imageWidth = width;
	var imageHeight = height;
	if (width < 400)  width = 400;
	if (height < 300) height = 300;
	if (width > 990 || height > 700) var s = 'scrollbars=yes';
	else var s = 'scrollbars=no';
	if (width > 990)  width = 990;
	if (height > 700) height = 700;
	var p = 'toolbar=no,menubar=no,location=no,resizable=yes,directories=no,status=no,width=' + width + ',height=' + height + ',left=' + (screen.availWidth/2-width/2) + ',top=' + (screen.availHeight/2-height/2) + ',' + s;
	inCMS.imagePopupWindow = window.open(appWWWRoot + 'admin/PreviewImage.html?src='+escape(src)+'&title='+escape(title)+'&width='+imageWidth+'&height='+imageHeight,'',p);
	inCMS.imagePopupWindow.focus();		
	}

// Objekt na detekci prohlížeče
inCMS.browser = {
	IE : navigator.appName == 'Microsoft Internet Explorer',
	IE6 : navigator.userAgent.indexOf('MSIE 6') != -1,
	IE7 : navigator.userAgent.indexOf('MSIE 7') != -1,
	opera : navigator.userAgent.indexOf('Opera') != -1,
	gecko : navigator.userAgent.indexOf('Gecko') != -1,
	safari : navigator.userAgent.indexOf('Safari') != -1
	}
// Opera se může tvářit i jako jiný prohlížeč, proto oprava:
if (inCMS.browser.opera) {
	for (var property in inCMS.browser) {
		if (property != 'opera') inCMS.browser[property] = false;
		}
	}

// Fce vrátí souřadnice html prvku vůči stránce (každý prohlížeč může vracet jiné)
// parametry: ID nebo prvek
inCMS.getObjCoords = function (obj) {
	var element = inCMS.getObj(obj);
	var coords = { x : 0, y : 0 };
	while (element) {
		coords.x += element.offsetLeft;
		coords.y += element.offsetTop;
		element = element.offsetParent;
	}
	return coords;
}

// Fce vrátí souřadnice kurzoru vůči stránce (každý prohlížeč může vracet jiné)
// parametry: event
inCMS.getMouseCoords = function (e) {
	if (e.pageX || e.pageY) {
		return {x:e.pageX, y:e.pageY};
		}
	return {
		x:e.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:e.clientY + document.body.scrollTop  - document.body.clientTop
		};
	}

// Fce vrátí aktuální velikost okna
inCMS.windowSize = function () {
	if (document.documentElement && document.documentElement.clientWidth)	{
		var size = { width : document.documentElement.clientWidth, height : document.documentElement.clientHeight };
		return size;
		}
	else if (document.body && document.body.clientWidth) {
		var size = { width : document.body.clientWidth,	height : document.body.clientHeight	};
		return size;
		}
	else var size = { width : 0, height : 0 };
	return size;
	}

// Fce vrátí aktuální pozici stránky
inCMS.pagePosition = function () {
	var left = (window.pageXOffset) ? window.pageXOffset
		: (document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft
		: (document.body) ? document.body.scrollLeft
		: 0;
	var top = (window.pageYOffset) ? window.pageYOffset
		: (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop
		: (document.body) ? document.body.scrollTop
		: 0;
	var position = { x : left, y : top };
	return position;
	}

// Fce vrátí aktuální velikost stránky
inCMS.pageSize = function () {
	var w = (window.innerWidth && window.scrollMaxX) ? window.innerWidth + window.scrollMaxX
		: (document.body.scrollWidth > document.body.offsetWidth) ? document.body.scrollWidth
		: document.body.offsetWidth;
	var h = (window.innerHeight && window.scrollMaxY) ? window.innerHeight + window.scrollMaxY
		: (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight
		: document.body.offsetHeight;
	if (w < inCMS.windowSize().width) w = inCMS.windowSize().width;
	if (h < inCMS.windowSize().height) h = inCMS.windowSize().height;
	var size = { width : w, height : h };
	return size;
	}

// Metoda nastaví průhlednost html prvku
// parametry: html prvek (nebo jeho ID), hodnota průhlednosti 0-100
inCMS.setOpacity = function (obj,val) {
	var o = inCMS.getObj(obj);
	if (inCMS.browser.IE) o.style.filter = (val == 100) ? 'none' : 'alpha(opacity=' + val + ')';
	else {
		o.style.MozOpacity = val/100;
		o.style.KHTMLOpacity = val/100;
		o.style.opacity = val/100;
		}
	}

// Fce uloží do cookies zadanou hodnotu
inCMS.setCookie = function (name,value,path,domain,secure) {
	expires = new Date();
	expires.setTime(expires.getTime() + (24 * 60 * 60 * 1000 * 31));
	document.cookie = escape(name) + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
	}

// Fce vrátí z cookies hodnotu podle jména
inCMS.getCookie = function (name) {
	var cookieList = document.cookie.split("; ");
	for (var i=0; i<cookieList.length; i++){
		var cookie = cookieList[i].split("=");
		if (unescape(cookie[0]) == name) {
			return unescape(cookie[1]);
			break;
			}
		}
	return null;
	}

inCMS.preloadImages = new Array();
inCMS.preloadImages[0] = new Image();
inCMS.preloadImages[0].src = 'Design/Progress.gif';

// *********************************
// Kód pro jednotlivé moduly a menu:
// *********************************

// inCMS module: form

var forms = {
    charWidth: 8, // průměrná šířka jednoho znaku v px pro výpočet celkové šířky prvků input[text], textearea a select
    horizontalPaddingAndBorder: 12, // součet border-left + padding-left + padding-right + border-right u prvku input[text] pro výpočet celkové šířky prvku select
    lineHeight: 14 // výška řádku pro výpočet výšky prvku textarea
};

// Inicializační metoda, spuštěná až po načtení stránky
//inCMS.addEvent(window, 'onload', 'forms.postInit();');
forms.postInit = function() {
    inCMS.addEventByClass(document, 'input', 'format:', 'onblur', 'forms.validateOne(o);');
    inCMS.addEventByClass(document, 'input', 'required:', 'onblur', 'forms.validateOne(o);');
    inCMS.addEventByClass(document, 'textarea', 'format:', 'onblur', 'forms.validateOne(o);');
    inCMS.addEventByClass(document, 'textarea', 'required:', 'onblur', 'forms.validateOne(o);');
    inCMS.addEventByClass(document, 'select', 'required:', 'onblur', 'forms.validateOne(o);');
    inCMS.addEventByClass(document, 'input', 'focusStyle', 'onfocus', 'if (!o.disabled) o.className += \' text-focus\';');
    inCMS.addEventByClass(document, 'input', 'focusStyle', 'onblur', 'o.className = o.className.replace(\'text-focus\',\'\');');
    inCMS.addEventByClass(document, 'textarea', 'focusStyle', 'onfocus', 'if (!o.disabled) o.className += \' text-focus\';');
    inCMS.addEventByClass(document, 'textarea', 'focusStyle', 'onblur', 'o.className = o.className.replace(\'text-focus\',\'\');');
    var textareas = inCMS.getElementsByClass(document, 'textarea', 'maxLength:');
    for (var i = 0; i < textareas.length; i++) {
        var textarea = textareas[i];
        var partClass = textarea.className.split(' ');
        var maxLength = partClass[inCMS.findFieldIndexesByValue(partClass, 'maxLength:', true)].split(':')[1];
        inCMS.addEvent(textarea, 'onclick', 'MaxLengthCount(o,' + maxLength + ');');
        inCMS.addEvent(textarea, 'onmousemove', 'MaxLengthCount(o,' + maxLength + ');');
        inCMS.addEvent(textarea, 'onfocus', 'MaxLengthCount(o,' + maxLength + ');');
        inCMS.addEvent(textarea, 'onblur', 'MaxLengthCount(o,' + maxLength + ');');
        inCMS.addEvent(textarea, 'onkeyup', 'MaxLengthCount(o,' + maxLength + ');');
        inCMS.addEvent(textarea, 'onchange', 'MaxLengthCount(o,' + maxLength + ');');
        inCMS.addEvent(textarea, 'onafterupdate', 'MaxLengthCount(o,' + maxLength + ');');
        var progressBar = document.createElement('div');
        progressBar.id = textarea.id + '_pBar';
        progressBar.className = 'progressBar';
        textarea.parentNode.appendChild(progressBar);
    }
    var focusElements = document.forms[0];
    for (var i = 0; i < focusElements.length; i++) {
        if (focusElements[i].className.indexOf('onloadFocus') != -1) {
            if (!(focusElements[i].readonly || focusElements[i].disabled)) {
                focusElements[i].focus();
                if (focusElements[i].className.indexOf('focusStyle') != -1)
                    focusElements[i].select();
            }
            break;
        }
    }
    if (typeof (ValidatorUpdateDisplay) != "undefined") {
        var __funcbody, newfunc;
        __funcbody = ValidatorUpdateDisplay.toString();
        __funcbody = __funcbody.substring(__funcbody.indexOf("{") + 1, __funcbody.lastIndexOf("}"));
        newfunc = new Function("val", "ChangeLabelColor(val); " + __funcbody);
        ValidatorUpdateDisplay = newfunc;
    }
}

// Inicializační metoda, spouštěná při načítání modulu
forms.init = function(number) {
    var elements = document.forms[0];
    for (var i = 0; i < elements.length; i++) {
        var width = 25;
        if (elements[i].className.indexOf('focusStyle') != -1) {
            if (elements[i].nodeName.toLowerCase() == 'input') width = forms.charWidth * elements[i].size;
            else if (elements[i].nodeName.toLowerCase() == 'textarea') {
                width = forms.charWidth * elements[i].cols;
                var height = forms.lineHeight * elements[i].rows;
                inCMS.setObjStyle(elements[i], 'height', height + 'px');
            }
            inCMS.setObjStyle(elements[i], 'width', width + 'px');
        }
        if (elements[i].nodeName.toLowerCase() == 'select' && elements[i].className.indexOf('width:') != -1) {
            var partClass = elements[i].className.split(' ');
            var value = partClass[inCMS.findFieldIndexesByValue(partClass, 'width:', true)].split(':')[1];
            size = forms.charWidth * value;
            inCMS.setObjStyle(elements[i], 'width', size + forms.horizontalPaddingAndBorder + 'px');
        }
    }
}

forms.validateOne = function(field) {
    var obj = inCMS.getObj(field);
    var isRequired = false;
    if (obj.className.indexOf('required:') != -1) {
        var partClass = obj.className.split(' ');
        var label = obj.parentNode.parentNode.getElementsByTagName('th')[0].getElementsByTagName('label')[0];
        isRequired = true;
        var okRequired = obj.value != '';
        if (!okRequired) {
            label.className = 'red';
        }
        else {
            label.className = '';
        }
    }
    if (obj.className.indexOf('format:') != -1) {
        var partClass = obj.className.split(' ');
        var type = partClass[inCMS.findFieldIndexesByValue(partClass, 'format:', true)].split(':')[1];
        var label = obj.parentNode.parentNode.getElementsByTagName('th')[0].getElementsByTagName('label')[0];
        var okFormat = true;
        switch (type) {
            case 'date': okFormat = forms.validateDate(obj); break;
            case 'number': okFormat = forms.validateNumber(obj); break;
            case 'fullName': okFormat = forms.validateFullName(obj); break;
            case 'telephone': okFormat = forms.validateTelephone(obj); break;
            case 'email': okFormat = forms.validateEmail(obj); break;
            case 'url': okFormat = forms.validateUrl(obj); break;
        }
        if (!okFormat || (isRequired && !okRequired)) {
            label.className = 'red';
        }
        else {
            label.className = '';
        }
    }
}

forms.validateAll = function(number) {
    var elements = document.forms[0];
    var errorMessage = '';
    for (var i = 0; i < elements.length; i++) {
        var isRequired = false;
        if (elements[i].className.indexOf('required:') != -1) {
            var partClass = elements[i].className.split(' ');
            var index = partClass[inCMS.findFieldIndexesByValue(partClass, 'required:', true)].split(':')[1];
            if (index == number) {
                var label = elements[i].parentNode.parentNode.getElementsByTagName('th')[0].getElementsByTagName('label')[0];
                isRequired = true;
                var okRequired = elements[i].value != '';
                if (!okRequired) {
                    label.className = 'red';
                    errorMessage += label.innerHTML.replace(': *', '') + ' musí být vyplněn.<br />';
                }
                else {
                    label.className = '';
                }
            }
        }
        if (elements[i].className.indexOf('format:') != -1) {
            var partClass = elements[i].className.split(' ');
            var type = partClass[inCMS.findFieldIndexesByValue(partClass, 'format:', true)].split(':')[1];
            var index = partClass[inCMS.findFieldIndexesByValue(partClass, 'format:', true)].split(':')[2];
            if (index == number) {
                var label = elements[i].parentNode.parentNode.getElementsByTagName('th')[0].getElementsByTagName('label')[0];
                var okFormat = true;
                switch (type) {
                    case 'date': okFormat = forms.validateDate(elements[i]); break;
                    case 'number': okFormat = forms.validateNumber(elements[i]); break;
                    case 'fullName': okFormat = forms.validateFullName(elements[i]); break;
                    case 'telephone': okFormat = forms.validateTelephone(elements[i]); break;
                    case 'email': okFormat = forms.validateEmail(elements[i]); break;
                    case 'url': okFormat = forms.validateUrl(elements[i]); break;
                }
                if (!okFormat) {
                    errorMessage += label.innerHTML.replace(isRequired ? ': *' : ':', '') + ' není ve správném formátu.<br />';
                }
                if (!okFormat || (isRequired && !okRequired)) {
                    label.className = 'red';
                }
                else {
                    label.className = '';
                }
            }
        }
    }
    if (errorMessage != '') {
        inCMS.getObj('dhtmlFormError:' + number).innerHTML = errorMessage;
        inCMS.displayObj('dhtmlFormInfo:' + number, false);
        inCMS.displayObj('dhtmlFormError:' + number, true);
    }
    else {
        inCMS.getObj('dhtmlFormInfo:' + number).innerHTML = 'Validace úspěšně dokončena.';
        inCMS.displayObj('dhtmlFormError:' + number, false);
        inCMS.displayObj('dhtmlFormInfo:' + number, true);
    }
}

forms.validateDate = function(obj) {
    var date = obj.value;
    if (date == '') return true;
    var dateField = new Array();
    if (date.indexOf('.') != -1) {
        dateField = date.split('.');
    }
    else {
        dateField = date.split('/');
        dateField[0] = date.split('/')[1];
        dateField[1] = date.split('/')[0];
    }
    var testDate = new Date();
    testDate.setDate(1);
    var ok = true;
    if (dateField.length == 3 && dateField[2].length == 4) {
        testDate.setFullYear(dateField[2]);
        testDate.setMonth(dateField[1] - 1);
        testDate.setDate(dateField[0]);
        if (testDate.getFullYear() != dateField[2] || testDate.getMonth() != dateField[1] - 1 || testDate.getDate() != dateField[0])
            ok = false;
    }
    else ok = false;
    return ok;
}

forms.validateNumber = function(obj) {
    if (obj.value == '') return true;
    var RegExp = /^[\-]{0,1}[0-9]*([\.][0-9]){0,1}[0-9]*$/;
    return (obj.value.search(RegExp) == 0);
}

forms.validateFullName = function(obj) {
    if (obj.value == '') return true;
    var RegExp = /^[a-zA-Zěščřžýáíé]{2,15}([ ]{1}[a-zA-Zěščřžýáíé]{2,20}){1,2}$/;
    return (obj.value.search(RegExp) == 0);
}

forms.validateTelephone = function(obj) {
    if (obj.value == '') return true;
    var RegExp = /^([+]{0,1}[0-9]{9,14}){0,1}$/;
    return (obj.value.search(RegExp) == 0);
}

forms.validateEmail = function(obj) {
    if (obj.value == '') return true;
    var RegExp = /^[_\w\.\-]+@[\w\.-]+\.[a-z]{2,6}$/;
    return (obj.value.search(RegExp) == 0);
}

forms.validateUrl = function(obj) {
    if (obj.value == '') return true;
    var RegExp = /^(http:\/\/){1}$/;
    return (obj.value.search(RegExp) == 0);
}

// ASP.NET Validator
function DoChangeLabelColor(val, lbl) {
    // Find label through naming rule       
    var k, value;
    // Find out all validators associated
    var vals = new Array();
    for (k = 0; k < Page_Validators.length; k++) {
        if (Page_Validators[k].controltovalidate == val.controltovalidate)
            vals.push(Page_Validators[k]);
    }
    //Determine if some validator fails
    value = true;
    for (k = 0; k < vals.length; k++)
        value = (value && vals[k].isvalid);
    // Change label text color
    if (value) {
        lbl.className = lbl.className.replace('red', ' '); // normal color, black
    } else {
        if (lbl.className.indexOf('red') == -1)
            lbl.className += ' red'; // error color, red
    }
}

// Fce na výpočet aktuální velikosti obsahu <textarea>
// parametry: odkaz na daný prvek <textarea>, maximální počet znaků
function MaxLengthCount(fieldObj, fieldMaxLength) {
    if (!MaxLengthLock) {
        MaxLengthLock = true;
        if (fieldObj.value.length > fieldMaxLength) {
            alert('Můžete napsat maximálně ' + fieldMaxLength + ' znaků.');
            fieldObj.value = fieldObj.value.substring(0, fieldMaxLength);
        }
        inCMS.getObj(fieldObj.id + '_pBar').style.width = Math.round(fieldObj.value.length * (fieldObj.offsetWidth / fieldMaxLength)) + 'px';
        MaxLengthLock = false;
    }
}
var MaxLengthLock = false; // pomocný příznak, který signalizuje právě probíhající výpočet

// ASP.NET Validator
function ChangeLabelColor(val) {
    if (val.controltovalidate) {
        if (inCMS.getObj(val.controltovalidate.replace('tbx', 'lbl')) != null && val.controltovalidate.replace('tbx', 'lbl') != val.controltovalidate)
            DoChangeLabelColor(val, inCMS.getObj(val.controltovalidate.replace('tbx', 'lbl')));
        if (inCMS.getObj(val.controltovalidate.replace('ddl', 'lbl')) != null && val.controltovalidate.replace('ddl', 'lbl') != val.controltovalidate)
            DoChangeLabelColor(val, inCMS.getObj(val.controltovalidate.replace('ddl', 'lbl')));
    }
}

$(document).ready(function() {
    $('.field').focus(function(e) { $(this).addClass('active'); }).blur(function(e) { $(this).removeClass('active'); });
});

/**
Fce, ktera zamezuje vymazani formulare tim, ze si vyzada potvrzeni
*/
function Reset() {
    if (confirm('Opravdu chcete formulář vymazat?')) {
        return true;
    }
    return false;
}// inCMS module: menu_h1

// Fce na inicializaci hlavního menu (ovládané přes hover) - nahradí chybějící podporu css pseudotřídy li:hover pro IE6 + zruší kursor ruky při href="javascript:void(0)" + přidá šipku (class) u položek obsahujících podpoložky
// parametry: ID nebo menu (menu = <ul>)
inCMS.menuInit_h1 = function (obj) {
	if (inCMS.getObj(obj)) {
		var menu = inCMS.getObj(obj);
		var childItems = menu.getElementsByTagName('li');
		for (var i=0; i<childItems.length; i++) {
			if (inCMS.browser.IE6) {
				inCMS.addEvent(childItems[i],'onmouseover','o.className += \' hover\';');
				inCMS.addEvent(childItems[i],'onmouseout','o.className = o.className.replace(\' hover\',\'\');');
				}
			if (childItems[i].getElementsByTagName('ul').length > 0) {
				childItems[i].className += ' isParent';
				}	
			}
		var links = menu.getElementsByTagName('a');
		for (var i=0; i<links.length; i++) {
			if (links[i].href == 'javascript:void(0);') inCMS.setObjStyle(links[i],'cursor','default');
			}
		}
	}
