
var bOnloadDone;
var aOnloadFkts = [];

function addOnloadHook (f) {
    aOnloadFkts[aOnloadFkts.length] = f;
}

function runOnloadHooks() {
    if (bOnloadDone || !(document.getElementById && document.getElementsByTagName )) return;
    for (var i=0; i < aOnloadFkts.length; i++) aOnloadFkts[i]();
    bOnloadDone = true;
}


function EvtFilter (nMillis, fOut) {
    this.nMillis_ = nMillis;
    this.serial_ = 0;
    this.fOut_ = fOut;
}

EvtFilter.prototype.push = function (oCtx) {
    this.serial_++;
    var oThis = this;
    var oSerial = this.serial_;
    window.setTimeout(
        function () {
            if (oSerial == oThis.serial_) oThis.fOut_(oCtx);
        }, this.nMillis_);
}

function findDomNode (oStart, sName) {
	if (oStart.nodeName.toLowerCase() == sName) return oStart;
	for (var i=0; i<oStart.childNodes.length; i++) {
		var oF = findDomNode (oStart.childNodes[i], sName);
		if (oF) return oF;
	}
	return null;
}

function findDomNodes (oStart, sName) {
	var aRes = new Array();
	if (oStart.nodeName.toLowerCase() == sName) aRes.push(oStart);
	for (var i=0; i<oStart.childNodes.length; i++) {
		aRes = aRes.concat(findDomNodes (oStart.childNodes[i], sName));
	}
	return aRes;
}

function findDomNodeParent (oStart, sName) {
    while (oStart != null) {
        if (oStart.nodeName.toLowerCase()==sName) return oStart;
        oStart = oStart.parentNode;
    }
    return null;
}

function submitAction (sForm, sClear, sIdHidden, sAction) {
	if (typeof window[sClear] == 'function') window[sClear]();
    document.getElementById(sIdHidden).value = sAction;
    if (document.forms[sForm].onsubmit) {document.forms[sForm].onsubmit();}
    document.forms[sForm].submit();
}

function bodyOffsetV (oEle) {
	if(oEle.nodeName.toLowerCase() == "body") return 0;
	var iOffset = oEle.offsetTop;
	if (oEle.offsetParent) iOffset += bodyOffsetV (oEle.offsetParent);
	return iOffset;
}
function bodyOffsetH (oEle) {
	if(oEle.nodeName.toLowerCase() == "body") return 0;
	var iOffset = oEle.offsetLeft;
	if (oEle.offsetParent) iOffset += bodyOffsetH (oEle.offsetParent);
	return iOffset;
}
function alignBottom (oE1, oE2, iDelta) {
	var iBottomE1 = bodyOffsetV (oE1) + oE1.offsetHeight;
	var iBottomE2 = bodyOffsetV (oE2) + oE2.offsetHeight;
	var iDiff = iBottomE2-iBottomE1;
	var iDel = !iDelta ? 0 : iDelta;
	var iH = metricsGetHeight(oE1) + iDiff + iDel;
	if (iH > 0) oE1.style.height = "" + iH + "px";
}
function stretchM2 (sEle, oH, oMul) {
	oEle = gid(sEle);
	var nH = 0;
	if (oEle.offsetHeight < oH) nH = oH*oMul; 
	oEle.style.height = nH;
}
function metricsGetHeight (oEle) {
    return oEle.clientHeight - metricsGetPadding(oEle,"Top") - metricsGetPadding(oEle,"Bottom");
}
function metricsGetWidth (oEle) {
	return oEle.clientWidth - metricsGetPadding(oEle,"Left") - metricsGetPadding(oEle,"Right");
}
function metricsGetPadding (oEle, sDir) {
	sP = eval("oEle.style.padding" + sDir);
	iP = parseInt(sP);
	if (isNaN(iP)) return 0;
	if (sP.indexOf("px") == -1) return 0;
	return iP;
}

function addJvListener (oEle, sEventName, fHandler, bCapture) {
	var fH = function (oEvent) {
		var oEvt = oEvent;
		if (window.event) oEvt = window.event;
		fHandler (oEvt);
	};
	if (oEle.addEventListener) {
		oEle.addEventListener (sEventName, fH, bCapture);
	} else {
		oEle.attachEvent ("on"+sEventName, fH);
	}
}

function gid (sEle) {
	return document.getElementById(sEle);
}

function $(ele) {
	if (typeof ele == "string") return document.getElementById(ele);
	else return ele;
}

function VoteC (sDiv,oTxt,oSubject) {
	var oDiv = gid(sDiv);
	this.oSub_ = oSubject;
	if(!oDiv)return;
	var od1 = document.createElement("div");
	oDiv.appendChild(od1);
	od1.innerHTML="<table cellpadding='0' cellspacing='0' style='width:100%'><tr><td style='text-align:right'></td></tr></table>";
	var od1t = od1.getElementsByTagName("td")[0];
	var oSp = document.createElement("span");
	oSp.style.verticalAlign = "middle";
	oSp.style.fontSize = "10px";
	oSp.innerHTML = oTxt["vote"];
	od1t.appendChild(oSp);
	function cImg(sIcon) {
		var oImg = document.createElement("img");
		oImg.src = "/jv/ext/images/smilies/" + sIcon + ".gif";
		oImg.style.verticalAlign = "middle";
		oImg.title = oTxt[sIcon];
		return oImg;
	}
	var arrImg=[];
	arrImg[0]=cImg('happy');
	arrImg[1]=cImg('neutral');
	arrImg[2]=cImg('sad');
	for (var i=0;i<arrImg.length;i++) {
		var m = arrImg[i];
		m.voting = 1-i;
		m.votec = this;
		m.style.cursor="pointer";
		m.onclick = function () {
			od1.style.display = "none";
			od2.style.display = "";
			window.setTimeout (this.votec.hide,1700);
			this.votec.vote(this.voting);
		}
		m.onmouseover = function () { this.style.backgroundColor = '#d2d2b4'; }
		m.onmouseout = function () { this.style.backgroundColor = ''; }
		od1t.appendChild(m);
	}
	

	var od2 = document.createElement("div");
	oDiv.appendChild(od2);
	od2.style.textAlign = "right";
	od2.innerHTML = oTxt["thanks"];
	od2.style.display = "none";
	this.vote = function (voting) {
		DWREngine.setErrorHandler(null);
		DWREngine.setWarningHandler(null);
		DWREngine._execute('/jv/x/dwr', 'DwrFac', 'voteForm', this.oSub_, voting, function(){});
	}
	this.hide = function () {
		oDiv.style.display = "none";
	}
}

function jvlion (o2, o1) {
	var r = o1.replace(/_/,".")+String.fromCharCode(8*8)+o2.replace(/_/,".");
	var t = "<a href='"+"m"+"a"+"ilto"+String.fromCharCode(58)+r+"'>"+r+"</a>";
	document.write (t);
}

function jvlion2 (o2, o1) {
	var r = o1+String.fromCharCode(8*8)+o2;
	document.write (r);
}

function ofscte (arr) {
	var s = arr[0];	var a = arr[1];	var b = arr[2];	var c = arr[3];	var r = "";
	for (var i=4; i<arr.length; i++) {
		s = (s*a+b)%(a>=100?c:b);
		r += String.fromCharCode(c>=30?(arr[i]+70-s):(arr[i]*s-b));
	}
    return r;
}









