var undefined;



Node = new Object();



Node.ELEMENT_NODE					= 1;

Node.ATTRIBUTE_NODE					= 2;

Node.TEXT_NODE						= 3;

Node.CDATA_SECTION_NODE				= 4;

Node.ENTITY_REFERENCE_NODE		  	= 5;

Node.ENTITY_NODE				  	= 6;

Node.PROCESSING_INSTRUCTION_NODE  	= 7;

Node.COMMENT_NODE				  	= 8;

Node.DOCUMENT_NODE					= 9;

Node.DOCUMENT_TYPE_NODE			  	= 10;

Node.DOCUMENT_FRAGMENT_NODE		  	= 11;

Node.NOTATION_NODE				  	= 12;



var EMPTY_STRING= "";

var SPACE 		= " ";

var STAR		= "*";



var OBJECT		= "object";

var ARRAY		= "array";

var STRING		= "string";

var NUMBER		= "number";

var BOOLEAN		= "boolean";



var MOUSE_DOWN	= "mousedown";

var MOUSE_UP	= "mouseup";

var CLICK		= "click";

var DBL_CLICK	= "dblclick";

var MOUSE_MOVE	= "mousemove";

var MOUSE_OVER	= "mouseover";

var MOUSE_ENTER = "mouseenter";

var MOUSE_OUT	= "mouseout";

var KEY_DOWN	= "keydown";

var KEY_UP		= "keyup";

var KEY_PRESS	= "keypress";

var UP			= "up";

var DOWN		= "down";

var LEFT		= "left";

var RIGHT		= "right";



var PX			= "px";



var HTML		= "html";

var BODY		= "body";

var DIV			= "div";

var SPAN		= "span";

var H1			= "h1";

var H2			= "h2";

var H3			= "h3";

var H4			= "h4";

var H5			= "h5";

var H6			= "h6";

var P			= "p";

var INPUT		= "input";

var SELECT		= "select";

var TEXTAREA	= "textarea";

var UL			= "ul";

var LI			= "li";

var A			= "a";

var TABLE		= "table";

var THEAD		= "thead";

var TBODY		= "tbody";

var TR			= "tr";

var TD			= "td";



var NONE		= "none";

var BLOCK		= "block";



var ACTIVE		= "active";

var HOVER		= "hover";

var FOCUSED		= "focused";

var UNFOCUSED	= "unfocused";





/**

 *	Array convenience method to check for membership.

 *

 *	@param object element

 *	@returns boolean

 */




function getURL(url) {

	window.location = url;

}



function show(target) {

	target.style.display = BLOCK;

}



function hide(target) {

	target.style.display = NONE;

}



function toggle(target) {

	if (isShowing(target)) {

		hide(target);

	} else {

		show(target);

	}

}



function isShowing(target) {

	return !(NONE == target.style.display);

}



function setVisible(target,visible) {

	if (visible) {

		target.style.visibility = "visible";

	} else {

		target.style.visibility = "hidden";

	}

}



function position(target,x,y) {

	setLocation(target,x,y);

}



function setLocation(target,x,y) {

	target.style.left	= x + PX;

	target.style.top	= y + PX;

}



function getX(target) {

	return parseInt(target.style.left);

}



function setX(target,x) {

	target.style.left = x+PX;

}



function getY(target) {

	return parseInt(target.style.top);

}



function setY(target,y) {

	target.style.top = y+PX;

}



function getWidth(target) {

	return parseInt(target.style.width);

}



function setWidth(target,w) {

	target.style.width = w + PX;

}



function getHeight(target) {

	return parseInt(target.style.height);

}



function setHeight(target,h) {

	target.style.height = h + PX;

}



function getBackgroundPositionX(n) {

	var bgPos = n.style.backgroundPosition;

	bgPos = bgPos.replace(/(\d+)/i,"$1");

	return parseInt(bgPos);

}



function getBackgroundPositionY(n) {

	var bgPos = n.style.backgroundPosition;

	bgPos = bgPos.replace(/\d+px\s+(\d+)/i,"$1");

	return parseInt(bgPos);

}



function setBackgroundPosition(n,x,y) {

	n.style.backgroundPosition = x + PX + SPACE + y + PX;

}



function remove(target) {

	target.parentNode.removeChild(target);

}



function add(target) {

	document.body.appendChild(target);

}



function trim(s) {

	s = s.replace(/^\s*/g,EMPTY_STRING).replace(/\s*$/g,EMPTY_STRING);

	return s;

}



function setOpacity(target,percent) {

	// e.g.: percent == 40	

	if (isType(target.style.opacity,STRING)) {

		target.style.opacity = EMPTY_STRING + (percent/100);

	} else if (isType(target.style.mozOpacity,STRING)) {

		target.style.mozOpacity = EMPTY_STRING + (percent/100);

	}

}



function getElementsWithClassName(root,className) {

	var tags = root.getElementsByTagName( STAR );

	var resultSet = [];

	for (var i = 0; i < tags.length; i++) {

		if (isClass(tags[i],TAB_CLASS_NAME)) {

			resultSet[resultSet.length] = tags[i];

		}

	}

	return resultSet;

}



function getFirstChildByTagName(target,tagName) {

	var cn = target.childNodes;

	tagName = tagName.toLowerCase();

	for (var i = 0; i < cn.length; i++) {

		if (cn[i].nodeName.toLowerCase() == tagName) {

			return cn[i];

		}

	}

	return null;

}



function getLastChildByTagName(target,tagName) {

	var cn = target.childNodes;

	tagName = tagName.toLowerCase();

	for (var i = cn.length-1; i >= 0; i--) {

		if (cn[i].nodeName.toLowerCase() == tagName) {

			return cn[i];

		}

	}

	return null;

}



function getDescendantsByTagAndClassName(root,tagName,className) {

	var resultSet = [];

	var elems = root.getElementsByTagName(tagName.toLowerCase());

	for (var i = 0; i < elems.length; i++) {

		if (isClass(elems[i],className)) {

			resultSet[resultSet.length] = elems[i];

		}

	}

	return resultSet;

}



function getDescendantsByAttributeValue(root,name,value) {

	var resultSet = [];

	var elems = root.getElementsByTagName( STAR );

	for (var i = 0; i < elems.length; i++) {

		if (value == elems[i].getAttribute(name)) {

			resultSet[resultSet.length] = elems[i];

		}

	}

	return resultSet;

}



function getDescendantsByTagNameAndAttributeValue(root,tagName,name,value) {

	var resultSet = [];

	var elems = root.getElementsByTagName( tagName );

	for (var i = 0; i < elems.length; i++) {

		if (value == elems[i].getAttribute(name)) {

			resultSet[resultSet.length] = elems[i];

		}

	}

	return resultSet;

}



function getDescendantsByTagNameExceptClassName(root,tagName,className) {

	var resultSet = [];

	var elems = root.getElementsByTagName(tagName.toLowerCase());

	for (var i = 0; i < elems.length; i++) {

		if (isClass(elems[i],className)) {

			continue;

		} else {

			resultSet[resultSet.length] = elems[i];

		}

	}

	return resultSet;

}



function getChildrenByTagAndClassName(root,tagName,className) {

	var resultSet = [];

	var elems = root.childNodes;

	for (var i = 0; i < elems.length; i++) {

		if (elems[i].nodeType != 1)

			continue;

		if (isClass(elems[i],className) && isNodeName(elems[i],tagName)) {

			resultSet[resultSet.length] = elems[i];

		}

	}

	return resultSet;

}



function isNodeName(target,tagName) {

	tagName = tagName.toLowerCase();

	return target.nodeName.toLowerCase() == tagName;

}



function isType(target,type) {

	return typeof target == type;

}



function isNodeType(target,nodeType) {

	return target.nodeType == nodeType;

}



function isId(target,id) {

	if (isType(id,STRING)) {

		return target.id == id;

	} else if (isType(id,OBJECT)) {

		for (var i = 0; i < id.length; i++) {

			if (target.id == id[i]) {

				return true;

			}

		}

	}

	return false;

}



function isClass(target,className) {

	if (!target.className)

		return false;

	if (isType(className,STRING)) {

		return target.className.indexOf(className) > -1;

	} else if (isType(className,OBJECT)) {

		for (var i = 0; i < className.length; i++) {

			if (target.className.indexOf(className[i]) > -1) {

				return true;

			}

		}

	}

	return false;

}



function setClassAsHover(target) {

	removeClass(target,ACTIVE);

	addClass(target,HOVER);

	

}



function setClassAsActive(target) {

	removeClass(target,HOVER);

	addClass(target,ACTIVE);

}



function setClassAsNormal(target) {

	removeClass(target,HOVER);

	removeClass(target,ACTIVE);

}



function setClassAsFocused(target) {

	removeClass(target,UNFOCUSED);

	addClass(target,FOCUSED);

}



function setClassAsUnFocused(target) {

	removeClass(target,FOCUSED);

	addClass(target,UNFOCUSED);

}





function addClass(target,k) {

	var cn = target.className;

	if (cn && cn.indexOf(k) > -1) {

		return;

	}

	if (cn && cn.length > 0) {

		k = SPACE + k;

		cn += k;

	} else {

		cn = k;

	}

	target.className = cn;

}



function removeAllClasses(target) {

	target.className = "";

}



function removeClass(target,k) {

	var cn = target.className;

	if (!cn) {

		return;

	}

	//cn = cn.replace(/^\s/g,EMPTY_STRING).replace(/\s$/g,EMPTY_STRING);

	cn = trim(cn);

	var index;

	if ((index = cn.indexOf(k)) > -1) {

		cn = cn.substring(0,index)+cn.substring(index+k.length);

	}

	target.className = cn;

}



function toggleClass(target,k) {

	if (isClass(target,k)) {

		removeClass(target,k);

	} else {

		addClass(target,k);

	}	

}



function findAncestorWithClassName(target,className) {

	var parent = target;

	while (parent = parent.parentNode) {

		if (isClass(parent,className)) {

			return parent;

		}

	}

	return null;

}



function findAncestorWithTagName(target,tagName) {

	var parent = target;

	while (parent = parent.parentNode) {

		if (isNodeName(parent,tagName)) {

			return parent;

		}

	}

	return null;

}



function findAncestorOrSelfWithTagName(target,tagName) {

	if (isNodeName(target,tagName))

		return target;

	var parent = target;

	while (parent = parent.parentNode) {

		if (isNodeName(parent,tagName)) {

			return parent;

		}

	}

	return null;

}



function findAncestorOrSelfByNodeType(target,nodeType) {

	if (isNodeType(target,nodeType))

		return target;

	var parent = target;

	while (parent = parent.parentNode) {

		if (isNodeType(parent,nodeType)) {

			return parent;

		}

	}

	return null;

}



function findAncestorOrSelfWithClassName(target,className) {

	if (isClass(target,className))

		return target;

	var parent = target;

	while (parent = parent.parentNode) {

		if (isClass(parent,className)) {

			return parent;

		}

	}

	return null;

}



function findPreviousSiblingByTagName(target,tagName) {

	var sibling = target;

	tagName = tagName.toLowerCase();

	while (sibling = sibling.previousSibling) {

		if (isNodeName(sibling,tagName)) {

			return sibling;

		}

	}

	return null;

}



function findNextSiblingByTagName(target,tagName) {

	var sibling = target;

	tagName = tagName.toLowerCase();

	while (sibling = sibling.nextSibling) {

		if (isNodeName(sibling,tagName)) {

			return sibling;

		}

	}

	return null;

}



function findAncestorWithId(target,id) {

	var parent = target;

	while (parent = parent.parentNode) {

		if (parent.id.indexOf(id) > -1) {

			return parent;

		}

	}

	return null;

}



function findAncestorWithTagName(target,tagName) {

	var parent = target;

	while (parent = parent.parentNode) {

		if (isNodeName(parent,tagName)) {

			return parent;

		}

	}

	return null;

}



function getActualX(n) {

	var docEl = document.documentElement;

	var body  = document.body;

	//alert(n.naturalHeight);

}



function getActualY(n) {

	var docEl = document.documentElement;

	var body  = document.body;



}



function getScrollX() {

	var docEl = document.documentElement;

	var body  = document.body;

	return (window.scrollX)	  ? window.scrollX :

		   (docEl.scrollLeft) ? docEl.scrollLeft :

		   (body.scrollLeft)  ? document.body.scrollLeft : 0;

}

	

function getScrollY() {

	var docEl = document.documentElement;

	var body  = document.body;

	return (window.scrollY)	 ? window.scrollY :

		   (docEl.scrollTop) ? docEl.scrollTop :

		   (body.scrollTop)	 ? body.scrollTop : 0;

}



function getViewportWidth() {

	var docEl = document.documentElement;

	var body  = document.body;

	return (window.innerWidth) ? window.innerWidth : 

		   (docEl.clientWidth) ? docEl.clientWidth : 

		   (body.clientWidth)  ? body.clientWidth : 0;

}

	

function getViewportHeight() {	

	var docEl = document.documentElement;

	var body  = document.body;

	return (window.innerHeight) ? window.innerHeight :

		   (docEl.clientHeight) ? docEl.clientHeight :

		   (body.clientHeight)	? body.clientHeight : 0;	

}



function getScreenX() {

	return window.screenX;

}



function getScreenY() {

	return window.screenY;

}



function getScreenWidth() {

	return screen.width;

}



function getScreenHeight() {

	return screen.height;

}



function getBrowserWidth() {

	return window.outerWidth;

}



function getBrowserHeight() {

	return window.outerHeight;

}



function getOffsetLeft(n) {

	var result = n.offsetLeft;

	for (var parent = n; parent = parent.offsetParent; parent != null) {

		result += parent.offsetLeft;

	}

	return result;

}



function getOffsetTop(n) {

	var result = n.offsetTop;

	for (var parent = n; parent = parent.offsetParent; parent != null) {

		result += parent.offsetTop;

	}

	return result;

}



function var_dump(n) {

	document.write("<style type=\"text/css\"> " +

		"body { font:10px/1.3 \"Lucida Grande\" } " +

		"</style>");

	for (var p in n) {

		document.write("<b>"+p+"</b>"+

			"<span style=\"color:red;\"> = </span>"+n[p]+"<br>");

	}

}



var MAC		= "Mac";

var WIN		= "Win";

var OPERA	= "Opera";

var CAMINO	= "Camino";

var WEB_KIT = "AppleWebKit";

var GECKO	= "Gecko";

var MSIE	= "MSIE";

var MSIE_50 = MSIE+" 5.0";

var MSIE_55 = MSIE+" 5.5";

var MSIE_6	= MSIE+" 6";



var isMac,isWin,isOpera,isCamino,isSafari,isGecko,isIE5Mac,isIEWin,isIE50Win,

		isIE55Win,isIE6Win;



function UADetect() {

	var UA = navigator.userAgent;

	//document.write(UA);

	if (UA.indexOf(MAC) != -1)

		isMac = true;

	else if (UA.indexOf(WIN) != -1)

		isWin = true;

	

	if (UA.indexOf(OPERA) != -1)

		isOpera = true;

	else if (UA.indexOf(CAMINO) != -1)

		isCamino = true;

	else if (UA.indexOf(WEB_KIT) != -1)

		isSafari = true;

	else if (UA.indexOf(GECKO) != -1)

		isGecko = true;

	else if (isMac && UA.indexOf(MSIE) != -1)

		isIE5Mac = true;

	else if (isWin && UA.indexOf(MSIE) != -1 && !isOpera) {

		isIEWin = true;

		if (UA.indexOf(MSIE_50) != -1)

			isIE50Win = true;

		else if (UA.indexOf(MSIE_55) != -1)

			isIE55Win = true;

		else  if (UA.indexOf(MSIE_6) != -1)

			isIE6Win = true;

	}

}



function UAWarning() {



	if (isIEWin || isGecko) {

			

		return;

	}

	

	var c = new Cookie("redvoip.ua.warning","true");

	

	if (Cookie.pageHasCookieWithNameAndValue(c)) {

			

		return;

	}

	

	Cookie.set(c);

}



UADetect();

UAWarning();



/**

 *	@param Event evt

 *	@param string msg

 *	@return void

 */

function confirmAction(evt,msg) {

	evt = new Evt(evt,true);

	if (!confirm(msg)) {

		evt.cancel();

	}

}



function closePopupRefresh(URL) {

	window.close();

	window.opener.location.href = URL;

}