﻿// 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() {
    addEventByClass('input', 'focusStyle', 'onfocus', 'o.className += \' text-focus\';');
    addEventByClass('input', 'focusStyle', 'onblur', 'o.className = o.className.replace(\'text-focus\',\'\');');
    addEventByClass('textarea', 'focusStyle', 'onfocus', 'o.className += \' text-focus\';');
    addEventByClass('textarea', 'focusStyle', 'onblur', 'o.className = o.className.replace(\'text-focus\',\'\');');
}


// 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', '');
}

var oldPrice = { perYear: 295, perIssue: 49 };
var newPrice = { perYear: 349, perIssue: 59 };
function recountPrice(onlySet, discount) {
	var selectedYear = $('#ctl00_MainContent_mainZoneContent_ctl00_ctl00_dropYears')[0].selectedIndex;
	var actualPrice = ((selectedYear == 0) ? newPrice : oldPrice);
	$('#yearPrice').text(actualPrice.perYear); $('#issuePrice').text(actualPrice.perIssue);
	var rbYear = $('#ctl00_MainContent_mainZoneContent_ctl00_ctl00_rdYear');
	var issues = $('#ctl00_MainContent_mainZoneContent_ctl00_ctl00_cboxList');
	var finalPriceBox = $('#ctl00_MainContent_mainZoneContent_ctl00_ctl00_finalPrice');
	if (onlySet) { // set
		var finalPrice = 0;
		if (!($(rbYear)[0].checked)) { // separate issues
			$(issues).find('input:checkbox').each(function() {
				$(this).attr('disabled', ''); if ($(this)[0].checked) { finalPrice += actualPrice.perIssue; }
			});
			$(finalPriceBox).html('<strong>' + finalPrice + ' Kč + poštovné a balné</strong>');
		} else { // all year
			$(issues).find('input:checkbox').each(function() { $(this).attr('disabled', 'disabled'); });
			if ((selectedYear == 0) && discount) {
				$(finalPriceBox).html('<strong>' + oldPrice.perYear + ' Kč po slevě, platné pouze do 31. 12. 2009 !!!</strong>');
			} else { $(finalPriceBox).html('<strong>' + actualPrice.perYear + ' Kč</strong>'); }
		}
	} else { // reset
		$(issues).find('input:checkbox').each(function() {
			$(this)[0].checked = false; $(this).attr('disabled', 'disabled');
		});
		$(rbYear)[0].checked = true; $(finalPriceBox).html('<strong>' + actualPrice.perYear + ' Kč</strong>');
	}
}
function recountInit() {
	$('#ctl00_MainContent_mainZoneContent_ctl00_ctl00_cboxList').find('input:checkbox').each(function() {
		$(this).attr('disabled', 'disabled');
	});
}

/*
// Fce pocita cenu objednanych titulu a enable/disable checkboxy
// value - znamena kolik slov se orizne zezadu z id
function priceCount(obj, value) {
	var prefix = getPrefix(obj, value);
	var price = 0;
	if (getObj(prefix + 'rdYear').checked) {
		getObj(prefix + 'finalPrice').innerHTML = '<strong>295 Kč</strong>';
		for (i = 0; i <= 5; i++) getObj(prefix + 'cboxList_' + i).disabled = true;
		return;
	}
	if (getObj(prefix + 'rdSingle').checked) {
		for (i = 0; i <= 5; i++) {
			getObj(prefix + 'cboxList_' + i).disabled = false;
			if (getObj(prefix + 'cboxList_' + i).checked) price += 49;
		}
		getObj(prefix + 'finalPrice').innerHTML = '<strong>' + price + ' Kč</strong> + poštovné a balné';
		return;
	}
}
function priceCountInit() {
	items = document.getElementsByTagName('input');
	for (var i = 0; i < items.length; i++) {
		if (items[i].id.indexOf('cboxList') != -1) items[i].disabled = true;
	}
}
function priceCountReset(obj, value) {
	var prefix = getPrefix(obj, value);
	items = document.getElementsByTagName('input');
	for (var i = 0; i < items.length; i++) {
		if (items[i].id.indexOf(prefix + 'cboxList') != -1) items[i].disabled = true;
	}
	getObj(prefix + 'finalPrice').innerHTML = '<strong>295 Kč</strong>';
	getObj(prefix + 'rdYear').checked = 'checked';
	enableAddress(obj, value);
}
*/

// Fce enable/disable dodaci adresu
// value - znamena kolik slov se orizne zezadu z id
function enableAddress(obj, value) {
	var prefix = getPrefix(obj, value);
	var bool = !obj.checked;

	getObj(prefix + 'txtFormName').disabled = bool;
	getObj(prefix + 'txtStreetName').disabled = bool;
	getObj(prefix + 'txtTown').disabled = bool;
	getObj(prefix + 'txtPSC').disabled = bool;
	getObj(prefix + 'txtFormEmail2').disabled = bool;
	getObj(prefix + 'txtFormPN').disabled = bool;

	if (bool) {
		if (getObj(prefix + 'txtFormName').className.indexOf('disable') == -1) getObj(prefix + 'txtFormName').className += ' disable';
		if (getObj(prefix + 'txtStreetName').className.indexOf('disable') == -1) getObj(prefix + 'txtStreetName').className += ' disable';
		if (getObj(prefix + 'txtTown').className.indexOf('disable') == -1) getObj(prefix + 'txtTown').className += ' disable';
		if (getObj(prefix + 'txtPSC').className.indexOf('disable') == -1) getObj(prefix + 'txtPSC').className += ' disable';
		if (getObj(prefix + 'txtFormEmail2').className.indexOf('disable') == -1) getObj(prefix + 'txtFormEmail2').className += ' disable';
		if (getObj(prefix + 'txtFormPN').className.indexOf('disable') == -1) getObj(prefix + 'txtFormPN').className += ' disable';
	}
	else {
		getObj(prefix + 'txtFormName').className = getObj(prefix + 'txtFormName').className.replace(' disable', '');
		getObj(prefix + 'txtStreetName').className = getObj(prefix + 'txtStreetName').className.replace(' disable', '');
		getObj(prefix + 'txtTown').className = getObj(prefix + 'txtTown').className.replace(' disable', '');
		getObj(prefix + 'txtPSC').className = getObj(prefix + 'txtPSC').className.replace(' disable', '');
		getObj(prefix + 'txtFormEmail2').className = getObj(prefix + 'txtFormEmail2').className.replace(' disable', '');
		getObj(prefix + 'txtFormPN').className = getObj(prefix + 'txtFormPN').className.replace(' disable', '');
	}
}

// fce ktera vynuluje adresy
function nullControl(obj) {
	var prefix = getPrefix(obj, 1);
	getObj(prefix + 'openDeliveryAddress').checked = false;
	getObj(prefix + 'txtFormName').value = "";
	getObj(prefix + 'txtStreetName').value = "";
	getObj(prefix + 'txtTown').value = "";
	getObj(prefix + 'txtPSC').value = ""; ;
	getObj(prefix + 'txtFormEmail2').value = "";
	getObj(prefix + 'txtFormPN').value = "";
	getObj(prefix + 'txtAddressName').value = "";
	getObj(prefix + 'txtAddressStreet').value = "";
	getObj(prefix + 'txtAddressTown').value = "";
	getObj(prefix + 'txtAddressPSC').value = ""; ;
	getObj(prefix + 'txtFormEmail').value = "";
	getObj(prefix + 'txtAddressPhone').value = "";
	getObj(prefix + 'txtAddressICO').value = "";
	getObj(prefix + 'txtAddressDIC').value = "";
}

// pomocna funkce pro priceCount() a addressEnable()
function getPrefix(obj, value) {
    var parts = obj.id.split("_");
    var prefix = '';
    for (i = 0; i < (parts.length - value); i++) prefix = prefix + parts[i] + '_';
    return prefix;
}