
var dw_fontSizerDX = {
    sizeUnit:    "px",
    defaultSize: 14,
    maxSize:     20,
    minSize:     14,
    adjustList: [], 

    setDefaults: function(unit, dflt, mn, mx, sels) {
        this.sizeUnit = unit;       this.defaultSize = dflt;
        this.maxSize = mx;          this.minSize = mn;
        if (sels) this.set(dflt, mn, mx, sels);
    },

    set: function (dflt, mn, mx, sels) { 
        var ln = this.adjustList.length;        
        for (var i=0; sels[i]; i++) {
            this.adjustList[ln+i] = [];
            this.adjustList[ln+i]["sel"]  = sels[i];
            this.adjustList[ln+i]["dflt"] = dflt;
            this.adjustList[ln+i]["min"]   = mn || this.minSize;
            this.adjustList[ln+i]["max"]   = mx || this.maxSize;
         
		 
            this.adjustList[ln+i]["ratio"] = this.adjustList[ln+i]["dflt"] / this.defaultSize;
        }
    },

    init: function() {
        if ( !document.getElementById || !document.getElementsByTagName ) return;
        var size, sizerEl, i;
        //size = window.location.search? window.location.search.slice(1): getCookie("fontSize");
        size = getCookie("fontSize");
        size = !isNaN( parseFloat(size) )? parseFloat(size): this.defaultSize;
        // in case default unit changed or size passed in url out of range
        if ( size > this.maxSize || size < this.minSize ) size = this.defaultSize;
        this.curSize = this.defaultSize;  // create curSize property to use in calculations 
        sizerEl = document.getElementById('sizer');
        if (sizerEl) sizerEl.style.display = "block";
        // if neither set nor setDefaults populates adjustList, apply sizes to body and td's
        if (this.adjustList.length == 0) {
            //this.setDefaults( this.sizeUnit, this.defaultSize, this.minSize, this.maxSize, ['body', 'td', 'p', 'li', 'a', 'div'] );
			//this.set( 9, 9, 15, [] );

			//this.set( 10, 10, 16, ['.top_menu', '.top_menu_hover', '.opis_slike', 'a.izdelki_preberi_vec', 'A:link.izdelki_preberi_vec', 'A:visited.izdelki_preberi_vec', 'A:active.izdelki_preberi_vec', 'A:hover.izdelki_preberi_vec', '.novice_podnaslov', '.novice_datum', '.novice_vsebina', 'a.bottom', '.bottom', '.podrobnosti_sorodne', '.izbirni_inactive', '.izbirni_active'] );
			//this.set( 11, 11, 17, ['.faq_dd_linki', '.faq_dd_linki_hover', '.levi_meni', '.artikel_vrhnji_tekst', '.nasvet', '.artikel_tekst', 'a.artikel_tekst', 'a.artikel_tekst_link', '.levi_meni_linki', '.levi_meni_linki_hover', 'A:hover.levi_meni_linki', 'A:visited.levi_meni_linki', 'A:active.levi_meni_linki', 'A:link.levi_meni_linki', '.levi_meni_top', 'th.s', 'td.s'] );
			//this.set( 12, 12, 18, ['.aktualno_datum', '.kontakt_link_01', '.kontakt_link_01 a', '.kontakt_link_02', '.kontakt_link_02 a', '.faq_vpr', '.faq_vpr a', '.faq_odg', '.faq_odg a', '.izdelek_tekst', '.izdelek_tekst_izbirni', '.izdelek_tekst_izbirni_a', '.podrobnosti_levo', '.podrobnosti_levo_izpostavljeno_vsebina', '.podrobnosti_desno', '.podrobnosti_poudarek', '.podrobnosti_multimedia', 'a.podrobnosti_povezava', '.novice', '.iskanje_naslov', '.iskanje_besedilo'] );
			//this.set( 14, 14, 20, ['.artikel_naslov', '.podrobnosti_podnaslov', '.o_podjetju_podnaslov'] );
			//this.set( 15, 15, 21, ['.podrobnosti_desno_krepko'] );
			//this.set( 16, 16, 22, ['.predstavitev_medexa'] );
			//this.set( 18, 18, 24, ['h1.izdelek_tekst', 'a.izdelek_tekst_naslov', 'h1.izdelek_tekst_izbirni'] );
			//this.set( 19, 19, 25, ['.artikel_vrhnji_naslov'] );
			//this.set( 20, 20, 26, ['.izbirni_naslov', '.artikelski_tip', '.podrobnosti_naslov', '.o_podjetju_naslov'] );

			this.set( 10, 10, 16, ['a.english', 'a:link.english', 'a:visited.english', 'a:active.english', 'a:hover.english', '.aktualno_list_01', '.novice_podnaslov',
'.novice_datum', '.novice_vsebina', '.opis_slike', '.podrobnosti_sorodne', 'a.izdelki_preberi_vec', 'A:link.izdelki_preberi_vec',
'A:visited.izdelki_preberi_vec', 'A:active.izdelki_preberi_vec', 'A:hover.izdelki_preberi_vec',
'.artikel_tekst', 'a.bottom', '.bottom', '.top_menu', '.top_menu_hover', '.izdelek_tekst', 'a.izdelek_tekst_link'] );
			this.set( 11, 11, 17, ['.faq_dd_linki', '.faq_dd_linki_hover', 'table.data td', 'table.data td.s', 'table.data th.s', 'table.data th', '.nasvet',
'a.artikel_tekst_link', '.izdelek_tekst_header', '.izbirni_inactive', '.izbirni_active', '.artikel_vrhnji_tekst', '.levi_meni_top',
'.levi_meni', '.levi_meni_linki', '.levi_meni_linki_hover', '.artikel_vrhnji_tekst a', '.artikel_vrhnji_tekst a:link', '.artikel_vrhnji_tekst a:visited',
'.artikel_vrhnji_tekst a:active', '.artikel_vrhnji_tekst a:hover', 'a.lang_select', 'a.lang_select:link', 'a.lang_select:visited', 'a.lang_select:active',
'a.lang_select:hover'] );
			this.set( 12, 12, 18, ['a.trgovina', 'a:link.trgovina', 'a:visited.trgovina', 'a:active.trgovina', 'a:hover.trgovina', '.aktualno_list_02', '.aktualno_datum',
'.faq_vpr', 'a.faq_vpr', 'a:link.faq_vpr', 'a:visited.faq_vpr', 'a:active.faq_vpr', 'a:hover.faq_vpr',
'.faq_vpr', 'a.faq_vpr', 'a:link.faq_vpr', 'a:visited.faq_vpr', 'a:active.faq_vpr', 'a:hover.faq_vpr',
'.kontakt_link_02', 'a.kontakt_link_02', 'a:link.kontakt_link_02', 'a:visited.kontakt_link_02', 'a:active.kontakt_link_02',
'a:hover.kontakt_link_02', '.kontakt_link_01', 'a.kontakt_link_01', 'a:link.kontakt_link_01', 'a:visited.kontakt_link_01',
'a:active.kontakt_link_01', 'a:hover.kontakt_link_01', '.iskanje_besedilo', 'a.iskanje_besedilo', 'a:link.iskanje_besedilo',
'a:visited.iskanje_besedilo', 'a:active.iskanje_besedilo', 'a:hover.iskanje_besedilo', '.iskanje_naslov', 'a.iskanje_naslov',
'a:link.iskanje_naslov', 'a:visited.iskanje_naslov', 'a:active.iskanje_naslov', 'a:hover.iskanje_naslov', 'a.podrobnosti_povezava',
'.izdelek_tekst_izbirni_a', '.izdelek_tekst_izbirni a', '.podrobnosti_levo', '.podrobnosti_levo_izpostavljeno_vsebina',
'.podrobnosti_desno', '.podrobnosti_poudarek', '.podrobnosti_poudarek a', '.podrobnosti_poudarek a:link',
'.podrobnosti_poudarek a:visited', '.podrobnosti_poudarek a:active', '.podrobnosti_poudarek a:hover', '.podrobnosti_levo a', '.podrobnosti_levo a:link',
'.podrobnosti_levo a:visited', '.podrobnosti_levo a:active', '.podrobnosti_levo a:hover', '.podrobnosti_multimedia',
'.novice', '.izdelek_tekst_izbirni'] );
			this.set( 14, 14, 20, ['.under_construction_02 a', '.under_construction_02', '.artikel_naslov', 'a.artikel_naslov', 'a:link.artikel_naslov', '.predstavitev_medexa',
'a:visited.artikel_naslov', 'a:active.artikel_naslov', 'a:hover.artikel_naslov', '.podrobnosti_podnaslov', '.o_podjetju_podnaslov'] );
			this.set( 15, 15, 21, ['.podrobnosti_desno_krepko'] );
			this.set( 18, 18, 24, ['.under_construction_01', 'a.izdelek_tekst_naslov', 'h1.izdelek_tekst_izbirni', 'h1.izdelek_tekst_izbirni a'] );
			this.set( 20, 20, 26, ['.o_podjetju_naslov', '.podrobnosti_naslov'] );
			this.set( 25, 25, 31, ['.izbirni_naslov', '.artikel_vrhnji_naslov', '.artikelski_tip_naslov'] );
        }
        if ( size != this.defaultSize ) this.adjust( size - this.defaultSize );
    },

    adjust: function(n) {
        if ( !this.curSize ) return; // set in init
        var alist, size, list, i, j;
        // check against max/minSize
        if ( n > 0 )
        {
            if ( this.curSize + n > this.maxSize )
            {
            	n = this.maxSize - this.curSize;
            }
        }
        else if ( n < 0 )
        {
            if ( this.curSize + n < this.minSize )
            {
            	n = this.minSize - this.curSize;
            }
        }
        if ( n == 0 ) return;
        this.curSize += n;
        // loop through adjustList, calculating size, checking max/min
        alist = this.adjustList;
        for (i=0; alist[i]; i++) {
            size = this.curSize * alist[i]['ratio']; // maintain proportion 
            size = Math.max(alist[i]['min'], size); size = Math.min(alist[i]['max'], size);
            list = dw_getElementsBySelector( alist[i]['sel'] );
            for (j=0; list[j]; j++) { list[j].style.fontSize = size + this.sizeUnit; }
        }
        pathname = window.location.pathname;
        pathname = pathname.substr(0, pathname.lastIndexOf('/') + 1);
        setCookie("fontSize", this.curSize, 900, pathname);
    },

    reset: function() {
        var alist = this.adjustList, list, i, j;
        for (i=0; alist[i]; i++) {
            list = dw_getElementsBySelector( alist[i]['sel'] );
            for (j=0; list[j]; j++) { 
                // Reset adjustList elements to their default sizes
                //list[j].style.fontSize = alist[i]['dflt'] + this.sizeUnit;
                list[j].style.fontSize = '';  // restores original font size
            } 
        }
        this.curSize = this.defaultSize;
        deleteCookie("fontSize", "/");
    }

}



function dw_getElementsBySelector(selector) {
    if (!document.getElementsByTagName) return [];
    var nodeList = [document], tokens, bits, list, col, els, i, j, k;
    selector = selector.normalize();
    tokens = selector.split(' ');
    for (i=0; tokens[i]; i++) {
        if ( tokens[i].indexOf('#') != -1 ) {  // id
            bits = tokens[i].split('#'); 
            var el = document.getElementById( bits[1] );
            if (!el) return []; 
            if ( bits[0] ) {  // check tag
                if ( el.tagName.toLowerCase() != bits[0].toLowerCase() ) return [];
            }
            for (j=0; nodeList[j]; j++) {  // check containment
                if ( nodeList[j] == document || dw_contained(el, nodeList[j]) ) 
                    nodeList = [el];
                else return [];
            }
            continue; 
        } else if ( tokens[i].indexOf('.') != -1 ) {  // class
            bits = tokens[i].split('.'); col = [];
            for (j=0; nodeList[j]; j++) {
                els = dw_getElementsByClassName( bits[1], bits[0], nodeList[j] );
                for (k=0; els[k]; k++) { col[col.length] = els[k]; }
            }
            nodeList = [];
            for (j=0; col[j]; j++) { nodeList.push(col[j]); }
            continue; 
        } else {  // element 
            els = []; 
            for (j = 0; nodeList[j]; j++) {
                list = nodeList[j].getElementsByTagName(tokens[i]);
                for (k = 0; list[k]; k++) { els.push(list[k]); }
            }
            nodeList = els;
        }
    }
    return nodeList;
}

function dw_getElementsByClassName(sClass, sTag, oCont) {
    var result = [], list, i;
    var re = new RegExp("\\b" + sClass + "\\b", "i");
    oCont = oCont? oCont: document;
    if ( document.getElementsByTagName ) {
        if ( !sTag || sTag == "*" ) {
            list = oCont.all? oCont.all: oCont.getElementsByTagName("*");
        } else {
            list = oCont.getElementsByTagName(sTag);
        }
        for (i=0; list[i]; i++) 
            if ( re.test( list[i].className ) ) result.push( list[i] );
    }
    return result;
}

// returns true of oNode is contained by oCont (container)
function dw_contained(oNode, oCont) {
    if (!oNode) return; // in case alt-tab away while hovering (prevent error)
    while ( oNode = oNode.parentNode ) if ( oNode == oCont ) return true;
    return false;
}

if (!Array.prototype.push) {  // ie5.0
	Array.prototype.push =  function() {
		for (var i=0; arguments[i]; i++) this[this.length] = arguments[i];
		return this[this.length-1]; // return last value appended
	}
}

String.prototype.normalize = function() {
	var re = /\s\s+/g;
	return this.trim().replace(re, " ");
}

String.prototype.trim = function() {
	var re = /^\s+|\s+$/;
	return this.replace(re, "");
}

