function getParentByClassName(element, className)
{
    var parent = element;

    if (className)
    {
        while (parent && parent.className != className)
        {
            parent = parent.parentNode;
        }
    }

    return parent;
}

function getFirstChildByClassRegex(element, tagName, classRegex, stopClassRegex)
{
    var match;
    var child = element.firstChild;

    while (child != null && (!child.className || !child.className.match(stopClassRegex)))
    {
        if (child.tagName && child.tagName == tagName && child.className && child.className.match(classRegex))
        {
            match = child;
            break;
        }
        else
        {
            match = getFirstChildByClassRegex(child, tagName, classRegex, stopClassRegex);

            if (match)
            {
                break;
            }
        }

        child = child.nextSibling;
    }

    return match;
}

function addEventToElement(target, eventType, func, useCapture)
{
    var result = false;

    if (target.addEventListener)
    {
        target.addEventListener(eventType, func, useCapture);
        result = true;
    }
    else if (target.attachEvent)
    {
        result = target.attachEvent("on" + eventType, func);
    }
    else
    {
        alert("Handler could not be attached");
    }

    return result;
}

function addEventToElements(targets, eventType, func, useCapture)
{
    var result = true;

    for (var i = 0; i < targets.length; i++)
    {
        result &= addEventToElement(targets[i], eventType, func, useCapture);
    }

    return result;
}

function removeEventFromElement(target, eventType, func, useCapture)
{
    var result = false;

    if (target.removeEventListener)
    {
        target.removeEventListener(eventType, func, useCapture);
        result = true;
    }
    else if (target.detachEvent)
    {
        result = target.detachEvent("on" + eventType, func);
    }
    else
    {
        alert("Handler could not be removed");
    }

    return result;
}

function removeEventFromElements(targets, eventType, func, useCapture)
{
    var result = true;

    for (var i = 0; i < targets.length; i++)
    {
        result &= removeEventFromElement(targets[i], eventType, func, useCapture);
    }

    return result;
}

function getEvent(event)
{
    if (!event)
    {
        var event = window.event;
    }

    return event;
}

function getEventSource(event)
{
    if (event.srcElement)
    {
        var source = event.srcElement;
    }
    else if (event.currentTarget)
    {
        var source = event.currentTarget;
    }
    else
    {
        alert("Event source not found!");
    }

    return source;
}

var console = new Console();

function Console()
{
    this.canvas = null;
    this.println = consolePrintln;
    this.show = consoleShow;
}

function consolePrintln(object)
{
    if (!this.canvas)
    {
        this.canvas = window.open("about:blank", "Console", "toolbar = no, width = 640, height = 480, directories = no, status = no, scrollbars = yes, resize = no, menubar = no");
    }

    this.canvas.document.write(object);
    this.canvas.document.write("<br/>");
}

function consoleShow(object)
{
    this.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");

    for (property in object)
    {
        this.println(property + " = " + eval("object." + property));
    }

    this.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
}

function centerDiv(DivRef){
		
	DivRef.style.display='block'; 
	var height = DivRef.offsetHeight;
	var width = DivRef.offsetWidth;
	if(width==0)
		width = document.documentElement.clientHeight/3;
	if(height==0)
		height = document.documentElement.clientWidth/3;
	
		DivRef.style.top = Math.round((document.documentElement.clientHeight/2)-(height/2))+'px';
	    DivRef.style.left = Math.round((document.documentElement.clientWidth/2)-(width/2)-30)+"px";
    
}

function backButtonOverride()
{
  window.history.forward(1);
}

function renderBreadcrumbs(arr){
	if(arr==undefined || arr.length==0)
		return;
	
	var obj = document.getElementById("breadcrumb");
	if(obj == undefined)
		return;
		
	var str="";
	for(var i=0; i<arr.length; i++){
		if(i%2==1){
			if(i!=arr.length-1)
				str+="<span>"+arr[i]+"</span></a>";	
			else
				str+="<span class=\"breadCurrentPage\">"+arr[i]+"</span>";	

			if (arr[i]=="Personal TV"){
				//str+="<span style=\"vertical-align:top;line-height:100%;font-size: 8px;\">TM</span>";
			}
			
			if ((arr[i].indexOf("personnalis") != -1) && (arr[i].indexOf("T") != -1)){
				//str+="<span style=\"vertical-align:top;line-height:100%;font-size: 8px;\">MC</span>";
			}
		}
		else { 
			if(i>0)
				str+="<span class=\"breadcrumbDivider\">|</span>";
			if(arr[i]!=undefined && arr[i]!="")
				str+="<a href=\"" +arr[i]+"\">";
		}
	}

	obj.innerHTML=str;	
	obj.style.display="block";
}

function isIE6(){
	if (typeof document.body.style.maxHeight != "undefined") 
		return false;
	return true;
}

function _getXPos(elt) {
	var xPos = 0;
	
	while (elt) {
		xPos += elt.offsetLeft;
		
		elt = elt.offsetParent;
	}

	return xPos;
}

function _getYPos(elt) {
	var yPos = 0;
	
	while (elt) {
		yPos += elt.offsetTop;
		
		elt = elt.offsetParent;
	}
	
	return yPos;
} 
 
function _getDimensions(element) {
    var display = element.style.display;
    if (display != 'none' && display != null) 
      return {width: element.offsetWidth, height: element.offsetHeight};

    // All *Width and *Height properties give 0 on elements with display none,
    // so enable the element temporarily
    var els = element.style;
    var originalVisibility = els.visibility;
    var originalPosition = els.position;
    var originalDisplay = els.display;
    els.visibility = 'hidden';
    els.position = 'absolute';
    els.display = 'block';
    var originalWidth = element.clientWidth;
    var originalHeight = element.clientHeight;
    els.display = originalDisplay;
    els.position = originalPosition;
    els.visibility = originalVisibility;
    return {width: originalWidth, height: originalHeight};
}


/*
 * Get the absolute [x, y] position of an element.
 */
function _getElementAbsolutePosition(elt) {
	var pos = {};
	
	pos.x = _getXPos(elt);
	pos.y = _getYPos(elt);
	
	return pos;
}
/*
 * See if two elements intersect with each other.
 */
function _doesIntersect(left, right) {
	var leftPos = _getElementAbsolutePosition(left);
	var leftDims = _getDimensions(left);
	
	var rightPos = _getElementAbsolutePosition(right);
	var rightDims = _getDimensions(right);

	var rx = rightPos.x;
	var lx = leftPos.x;
	var rw = rightDims.width;
	var lw = leftDims.width;
	var ret = false;
	if (rx <= (lx + lw) && (rx + rw) >= lx) {
		var ry = rightPos.y;
		var ly = leftPos.y;
		var rh = rightDims.height;
		var lh = leftDims.height;
		if (ry <= (ly + lh) && (ry + rh) >= ly) {
			ret = true;
		} else {
			ret = false;
		}
	} else {
		ret = false;
	}
	return ret;
}
/**
* Hides all drop down form select boxes on the screen so they do not appear above the mask layer.
* IE has a problem with wanted select form tags to always be the topmost z-index or layer
*/
function _hideSelectBoxes(msgObj) {
	for(var i = 0; i < document.forms.length; i++) {
		for(var e = 0; e < document.forms[i].length; e++){
			if(document.forms[i].elements[e].tagName == "SELECT") {
				var interSect = _doesIntersect(msgObj, document.forms[i].elements[e]);				
				if(interSect)
					 document.forms[i].elements[e].style.visibility="hidden";
			}
		}
	}
}

/**
* Makes all drop down form select boxes on the screen visible so they do not reappear after the dialog is closed.
* IE has a problem with wanted select form tags to always be the topmost z-index or layer
*/
function _displaySelectBoxes() {
	for(var i = 0; i < document.forms.length; i++) {
		for(var e = 0; e < document.forms[i].length; e++){
			if(document.forms[i].elements[e].tagName == "SELECT") {
				 document.forms[i].elements[e].style.visibility="visible";
			}
		}
	}
}
function closeAlert2(){
	if(isIE6())
		_displaySelectBoxes();
	var boxObj = document.getElementById("_alertBox");
	boxObj.style.display="none";
}

function alert2(msg){
	var msgObj = document.getElementById("_alertBoxMessage");
	var boxObj = document.getElementById("_alertBox");
	msgObj.innerHTML=msg;
	centerDiv(boxObj);
	scroll(0,0);

	if(isIE6())
		_hideSelectBoxes(boxObj);
}

function showLayerWindow(boxObj){
	centerDiv(boxObj);
	scroll(0,0);

	if(isIE6())
		_hideSelectBoxes(boxObj);
}
function hideLayerWindow(boxObj){
	if(isIE6())
		_displaySelectBoxes();
	boxObj.style.display="none";
}

function setPopupInd(val){
	document.getElementById("_NeedPopup").value=val;
}

function getPopupInd(){
	return document.getElementById("_NeedPopup").value;
}

function openOldSiteLink(url){
	if("true" == getPopupInd())
		window.open(url);
		//window.open(url,'win','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=800,height=635');
	else
		window.location.href = url;
}