window.onerror = function(msg,url,line) {
    return confirm("JS Error: "+msg+"\nURL: "+url+"\nline: "+line+"\ncaller: "+window.onerror.caller);
};



Number.prototype.toHex = function() {return this.toString( 16 );}
String.prototype.toDec = function() {return parseInt(this, 16);}
Array.prototype.contains = function (element) {
    for (var i = 0; i < this.length; i++)
        if (this[i] == element)  return true;
    return false;
}
Array.prototype.add = function (element) {
    this[this.length] = element;
}

doc = document;

doc.preLoadContainer = function(container, func) {
     function tree(chlds) {
         for(var i=0;i<chlds.length;i++) {
             if(chlds[i].childNodes) tree(chlds[i].childNodes);
             if(chlds[i].tagName) func(chlds[i]);
         }
     }
     tree(container.childNodes);
 }
doc.swapImage = function(el, src) {el.src = src;}
doc.Timer = function(task, interval) {
    var self = this;
    self.id = 0;
    self.interval = interval ? interval : 1000;
    self.task = task ? task : function() {}
    self.stop = function() {
        if(self.id) {
        window.clearTimeout(self.id);
        self.id = 0;
        }
    }

    self.start = function() {
        if(self.id) self.stop();
        self.id = window.setTimeout(self.task, self.interval);
	}

    self.repeat = function() {
        if(self.id) self.stop();
        self.id = window.setInterval(self.task, self.interval);
    }
}

// GLOBAL FUNCTIONS

    function swapTdNodes(bool) {
        var t1 = $("FormNwSwapCell"+(bool?'A':'B'));
        var t2 = $("FormNwSwapCell"+(!bool?'A':'B'));
        t1.parentNode.replaceChild(t1, t2);
        t1.parentNode.insertBefore(t2, t1);
    }
    function setDisabledInpts(state) {
        FormNwElement['pkr'].disabled = FormNwElement['pkr_cd'].disabled = FormNwElement['pkr_inny'].disabled = state;
    }

    function sendCheckStateForm(form) {
    var req = mint.Request();
    req.OnSuccess = function() {
        $("StateResponse").innerHTML = this.responseText;
    }
    req.SendForm(form);
}

    function verifyNumber(obj) {
        var number = obj.value;
        var rexp=/^(nw|mp|ow|pp)[0-9a-f._-]{7,9}$/i;
        if( number!="" && !rexp.test(number) ) {
            alert('Niepoprawny numer zgłoszenia!');
            obj.focus();
            obj.select();
        }
    }
    function verifyEmail(obj) {
        return true;
        var email = obj.value;
        var rexp=/^[0-9a-z.-_]+(@|\(at\))+[0-9a-z._-]+\.[a-z]{2,3}$/i;
        if( email!="" && !rexp.test(email) ) {
            alert('Niepoprawny adres e-mail!');
            obj.focus();
            obj.select();
        }
    }
    function verifyCode(obj) {
        var code = obj.value;
        //var rexp=/^\d\d\-\d\d\d$/i;
        var rexp=/^\d\d[\-\s\d][\-\s\d]{0,1}\d\d$/i;
        if( code!="" && !rexp.test(code) ) {
            alert('Niepoprawny kod pocztowy!');
            obj.focus();
            obj.select();
        }
    }
    function moveFocus(e) {
        if(!FormNwElement.focus_next_by_enter) return true;
            function getIndex(input) {
                for(var i=0;i<input.form.length;i++) if(input.form[i] == input) return i;
                return null;
            }
        e = !e ? event : e;
        if(e.keyCode==13) {
            var current = (e.target || e.srcElement);
            var index = getIndex(current);
            var next = index == current.form.length-1 ? 0 : index+1;
            current.form[next].focus();
            return false;
        }
        return true;
    }
    function numericInputKeyDown(e) {
        e = !e ? event : e;
        if(!moveFocus(e)) return false;
        var k = e.keyCode;
        var funck = k==8 || k==9 || k==32 || (k>=37 && k<=40) || k==46 || k==109 || k==189;
        var isNumPad = ( ( (k>=48 && k<=57) || (k>=96 && k<=111) ) && !e.shiftKey);
        if( funck || isNumPad ) return true;
        return false;
    }
    function verifyForm(layer) {
                       function checkElement(el, cancel) {
                           if(!el) return true;
                            if(el.disabled) return true;
                            if( ( (el.type == "text" || el.type == "hidden" ) && el.value == "") ||
                                (el.type == "select-one" && el.value == 0)
                                ) {
                                    if(cancel) {
                                        alert("Nie wype\u0142niono wszystkich wymaganych pól:\n\t- "+el.title);
                                        if(el.type != "hidden") el.focus();
                                        if(el.type == "text") el.select();
                                    }
                                return false;
                            }

                           return true;
                        }

        var elms = ['imie','nazwisko','rasa','nazwa','masc','grupa','email']; // def mp
        var case2 = ['hodowca_imie','hodowca_nazwisko','wlasciciel1_imie','wlasciciel1_nazwisko','wlasciciel1_ulica','wlasciciel1_kod','wlasciciel1_miasto','wlasciciel1_kraj','wlasciciel1_tel','wlasciciel1_email'];
        var case3 =  ['rasa','masc','klasa'];
        var case4 = ['ojciec','matka','nazwa','przydomek','ppn','nr_tatuazu','nr_rejestracyjny'];

        switch(layer) {
            case 1:
            case 5:
            case 6:return true;
            case 2:elms = case2;break;
            case 3:if(!doc.getElementsByName( 'pkr_wp' )[0].checked) {
                        var a = doc.getElementsByName( 'pkr_cd' )[0];
                        var b = doc.getElementsByName( 'pkr_inny' )[0];
                        var c = doc.createElement("input");
                            with(c) {
                                type = "hidden";
                                name = "pkr_masta";
                                title = "numer rodowodu (pkr, kw lub inny)";
                            }
                            doc.body.appendChild(c);
                        if(a.value == '' && b.value == '') {
                            case3 = ['pkr_masta'].concat(case3);
                        }
                    }
                    elms = case3;break;
            case 4:elms = case4;break;
            case -1:
            default:elms = case2.concat(case3, case4);
        }

        for(var i=0; i <elms.length; i++)
             if(!checkElement(doc.getElementsByName( elms[i] )[0], layer<0?1:layer) )
                 return false;
        return true;
    }
    function setAnnexInfoBox() {

        var ostr = "<li>Nale\u017cy do\u0142\u0105czy\u0107 kopi\u0119 rodowodu.</li>";
        if(FormNwElement['tytuly'].value!='') ostr += "<li>Nale\u017cy do\u0142\u0105czy\u0107 kopi\u0119 dyplomów do wszystkich posiadanych tytu\u0142ów.</li>";
        switch(parseInt(FormNwElement['klasa'].value)) {
            case 8:
            case 1:
            case 2:ostr = "<li>Dla Twojego zg\u0142oszenia nie s\u0105 wymagane \u017cadne kopie dokumentów.</li>";break;
            case 5:ostr += "<li>Zg\u0142aszaj\u0105c psa do klasy użytkowej nale\u017cy dodatkowo do\u0142\u0105czy\u0107 kopi\u0119 certyfikatu użytkowości</li>";break;
            case 6:ostr += "<li>Zg\u0142aszaj\u0105c psa do klasy championów nale\u017cy dodatkowo do\u0142\u0105czy\u0107 kopi\u0119 dyplomu.</li>";break;
        }
        doc.getElementById('AnnexInfoBox').innerHTML = ostr;
    }


    function submitForm() {
        if(!verifyForm(-1)) return false;
        FormNwElement.className = "none";
        doc.getElementById("InfoPane").className = "block";
        return true;
    }
    function submitFormMp() {
        if(!verifyForm(-1)) return false;
        if(!$('RmpCheckbox').checked) {
            alert("Należy zapoznać się i zaakceptować regulamin do konkursu \"Młody Prezenter\".");
            return false;
        }
        FormNwElement.className = "none";
        doc.getElementById("InfoPane").className = "block";
        return true;
    }


// GLOBAL OBJECT DEFS

function initZKWP() {


    doc.preLoadContainer(doc.body, function(el) {
                if(!$(el).hasClass('no_hover_decoration') && el.tagName.toLowerCase()=="a") {
                    AddEvent(el, 'mouseover', function(){$(this).addClass("underline");});
                    AddEvent(el, 'mouseout', function(){$(this).removeClass("underline");});
                }});

    FormNwElement = $('FormNw');
    if(FormNwElement) {
        FormNwElement.focus_next_by_enter = true;
        FormNwElement.annex = [];
        

        FormNwElement.showNextInputFile = function() {
            var max_inputs = 5;
            for(var i=1;i<=max_inputs; i++) {

                var input = $('AnnexHiddenBox').down('input',i);
                if(input.hasClass('none')) {
                    input.removeClass('none');
                    if(i==max_inputs) $('AnnexHiddenBox').down('a').addClass('none');
                    return;
                }
            }
    }

                            
        FormNwElement.addAnnex = function(file) {
                                if(file.value!='') {
                                    var last_backslash = file.value.lastIndexOf('\\');
                                    var file_name = file.value.substring(last_backslash+1);
                                    FormNwElement.annex.add(file_name);
                                    $('AnnexFileCounter').innerHTML = FormNwElement.annex.length;
                                    $('AnnexFileCounter').up('div').title = FormNwElement.annex;
                                }
                            }
    }

    SearchEditBoxElement = $('SearchEditBox');
    if(SearchEditBoxElement) {
        var displayFindedBoxes = function() {

            doc.preLoadContainer(doc.body, function(el){
                    if($(el).hasClass("searchbox")) {
                        var t =  $(el).down('div').innerHTML.toLowerCase();
                        var v = SearchEditBoxElement.value.toLowerCase();
                        if(v!='' && t.indexOf(v, 0) == -1) {
                            $(el).addClass('none');
                        } else $(el).removeClass('none');
                    }
                });

        }

        SearchEditBoxElement.onkeyup = (new doc.Timer(displayFindedBoxes, 500)).start;
        SearchEditBoxElement.focus();
    }
    
    if(window.main) main();
} 

