﻿// Ovládání prezentace vytvořené pomocí inCMS
// (C)2007 Špika David, Inexes

// Inicializační fce po načtení stránky
addEvent(window,'onload','pageInit();');
function pageInit() {
    //
}


// 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>)
function mainMenuInit (obj) {
	if (getObj(obj)) {
		var menu = getObj(obj);
		var childItems = menu.getElementsByTagName('li');
		for (var i=0; i<childItems.length; i++) {
			if (browser.IE6) {
				addEvent(childItems[i],'onmouseover','o.className += \' hover\';');
				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);') setObjStyle(links[i],'cursor','default');
			}
		}
	}

// Fce uloží do cookies zadanou hodnotu
function setCookie(name, value, path, domain, secure) {
	expires = new Date ();
	expires.setTime (expires.getTime() + (24 * 60 * 60 * 1000 * 31));
	document.cookie= name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}

// Fce na inicializaci submenu (ovládané přes onClick) - zabalí všechny položky a rozbalí určenou položku (včetně všech položek v cestě) + přidá šipku (class) u položek obsahujících podpoložky
// parametry: cesta k položce, která se má rozbalit (Array)
function subMenuInit (path) {
	var menuID = 'menuList-' + path[0];
	if (getObj(menuID)) {
		var menu = getObj(menuID);
		var childUL = menu.getElementsByTagName('ul');
		for (var i=0; i<childUL.length; i++) {
			displayObj(childUL[i],false);
		}
		for (var i=1; i<path.length; i++) {
			menuID += '-' + path[i];
			displayObj(menuID,true);
		}
		var childLI = menu.getElementsByTagName('li');
		for (var i=0; i<childLI.length; i++) {
			if (browser.IE6) {
				addEvent(childLI[i],'onmouseover','o.className += \' hover\';');
				addEvent(childLI[i],'onmouseout','o.className = o.className.replace(\' hover\',\'\');');
			}
			if (childLI[i].getElementsByTagName('ul').length > 0) {
				childLI[i].className += ' isParent';
			}	
		}
	}
}	

// Fce na rozbalení určené položky submenu (ovládané přes onClick)
// Pokud položka, na kterou bylo kliknuto, někam odkazuje - Fce vrací true a žádné rozbalení se neprovede
// pokud neodkazuje - Dojde k rozbalení a fce vrací false
// parametry: položka na kterou bylo kliknuto; ID seznamu UL, který se má rozbalit
function expandMenuList (item,menuListID) {
	if (item.href != 'javascript:void(0);') return true;
	var path = menuListID.split('-');
	for (var i=0; i<path.length-1; i++) path[i] = path[i+1];
	path.length--;
	item.blur();
	subMenuInit(path);
	return false;
}	

// Fce vrátí cenu jako upravený text
// parametry: cena jako číslo
function priceToString (price) {
	priceInt = Math.floor(price);
	priceFract = price.toString().indexOf('.') == -1 ? '0' : 100 * ('0.' + price.toString().split('.')[1]);
	return priceInt + ',' + (priceFract == '0' ? '&ndash;' : (priceFract < 10) ? ('0' + priceFract) : priceFract);
}
	
// Fce vrátí zaokrouhlenou cenu na zadaný počet haléřů
// parametry: cena jako číslo, desetinná část na kterou zaokrouhlit (0.01 až 1), způsob zaokrouhlení (0 = matematicky | 1 = dolů)
function roundPrice (price,fract,mode) {
	priceInt = Math.floor(price);
	priceFract = price.toString().indexOf('.') == -1 ? '0' : '0.' + price.toString().split('.')[1]; // desetinná část ceny
	if (mode == 0) {
		for (var i=0; i<2/fract; i++) {
			var downLimit = Math.round(1000*i*fract/2)/1000;
			var upLimit = Math.round(1000*(i+1)*fract/2)/1000;
			if(downLimit<=priceFract && priceFract<upLimit) {
				if (i % 2 == 0) return priceInt + downLimit;
				else return priceInt + upLimit;
			}
		}
	}
	if (mode == 1) {
		for (var i=0; i<1/fract; i++) {
			var downLimit = Math.round(1000*i*fract)/1000;
			var upLimit = Math.round(1000*(i+1)*fract)/1000;
			if(downLimit<=priceFract && priceFract<upLimit) return priceInt + downLimit;
		}
	}
	return null;
}

// Fce na validaci data
// parametry: formulář. pole (ID nebo prvek)
function validateDate (obj) {
	var o = getObj(obj);
	var date = o.value;
	var dateField = date.split('.');
	var testDate = new Date();
	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 = date != '' ? false : true;
	if (!ok) {
		if (o.className.indexOf('date-error') == -1) o.className += ' date-error';
		alert((o.title!='' ? '"' + o.title + '"' : 'Datum') + ' není ve správném formátu.');
		o.value = '';
	}
	else o.className = o.className.replace('date-error','');
}

/** Moc siroke obrazky pripadne zmensi */
function checkPageImages() {
    var pageImages = document.getElementById('mainContentBox').getElementsByTagName('img');
    var imgsCount  = pageImages.length;
    
    for (var i=0;i<imgsCount;i++) {
        if (parseInt(pageImages[i].style.width) > 670) {
            pageImages[i].style.width = '670px';
        }
    }
}

/** Podbarvovani poli ve vyhl. formulari */
function highlightTbx(id) {
    document.getElementById(id).style.background = "#ddd";
}
function resetTbx(id) {
    document.getElementById(id).style.background = "#fff";
}
function highlightBtn(id) {
    document.getElementById(id).style.background = "#666";
}
function resetBtn(id) {
    document.getElementById(id).style.background = "#858585";
}

/** Nastavi pozici okna na danou kotvu */
function moveWindow(anchorName) {
    window.location.hash = anchorName;
}

/** Fce na schovavani a zobrazovani textu v seznamech na strance */
function hideAllListTexts() {
    var listItems = getElementsByClass("div", "listItem");
    var listItemsCount = listItems.length;
    for (var i=0;i<listItemsCount;i++) {
        var text = listItems[i].getElementsByTagName("div")[0];
        if (text.className == "introText") {
            if (document.getElementById('table-hidden')) {
                document.getElementById('table-hidden').style.display = "none";
            }
            var listSpans = text.getElementsByTagName('span');
            var listSpanCount = listSpans.length;
            for (var j=0;j<listSpanCount;j++) {
                if (listSpans[j].className == 'hidden') {
                    listSpans[j].style.display = "none";
                }
            }
            var listLinx = text.getElementsByTagName('a');
            var listLinxCount = listLinx.length;
            for (var k=0;k<listLinxCount;k++) {
                if (listLinx[k].className == 'hidden') {
                    listLinx[k].style.display = "inline";
                }
            }
        }
    }
}
function showListText(id) {
    hideAllListTexts();
    var listSpans = document.getElementById(id).getElementsByTagName('span');
    var listSpanCount = listSpans.length;
    for (var i=0;i<listSpanCount;i++) {
        if (listSpans[i].className == 'hidden') {
            listSpans[i].style.display = "inline";
        }
    }
    var listLinx = document.getElementById(id).getElementsByTagName('a');
    var listLinxCount = listLinx.length;
    for (var i=0;i<listLinxCount;i++) {
        if (listLinx[i].className == 'hidden') {
            listLinx[i].style.display = "none";
        }
    }
    moveWindow(id);
    if (document.getElementById('table-hidden')) {
        document.getElementById('table-hidden').style.display = "block";
    }
}
function transformBlock(elem, idx, id) {
    var hidden = elem.innerHTML.substring(idx + 2);
    elem.innerHTML = elem.innerHTML.substring(0, idx) + 
        '<span class="cleaner"></span><a class="hidden" href="javascript:showListText(\'' + id + 
        '\');" title="více">více</a> <span class="hidden">' + hidden + '</span>';
}
function checkElements(tag, text, id) {
    var pgrfs = text.getElementsByTagName(tag);
    var pgrfsCount = pgrfs.length;
    for (var j=0;j<pgrfsCount;j++) {
        if (j == 0) {
            var index = pgrfs[j].innerHTML.indexOf("##");
            if (index != -1) {
                transformBlock(pgrfs[j], index, id);
            }
        } else {
            var index = pgrfs[j].innerHTML.indexOf("##");
            if (index != -1) {
                transformBlock(pgrfs[j], index, id);
            } else {
		        pgrfs[j].innerHTML = '<span class="hidden">' + pgrfs[j].innerHTML + '</span>';
            }
        }
    }
}
function initListTexts() {
    var listItems = getElementsByClass("div", "listItem");
    var listItemsCount = listItems.length;
     for (var i=0;i<listItemsCount;i++) {
        var itemID = listItems[i].id;
        var text = listItems[i].getElementsByTagName("div")[0];
	    var inx = text.innerHTML.indexOf("##");
        if ((text.className == "introText") && (inx != -1)) {
            checkElements('p', text, itemID);
            checkElements('div', text, itemID);
        }
        if (document.getElementById('table-hidden')) {
            document.getElementById('table-hidden').style.display = "none";
        }
    }
    hideAllListTexts();
}

/** Funkce na schovani prebytecnych textu ve clancich na strance */
function showArticleText(id) {
    hideAllArticleTexts();
    var listDivs = document.getElementById(id).getElementsByTagName('div');
    var listDivCount = listDivs.length;
    for (var i=0;i<listDivCount;i++) {
        if (listDivs[i].className == 'hidden') {
            listDivs[i].style.display = "inline";
        }
    }
    var listPs = document.getElementById(id).getElementsByTagName('p');
    var listPCount = listPs.length;
    for (var i=0;i<listPCount;i++) {
        if (i == 0) {
            listPs[i].style.display = "inline";
        }
    }
    var listSpans = document.getElementById(id).getElementsByTagName('span');
    var listSpanCount = listSpans.length;
    for (var i=0;i<listSpanCount;i++) {
        if (listSpans[i].className == 'cleaner') {
            listSpans[i].style.display = "none";
        }
    }
    var listLinx = document.getElementById(id).getElementsByTagName('a');
    var listLinxCount = listLinx.length;
    for (var i=0;i<listLinxCount;i++) {
        if (listLinx[i].className == 'hidden') {
            listLinx[i].style.display = "none";
        }
    }
    moveWindow(id);
}
function hideAllArticleTexts() {
    var aItems = getElementsByClass("div", "article");
    var aItemsCount = aItems.length;
    for (var i=0;i<aItemsCount;i++) {
        var text = aItems[i].getElementsByTagName("div")[0];
        if (text.className == "htmlEditorContent") {
            var aPs = text.getElementsByTagName('p');
            var aPCount = aPs.length;
            for (var j=0;j<aPCount;j++) {
                if (j == 0) {
                    aPs[j].style.display = "block";
                }
            }
            var aDivs = text.getElementsByTagName('div');
            var aDivCount = aDivs.length;
            for (var j=0;j<aDivCount;j++) {
                if (aDivs[j].className == 'hidden') {
                    aDivs[j].style.display = "none";
                }
            }
            var aSpans = text.getElementsByTagName('span');
            var aSpanCount = aSpans.length;
            for (var j=0;j<aSpanCount;j++) {
                if (aSpans[j].className == 'cleaner') {
                    aSpans[j].style.display = "block";
                }
            }
            var aLinx = text.getElementsByTagName('a');
            var aLinxCount = aLinx.length;
            for (var k=0;k<aLinxCount;k++) {
                if (aLinx[k].className == 'hidden') {
                    aLinx[k].style.display = "inline";
                }
            }
        }
    }
}
function initArticleTexts() {
    var articleItems = getElementsByClass("div", "article");
    var articleItemsCount = articleItems.length;
     for (var i=0;i<articleItemsCount;i++) {
        var itemID = articleItems[i].id;
        var text = articleItems[i].getElementsByTagName("div")[0];
	    var inx = text.innerHTML.indexOf("##");
        if ((text.className == "htmlEditorContent") && (inx != -1)) {
            //transformBlock(text, inx, itemID);
            var hidden = text.innerHTML.substring(inx + 2);
            text.innerHTML = text.innerHTML.substring(0, inx) + 
                '<span class="cleaner"></span><a class="hidden" href="javascript:showArticleText(\'' + itemID + 
                '\');" title="více">více</a> <div class="hidden">' + hidden + '</div>';
        }
    }
    hideAllArticleTexts();
}

/** Akce vykonane po naloadovani stranky */
addEvent(window, 'onload', 'checkPageImages();');
addEvent(window, 'onload', 'initListTexts();');
addEvent(window, 'onload', 'initArticleTexts();');
