// 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;
	}

// *********************************
// Kód pro jednotlivé moduly a menu:
// *********************************

inCMS.windowWidth = inCMS.windowSize().width;
inCMS.windowHeight = inCMS.windowSize().height;

$(window).resize(function() {
	inCMS.windowWidth = inCMS.windowSize().width;
	inCMS.windowHeight = inCMS.windowSize().height;
	inCMS.setBackground();
	inCMS.setContentSize();
	inCMS.setMenu();
	inCMS.setOffset();
	$('#mainBox').jScrollPane({ scrollbarWidth: 22, scrollbarMargin: 0, animateTo: true, wheelSpeed: 30, animateInterval: 20, animateStep: 2, showArrows: true });
});

$(document).ready(function() {
	$('#mainBox').jScrollPane({ scrollbarWidth: 22, scrollbarMargin: 0, animateTo: true, wheelSpeed: 30, animateInterval: 20, animateStep: 2, showArrows: true });
	inCMS.setContentSize();
});

inCMS.setBackground = function() {
	var images = {
		'Background_Default.jpg': '41',
		'Background_About.jpg': '274',
		'Background_Photos.jpg': '277',
		'Background_Films.jpg': '276',
		'Background_Contact.jpg': '275'
	};
	$('#bgImage')
		.width(Math.max(inCMS.windowWidth, 990))
		.height(Math.max(inCMS.windowHeight, 742))
		.css('background', "url('Image.aspx?DocID=" + images[inCMS.backgroundImage] + "&Width=" + (Math.max(inCMS.windowWidth, 990)) + "&Height=" + (Math.max(inCMS.windowHeight, 742)) + "&RTypeID=3') top left no-repeat");
}

inCMS.setContentSize = function() {
	$('.jScrollPaneContainer,#mainBox')
		.height($('body#mp1')[0] ? Math.max(inCMS.windowHeight - 231, 250) : Math.max(inCMS.windowHeight - 205, 250))
		.width(Math.max(inCMS.windowWidth, 990));
}

inCMS.setMenu = function() {
$('#mainMenuBox').css({ 'left': (Math.max(443 + ((inCMS.windowWidth - 960) / 8), 443)) + 'px', 'width': (Math.max(inCMS.windowWidth - (443 + ((inCMS.windowWidth - 960) / 8)), 990 - 443)) + 'px' });
}

inCMS.setOffset = function() {
	$('#headerBox,#footerBox').css('margin-left', (Math.max((inCMS.windowWidth - 960) / 8,15)) + 'px');
}

inCMS.videoControl = function(hide) {
}// 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);
		$('#' + obj + ' ul').append('<li class="bottom"></li>').prepend('<li class="top"></li>');
		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');
			}
		}
	}
