/*
Nitidum Helper!
www.nitidum.com

commit: $Id: 57ab373c7bc20b27983340ebc50b1a3cbe0ec674 $
*/

var bby=false,__w = window, __d = document, __n = __d.nitidum,
dc = "document.", ni = dc+"nitidum.", lc = dc + "location.",
sc = "screen.", nv = "navigator.", tc=400, 
commit="$Id: 57ab373c7bc20b27983340ebc50b1a3cbe0ec674 $".split(" ")[1];

__n.cx = __n.cy = 0;
__n.ds=new Date().getTime();

function qry(a){
    var e = function(s, u) {
        return (typeof(encodeURIComponent) == 'function') ?
        (u ? encodeURI(s) : encodeURIComponent(s)) : escape(s);
    };
    var q = "";
    a._pid=get(ni + "pid");
    a.cache=get("Math.floor(1000 * Math.random())");
    for (var i in a) {
        var r = a[i], t=typeof(r);
        //r = r?typeof(r)=="object"?r.toString():r:a[i];
        t = t=="number"?r==parseInt(r)?"int":"float":t=="boolean"?"bool":t;
        r = (t=="int" || t=="float")&& r=="" ? 0:r;
        q += i+":"+t+"="+e(r == "null"?"":r)+"&" ; 
    }
    return q;
}

function statTracker() {
    (new Image).src = "/_e?"+qry({
        act: "sts",
        dl: get(dc + "location.toString()"), sw: get(sc + "width"),
        sh: get(sc + "height"), scd: get(sc + "colorDepth"),
        dw: get(dc + "width"), dh: get(dc + "height"),
        je: navigator.javaEnabled(), nlang: get(nv + "language"),
        dcharset: Array(get(dc + "characterSet"), get(dc + "charset")),
        referrer: get(dc + "referrer"), flash: get("_uFlash"), 
        cookies_enabled: get(nv + "cookieEnabled"),
        tz:get("(new Date().getTimezoneOffset()/60)*(-1)")
    });
}

function _uFlash() {
    var f = "-",
    n = navigator;
    if (n.plugins && n.plugins.length) {
        for (var ii = 0; ii < n.plugins.length; ii++) {
            if (n.plugins[ii].name.indexOf('Shockwave Flash') != -1) {
                f = n.plugins[ii].description.split('Shockwave Flash ')[1];
                break;
            }
        }
    } else if (window.ActiveXObject) {
        for (var ii = 10; ii >= 2; ii--) {
            try {
                var fl = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + ii + "');");
                if (fl) {
                    f = ii + '.0';
                    break;
                }
            } catch(e) {}
        }
    }
    return f;
}

function rv(arg) {
    for (var i in arg) {
        var r = eval(arg[i]);
        if (r != null) return r;
    }
    return "";
}

function get(arg) {
    var r = "-";
    try {
        r = typeof(arg) == "string" ? eval(arg) : rv(arg);
        return typeof(r) == "function" ? eval(arg + "()") : r;
    }
    catch(err) {
        return null
    };
}

/*http://www.robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/*/
/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/	
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

function f_clientWidth() {
    return f_filterResults(
    __w.innerWidth ? __w.innerWidth: 0,
    __d.documentElement ? __d.documentElement.clientWidth: 0,
    __d.body ? __d.body.clientWidth: 0
    );
}

function f_clientHeight() {
    return f_filterResults(
    __w.innerHeight ? __w.innerHeight: 0,
    __d.documentElement ? __d.documentElement.clientHeight: 0,
    __d.body ? __d.body.clientHeight: 0
    );
}

function f_scrollLeft() {
    return f_filterResults(
    __w.pageXOffset ? __w.pageXOffset: 0,
    __d.documentElement ? document.documentElement.scrollLeft: 0,
    __d.body ? __d.body.scrollLeft: 0
    );
}

function f_scrollTop() {
    return f_filterResults(
    __w.pageYOffset ? __w.pageYOffset: 0,
    __d.documentElement ? __d.documentElement.scrollTop: 0,
    __d.body ? __d.body.scrollTop: 0
    );
}

function f_filterResults(n_win, n_docel, n_body) {
    var n_result = n_win ? n_win: 0;
    if (n_docel && (!n_result || (n_result > n_docel)))
    n_result = n_docel;
    return n_body && (!n_result || (n_result > n_body)) ? n_body: n_result;
}

function dh() {
    return __d.all?__d.body.offsetHeight:__d.layers?__d.body.document.height:__d.height;
}

function dw() {
    return __d.all?__d.body.offsetWidth:__d.layers?__d.body.document.width:__d.width;
}

function f_scrollHeightStat() {
    return parseInt(((f_scrollTop() + f_clientHeight())*100)/dh());
}

function f_scrollWidthStat() {
    return parseInt(((f_scrollLeft() + f_clientWidth())*100)/dw());
}

timercallback = function(){
    cx = __n.tx;cx1 = f_scrollWidthStat();__n.cx = cx1;__n.tx = cx > cx1 ? cx : cx1;
    cy = __n.ty;cy1 = f_scrollHeightStat();__n.cy = cy1;__n.ty = cy > cy1 ? cy : cy1;
    
}
__n.tid=__w.setInterval("timercallback();", tc);

formFocus = function()
{
    var forms = document.forms || [];
    for (var i = 0; i < forms.length; i++) {
        for (var j = 0; j < forms[i].length; j++) {
            if ((forms[i][j].type == "text" || forms[i][j].type == "submit" || 
                forms[i][j].type == "select") && !forms[i][j].disabled && 
                    forms[i][j].style.display != 'none') {
                forms[i][j].focus();
                return;
            }
        }
    }
}


/*
var fontSize = 100;

var incFont = function() {
    fontSize += 5;
    resizeFont();
}

var decFont = function() {
    fontSize -= 5;
    resizeFont();
}

var resizeFont = function() {
    __d.body.style.fontSize = fontSize + '%';
}
*/

listen = function(eventname, elem, func) {
    if (elem.addEventListener)
        elem.addEventListener(eventname, func, false);// W3C DOM
    else if (elem.attachEvent) {
        return elem.attachEvent("on" + eventname, func);
    }
    else throw 'Unable to add even listener';
}

function addToFavorites() {
    if (window.external && window.external.AddFavorite)
        window.external.AddFavorite(document.location, document.title);
    else
        alert("Pulsa en 'OK' y pulsa las teclas Ctrl-D");
    return false;
}

function emailUrl() {
    document.location = "mailto:?subject=He%20encontrado%20esta%20web%20y%20he%20pensado%20en%20ti&body=Entra%20en%20esta%20web%20" + document.location;
    return false;
}

listenElemByClass = function(evt, cls, fnc) {
    var a = getElementsByClassName(cls);
    for (var i in a)
        listen(evt, a[i], fnc);
}

clk = function(e) {
    if (!e) var e = window.event;
    var el = e.target || e.srcElement;
    k = "href";
    __n.lastUrl = el.getAttribute(k,2)?
        el.getAttribute(k,2):el.parentNode.getAttribute(k,2);
    if (__d.images)
        (new Image).src = "/_e?"+qry({act:"clk", url:get(ni+"lastUrl"),cx:get(ni+"cx"),cy:get(ni+"cy"),
            et:get("(new Date().getTime()-"+ni+"ds)/1000")});
    return false;
};

try {
    listen("load", window, function() {
        //resizeFont();
        statTracker();
        //formFocus();

        n = __d.getElementById("nitidum_text_controls");
        if (n)
            n.style.visibility = "";

        listenElemByClass("click", "doBookmark", addToFavorites);
        listenElemByClass("click", "emailUrl", emailUrl);

        try {
            uld = function() {
                if (bby) return;
                bby = true;
                var w;
                clearInterval(__n.tid);
                if (__w.XMLHttpRequest) {
                    // Mozilla, Safari, ...
                    w = new XMLHttpRequest();

                } else if (__w.ActiveXObject) {
                    // IE
                    try { w = new ActiveXObject("Msxml2.XMLHTTP");}
                    catch(e) {
                        try { w = new ActiveXObject("Microsoft.XMLHTTP");}
                        catch(f) {
                            error(f);
                            w = null;
                        }
                    }
                }
                w.open("POST", "/_e", false);
                w.setRequestHeader("Content-Type", 
                    "application/x-www-form-urlencoded");
                w.send(qry({act:"bby",tx:get(ni+"tx"),ty:get(ni+"ty"), cx:get(ni+"cx"),cy:get(ni+"cy"),
                    et:get("(new Date().getTime()-"+ni+"ds)/1000")}));
            }

            var items = document.getElementsByTagName("a");
            for (var i=0; i< items.length; i++)
                listen("mousedown", items[i], clk);

            _b = __d.body;
            listen("beforeunload", _b, uld);
            listen("beforeunload", __w, uld);
            listen("beforeunload", __d, uld);
            listen("unload", _b, uld);
            listen("unload", __w, uld);
            listen("unload", __d, uld);
        } catch(e) {
            alert(e)
        };
    } );
} catch (err) {
    (new Image).src = "/_e?"+qry({
        act: "err",
        error_name: err.name, error_message: err.message,
        error_line: err.lineNumber, error_file: err.fileName, commit: commit,
        dl: get(dc + "location.toString()"), sw: get(sc + "width"),
        sh: get(sc + "height"), scd: get(sc + "colorDepth"),
        dw: get(dc + "width"), dh: get(dc + "height"),
        je: navigator.javaEnabled(), nlang: get(nv + "language"),
        dcharset: Array(get(dc + "characterSet"), get(dc + "charset")),
        referrer: get(dc + "referrer"), flash: get("_uFlash"), 
        cookies_enabled: get(nv + "cookieEnabled"),
        tz:get("(new Date().getTimezoneOffset()/60)*(-1)")
    });
}
