// --------------------------------------------------------------------
// ------- V A R I A N T  B L O C K  H A N D L E R ---------
//---------------------------------------------------------------------

function variant_block_node(parent_variant_treeID, variant_treeID, itemID, value, code) {
	this.parent_variant_treeID = parent_variant_treeID;
	this.variant_treeID = variant_treeID;
	this.itemID = itemID;
	this.value = value;
	this.code = code;
}

function variant_block(parent, level, variantName) {
	var self = this;
	this.parent = parent;
	this.next = null;
	this.nodes = new Array();

	this.level = level;
	this.variantName = variantName;
	this.selectRef = null;
	this.leaf = false;
	
	this.assign = function(parent_variant_treeID, variant_treeID, itemID, value, code) {
		var nodeRef = new variant_block_node(parent_variant_treeID, variant_treeID, itemID, value, code);
		this.nodes[this.nodes.length] = nodeRef;
		return nodeRef;
	}
	
	this.build_select = function(level) {
		this.selectRef = document.getElementById("variant" + this.level + "level");
		this.selectRef.onchange = function() {
			self.parent.changed(self);
		}
	}
	
	this.clear = function() {
		var f;
		for (f = this.selectRef.options.length - 1; f >= 0; f--)
			this.selectRef.options[f] = null;
	}
	
	this.build = function(parent) {
		var f;
		for (f = 0; f < this.nodes.length; f++) {
			if (parent == null || this.nodes[f].parent_variant_treeID == parent) {
				var opt_ref = document.createElement("OPTION");
				opt_ref.value = this.leaf ? this.nodes[f].itemID : this.nodes[f].variant_treeID; // koncovy select id produktu
				opt_ref.text = this.nodes[f].value;
				this.selectRef.options.add(opt_ref);
			}
		}
	}
}

function variant_handle() {
	var self = this;
	this.blocks = new Array();
	
	this.assign = function(level, variantName) {
		var blockRef = new variant_block(this, level, variantName);
		this.blocks[this.blocks.length] = blockRef;
		return blockRef;
	}
	
	this.changed = function(block) {
		if (!block.leaf) {
			var parent = block.selectRef.options[block.selectRef.selectedIndex].value;
			var current = block.next;
			
			while (current != null) {
				current.clear();
				current.build(parent);
			
				parent = current.selectRef.options[current.selectRef.selectedIndex].value;
				current = current.next;
			}
		}
	}
	
	this.initialize = function() {
		// inicializace handleru, id selectu vzdy variant#cislo#level
		
		var f;
		for (f = 0; f < this.blocks.length; f++) {
			this.blocks[f].leaf = (f == this.blocks.length - 1);
			this.blocks[f].next = this.blocks[f].leaf ? null : this.blocks[f + 1];
			this.blocks[f].build_select();
		}
		
		this.blocks[0].build(null);
		this.changed(this.blocks[0]);
	}
}

// -----------------------------------
// ----------- R E S T -------------
// -----------------------------------

function AddFavorite(linkObj, addUrl, addTitle) {
    if (document.all && !window.opera) {
        window.external.AddFavorite(addUrl,addTitle);
        return false;

    } else if (window.opera && window.print) {
        linkObj.title = addTitle;
        return true;

    } else if ((typeof window.sidebar == 'object') && (typeof window.sidebar.addPanel == 'function')) {
        if (window.confirm('Přidat oblíbenou stránku jako nový panel?')) {
            window.sidebar.addPanel(addTitle,addUrl,'');
            return false;
        }
    }

    window.alert('Po potvrzení stiskněte CTRL-D,\nstránka bude přidána k vašim oblíbeným odkazům.');
    return false;
}

function elementPositionX(targetEl) {
	var value = 0;
	while (targetEl != null) {
		value += targetEl.offsetLeft;
		targetEl = targetEl.offsetParent;
	}
	return value;
}

function elementPositionY(targetEl) {
	var value = 0;
	while (targetEl != null) {
		value += targetEl.offsetTop;
		targetEl = targetEl.offsetParent;
	}
	return value;
}

function filter_submit() {
    document.getElementById("filter_form").submit();
}

function search_submit(tAction) {
    var formObj = document.getElementById("filter_form");
    formObj.action = tAction;
    formObj.submit();
}

function preview(prev_path) {
	window.open("/preview.php?prev_path=" + prev_path, "prev_wnd", "toolbar=0,statusbar=0,menubar=0,resizable=1,scrollbars=0,width=800,height=600");
}

function download(path) {
	window.open(path, "down_wnd");
}

function login_alert() {
	document.getElementById("login_alert").style.display = "block";
}

function login_alert_close() {
	document.getElementById("login_alert").style.display = "none";
}

function cform_init() {
	var obj_email = document.getElementById("cform_email");
	var obj_message = document.getElementById("cform_message");
	var obj_form = document.getElementById("cform_form");
	
	var obj_newsletter = document.getElementById("cform_newsletter");
	var obj_newsletter_form = document.getElementById("cform_newsletter_form");
	
	var strA = "Váš e-mail";
	var strB = "Text zprávy";
	
	obj_email.onfocus = function() { if (this.value == strA) this.value = ""; }
	obj_email.onblur = function() { if (this.value == "") this.value = strA; } 
	
	obj_message.onfocus = function() { if (this.value == strB) this.value = ""; }
	obj_message.onblur = function() { if (this.value == "") this.value = strB; }
	
	obj_newsletter.onfocus = function() { if (this.value == strA) this.value = ""; }
	obj_newsletter.onblur = function() { if (this.value == "") this.value = strA; }	
	
	obj_form.onsubmit = function() { 
		var obj_email = document.getElementById("cform_email");
		var obj_message = document.getElementById("cform_message");
		
		var strA = "Váš e-mail";
		var strB = "Text zprávy";
		
		if (obj_email.value == strA) obj_email.value = "";
		if (obj_message.value == strB) obj_message.value = "";
	}
	
	obj_newsletter_form.onsubmit = function() {
		var obj_newsletter = document.getElementById("cform_newsletter");
		
		var strA = "Váš e-mail";
		
		if (obj_newsletter.value == strA) obj_newsletter.value = "";
	}
}

// A L E R T  B O X
var alert_container = null;
var alert_timer = null;

function alert_hide() {
    alert_container.style.display = "none";
    alert_timer = null;
}

function msg_alert(selfEl, iMsg) {
    if (alert_container == null) {
        alert_container = document.createElement("DIV");
        alert_container.className = "alert_container";
        document.getElementById("main_container").appendChild(alert_container);
    }

    alert_container.innerHTML = iMsg;
    alert_container.style.display = "block";
    alert_container.style.left = (elementPositionX(selfEl) + selfEl.offsetWidth + 5) + "px";
    alert_container.style.top = (elementPositionY(selfEl) + 5) + "px";

    if (alert_timer != null) clearTimeout(alert_timer);
    alert_timer = setTimeout("alert_hide()", 2000);
}

function number_check(eventRef) {
    var selfEl = (eventRef.srcElement == null) ? eventRef.target : eventRef.srcElement;

    var keycode;
    var keychar;
    var numcheck;

    if (window.event) keycode = eventRef.keyCode;
    else if (eventRef.which) keycode = eventRef.which;
    keychar = String.fromCharCode(keycode);

    numcheck = /\d/;
    if (numcheck.test(keychar)) return true;
    else {
        switch (eventRef.keyCode) {
            case 9 :
            case 13 :
            case 8 :
            case 46 :
            case 16 :
            case 18 :
            case 36 :
            case 35 :
                return true;
                break;

            default :
                return false;
                break;
        }
    }
}

function psc_alert(eventRef) {
    var selfEl = (eventRef.srcElement == null) ? eventRef.target : eventRef.srcElement;
    if (selfEl.value.length >= 5) {
        switch (eventRef.keyCode) {
            case 9 :
            case 13 :
            case 8 :
            case 46 :
            case 16 :
            case 18 :
            case 36 :
            case 35 :
                return true;
                break;

            default :
                msg_alert(selfEl, "Směrovací číslo může mít <strong>pouze 5 číslic</strong>!");
                return false;
                break;
        }
    } else return number_alert(eventRef);
}

function phone_alert(eventRef) {
    var selfEl = (eventRef.srcElement == null) ? eventRef.target : eventRef.srcElement;

    var keycode;
    var keychar;
    var numcheck;

    if (window.event) keycode = eventRef.keyCode;
    else if (eventRef.which) keycode = eventRef.which;
    keychar = String.fromCharCode(keycode);

    numcheck = /\d/;
    if (numcheck.test(keychar)) return true;
    else {
        switch (eventRef.keyCode) {
            case 9 :
            case 13 :
            case 8 :
            case 46 :
            case 16 :
            case 18 :
            case 36 :
            case 35 :
                return true;
                break;

            default :
                if (selfEl.value.length == 0) {
                    if (keychar == "+") return true;
                    else {
                        msg_alert(selfEl, "První znak může být pouze <strong>číslice</strong> nebo <strong>znaménko \"+\"</strong>!");
                        return false;
                    }
                } else {
                    if (keychar == "+") msg_alert(selfEl, "Znaménko \"+\" může být <strong>pouze na začátku telefonního čísla</strong>!");
                    else msg_alert(selfEl, "V tomto poli je požadován <strong>číselný údaj</strong>!");
                    return false;
                }
                break;
        }
    }
}

function ctype_box(eventRef) {
    var selfEl = (eventRef.srcElement == null) ? eventRef.target : eventRef.srcElement;
    if (selfEl.tagName.toUpperCase() == "OPTION") {
        var put = "";
        
        switch (selfEl.value) {
            case "osvč" : put = "Osoba samostatně výdelečně činná (Živnostník)"; break;
            case "s.r.o." : put = "Společnost s ručením omezeným"; break;
            case "v.o.s." : put = "Veřejná obchodní společnost"; break;
            case "k.s." : put = "Komanditní společnost"; break;
            case "a.s." : put = "Akciová společnost"; break;
        }
        
        if (put != "")
            msg_alert(selfEl, put);
    }
}

function number_alert(eventRef) {
    if (!number_check(eventRef)) {
        var selfEl = (eventRef.srcElement == null) ? eventRef.target : eventRef.srcElement;
        msg_alert(selfEl, "V tomto poli je požadován <strong>číselný údaj</strong>!");
        return false;
    } else return true;
}

