// load all the functions
addOnLoad = function() {
    var wo = window.onload ? window.onload : function() {};
    var f = arguments;
    window.onload = function() {
        for (var i=0,j=f.length;i<j;i++) {
            f[i]();
        }
        wo();
    }
}
externalLinks = function() {
    if (!document.getElementsByTagName) return false;
    var anchors = document.getElementsByTagName("a");
    for (var i=0; i<anchors.length; i++) {
        var anchor = anchors[i];
        if (anchor.getAttribute("href") &&
            anchor.getAttribute("rel") == "external")
            anchor.target = "_blank";
    }
}

gotoTop = function() {
    location.href = location.href.replace('#top','') + '#top';
}

function handleGeneralbackLinks(){
    var allImages = getElementsByClassName(document, 'a', 'generalBackLink');
    var len = allImages.length;
    if(len>0){
        for(i=0;i<len;i++){
            var a = allImages[i];
            a.onclick = function() {
                history.back();
                return false;
            }
        }
    }
}

function parseImages() {
    /*
    <div class="imageHolder"><a href="#" class="expandPicture><img src="#" /></a><span class="subtitle">To je opis slike</span></div>
    */
    var allImages = getElementsByClassName(document, 'a', 'expandPicture');
    //var relImages = getElementsByRel(document, 'a', 'nyromodal');
    //var allImages = classImages.concat(relImages);
    
    var len = allImages.length;

    if(len>0){
        for(i=0;i<len;i++){
            var a = allImages[i];
            a.onclick = function() {
                return hs.expand(this);
            }
            var theDiv = document.createElement('div');
            theDiv.className = "pictureWithSubtitle";
            var parent = a.parentNode;
            parent.insertBefore(theDiv, a);
            theDiv.appendChild(a);
            if (a.firstChild) {
                var theSpan = document.createElement('span');
                theSpan.className = 'subtitle';
                theSpan.innerHTML = a.firstChild.alt;
                theDiv.appendChild(theSpan);
            }
        }
    }
}

/*
Written by Jonathan Snook, http://www.snook.ca/jonathan
Add-ons by Robert Nyman, http://www.robertnyman.com
example: getElementsByClassName(document, "a", "info-links");
*/
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements);
}

function getElementsByRel(oElm, strTagName, rel){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    rel = rel.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + rel + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.rel)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements);
}

function disableUnclikableLinks(){
    var a = document.getElementsByTagName('a');
    var l = a.length;
    for(var i=0;i<l;i++){
        //var href = a[i].href;
        if(a[i].className=='notClickable'){
            a[i].onclick=function(){
                return false;
            };
            a[i].style.cursor='default';
            a[i].style.textDecoration = 'none';
        }
    }
}

function unscramble(){
    var all_elements=document.getElementsByName('scrambled_mail_href');
    if(all_elements.length>0){
        for(i=0;i<=all_elements.length-1;i++){
            var this_link = all_elements[i];

            //function that attaches onclick to all <a> elements that have scrambled mail...
            this_link.onclick = function () {
                var link = this;
                s="ocknv";
                r="";
                for(var i=0; i < s.length; i++) {
                    n=s.charCodeAt(i);
                    if (n>=8364) {
                        n = 128;
                    }
                    r += String.fromCharCode(n-(2));
                }
                r+='o';
                link.href=r+":"+link.title;
            }

            //unscramble words inside '> <' tags
            var uglymail = this_link.firstChild.nodeValue;
            var nicemail='';
            if (uglymail != null) {
                for(var j=0; j < uglymail.length; j++) {
                    n=uglymail.charCodeAt(j);
                    // Due to ord, chr convert in PHP we have to manually code UTF8 chars here
                    // UTF8 CODE -> ASCI KODE -> sign
                    // 334 -> 65533 -> č
                    //RM 65533 is č, add suport for č,š,ž, Č,Š,Ž
                    if (n == '334') {
                        nicemail += 'č';

                    }else if (n == '418') {
                        nicemail += 'š';
                    }else if (n == '447') {
                        nicemail += 'ž';
                    } else {
                        if (n>=8364) {
                            n = 128;
                        }
                        nicemail += String.fromCharCode(n-1);
                    }
                }
            }
            
            this_link.firstChild.nodeValue = nicemail;

            //unscramble title tag (we have the email address there)
            var uglytag = this_link.title;
            //alert(uglytag);
            var nicetag = '';
            for(var j=0; j < uglytag.length; j++) {
                n=uglytag.charCodeAt(j);
                if (n>=8364) {
                    n = 128;
                }
                nicetag += String.fromCharCode(n-1);
            }
            this_link.title=nicetag;

        }
    }
}

function debugObject(o, hidenulls) {
    var s;
    var j = 0;
    for(var i in o) {
        if (typeof o[i] != 'function' && !(hidenulls && o[i]==null)) {
            j++;
            s += i+'='+o[i];
            if (j % 2 == 0) s+="\n"; else s+="  |||  ";
        }
    }
    alert(s);
}

//target="_blank" is not valid. We use rel="external" instead and use this function.
function externalLinks() {
    if (!document.getElementsByTagName) return;
    var anchors = document.getElementsByTagName("a");
    for (var i=0; i<anchors.length; i++) {
        var anchor = anchors[i];
        if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")anchor.target = "_blank";
    }
}

function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
{
    var arVersion = navigator.appVersion.split("MSIE")
    var version = parseFloat(arVersion[1])
    if ((version >= 5.5) && (document.body.filters))
    {
        for(var i=0; i<document.images.length; i++)
        {
            var img = document.images[i]
            var imgName = img.src.toUpperCase()
            if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
            {
                var imgID = (img.id) ? "id='" + img.id + "' " : ""
                var imgClass = (img.className) ? "class='" + img.className + "' " : ""
                var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
                var imgStyle = "display:inline-block;" + img.style.cssText
                if (img.align == "left") imgStyle = "float:left;" + imgStyle
                if (img.align == "right") imgStyle = "float:right;" + imgStyle
                if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
                var strNewHTML = "<span " + imgID + imgClass + imgTitle
                + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
                + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
                + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
                img.outerHTML = strNewHTML
                i = i-1
            }
        }
    }
}


function redirectTo(url) {
    if (url==null || url=='' || String(url)=='undefined') {
    } else {
        window.location = url;
    }
}

// dynamically load any javascript file.
// use tryReadyScript (smtours project) too see how we can check when this script is loaded
function getScript(filename) {
    var script = document.createElement('script');
    script.setAttribute("type","text/javascript");
    script.setAttribute("src", filename);
    
    if (typeof script!="undefined") {
        document.getElementsByTagName("head")[0].appendChild(script);
    }
}

addOnLoad(correctPNG);
addOnLoad(externalLinks);
addOnLoad(parseImages);
addOnLoad(unscramble);
addOnLoad(handleGeneralbackLinks);
addOnLoad(disableUnclikableLinks);
/**************************** event handling **********************************/
var aeOL = [];
function addEvent(o, n, f, l) {
    var a = 'addEventListener', h = 'on'+n, b = '', s = '';
    if (o[a] && !l) return o[a](n, f, false);
    o._c |= 0;
    if (o[h]) {
        b = '_f' + o._c++;
        o[b] = o[h];
    }
    s = '_f' + o._c++;
    o[s] = f;
    o[h] = function(e) {
        e = e || window.event;
        var r = true;
        if (b) r = o[b](e) != false && r;
        if (typeof o[s] == 'function') {  // ie7 problem
            r = o[s](e) != false && r;
        }
        return r;
    };
    aeOL[aeOL.length] = {
        o: o,
        h: h
    };
};

addEvent(window, 'unload', function() {
    for (var i = 0; i < aeOL.length; i++) with (aeOL[i]) {
        o[h] = null;
        for (var c = 0; o['_f' + c]; c++)
            o['_f' + c] = null;
        }
});


function cancelEvent(e, c) {
    e.returnValue = false;
    if (e.preventDefault) e.preventDefault();
    if (c) {
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
    }
};
