


onerror=handleErr
function handleErr(msg,url,l)
{
txt="There was an javascript error on this page.\n\n";
txt+="Error: " + msg + "\n";
txt+="URL: " + url + "\n";
txt+="Line: " + l + "\n\n";
txt+="Click OK to continue.\n\n";
alert(txt);
return true
}



function rnd(length)
{
var number = parseInt(Math.random()*new Date().getTime());
if(length)
{
number = (''+number).substring(0,length);
}
return number;
}



function findNodeByClass(parentObj,paramName)
{
var elems = parentObj.getElementsByTagName('*');
for (var i=0, j=elems.length; i<j; i++)
{
var elem = elems[i];
if (elem.className && paramName == elem.className)
{
return elem;
}
}
return false;
}



function getElementsByTagAndClass(parentObj,tagName,className)
{
var result = new Array();
if(parentObj)
{
var elems = parentObj.getElementsByTagName(tagName);
for (var i=0, j=elems.length; i<j; i++)
{
if (elems[i].className && className == elems[i].className)
{
result.push(elems[i]);
}
}
}
return result;
}

function setSelect(id,value)
{
var select = document.getElementById(id);
for(var i = 0; i < select.options.length; i++)
{
select.options[i].selected = value;
}
}



function findNodeById(parentObj,paramName)
{
var elems = parentObj.getElementsByTagName('*');
for (var i=0, j=elems.length; i<j; i++)
{
var elem = elems[i];
if (elem.id && paramName == elem.id)
{
return elem;
}
}
return false;
}



function closePopUp()
{


if(window.opener)
{
window.close();
}
}




function resizePopup()
{
if(window.opener)
{
var body = (document.getElementsByTagName('body'))[0];
var doc = document.documentElement;
if(doc.clientHeight != body.offsetHeight)
{
window.resizeBy(0, body.offsetHeight - doc.clientHeight);
}
}
}





function inArray(array,value)
{
var i;
for (i=0; i < array.length; i++)
{

if (array[i] === value)
{
return true;
}
}
return false;
}
function isArray(obj)
{
return (typeof(obj) == 'object' && obj.constructor.toString().indexOf("Array") != -1);
}



String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,''); };



function removeClass(obj, className)
{
if (obj && obj.className)
{
obj.className = obj.className.replace(className, '').trim();
if(obj.className == '')
{
obj.removeAttribute('class');
}
}
};



function addClass(obj, className)
{
if(obj && obj.className.indexOf(className) == -1)
{
obj.className += ' ' + className;
}
};



var Events = function()
{
var ev = new Object();
var funcs = new Object();
var eventsList = new Array();
ev.add = function( obj, type, fn )
{

if (obj.addEventListener)
{
obj.addEventListener( type, fn, false );
addEvent(obj, type, fn);
}

else if (obj.attachEvent)
{
funcs[type+fn] = function(){ fn.apply(window.event.srcElement); };
obj.attachEvent( "on"+type, funcs[type+fn] );
addEvent(obj, type, funcs[type+fn]);
}
else
{
obj["on"+type] = obj["e"+type+fn];
}
};
ev.remove = function(obj, type, fn )
{

if (obj.removeEventListener)
{
obj.removeEventListener(type, fn, false );
}

else if (obj.detachEvent)
{
obj.detachEvent("on" + type, funcs[type+fn]);
funcs[type+fn] = null;
obj = null;
}
else
{
obj["on" + type] = null;
}
};
addEvent = function()
{
eventsList.push(arguments);
};
flush = function()
{
while(eventsList.length > 0)
{
var eventData = eventsList.pop();

if (eventData[0].removeEventListener)
{
eventData[0].removeEventListener(eventData[2], eventData[2], false );
}

else if (eventData[0].detachEvent)
{
eventData[0].detachEvent("on" + eventData[1], eventData[2]);
}
else
{
eventData[0]["on" + eventData[1]] = null;
}
}
};
ev.stop = function(e)
{
if ( document.captureEvents && e)
{
e.preventDefault();
}
else if ( window.event )
{
window.event.cancelBubble = true;
window.event.returnValue = false;
}
return false;
};

ev.add(window,'unload',flush);
return ev;
}();



var Drag = function()
{
var o = new Object();
o.attach = function(element,handle)
{
if( element )
{
if(!handle) handle = element;
Events.add(handle,'mousedown',new d(element).dragStart);
}
}
function d(obj)
{
obj.style.position = 'absolute';
var xOffset = 0;
var yOffset = 0;
var mouseMove = function(e)
{
obj.style.left = (Mouse.X(e) - xOffset)/10 + "em";
obj.style.top
= (Mouse.Y(e) - yOffset)/10 + "em";
Events.stop(e);
};
this.dragStart = function(e)
{
Events.add(document,'mouseup',dragStop);
Events.add(document,'mousemove',mouseMove);
xOffset = Mouse.X(e) - obj.offsetLeft;
yOffset = Mouse.Y(e) - obj.offsetTop;
Events.stop(e);
}
var dragStop = function(e)
{
Events.remove(document,'mouseup',dragStop);
Events.remove(document,'mousemove',mouseMove);
Events.stop(e);
}
}
return o;
}();



var Mouse = function()
{
var m = new Object();
m.isRightClick = function(e)
{
var rightclick;
if (!e) var e = window.event;
if (e.which) rightclick = (e.which == 3);
else if (e.button) rightclick = (e.button == 2);
return rightclick;
}
m.isLeftClick = function(e)
{
var leftclick;
if (!e) var e = window.event;
if (e.which) leftclick = (e.which == 1);
else if(e.button) leftclick = (e.button == 0 || e.button == 1);
return leftclick;
}
m.X = function(e)
{
var x = 0;
if(!e) var e = window.event;
if(e.pageX) x = e.pageX;
else if(e.clientX) x = e.clientX + document.documentElement.scrollLeft;
return x;
}
m.Y = function(e)
{
var y = 0;
if(!e) var e = window.event;
if(e.pageY) y = e.pageY;
else if(e.clientY) y = e.clientY + document.documentElement.scrollTop;
return y;
}
return m;
}();



var Cookie = function()
{
var c = new Object();
c.set = function(key, value, days, path, domain)
{
if(value == "")
{
days = -1;
}
value = encodeURIComponent(value);
value += "; path=" + ((path) ? path : "/");
if (domain) value += "; domain=" + domain;
if (days)
{
var date = new Date();
date.setTime(date.getTime() + (days * 86400000));
value += "; expires=" + date.toGMTString();
}
document.cookie = key + "=" + value;
}
c.get = function(key)
{
var value = document.cookie.match('(?:^|;)\\s*'+key+'=([^;]*)');
return (value) ? decodeURIComponent(value[1]) : false;
}
c.remove = function(key)
{
c.set(key,"",-1);
}
return c;
}();
