//-----------------------------------------------------------------------------
// Check browser and OS version.
//-----------------------------------------------------------------------------

function BrowserCheck() {
  var agent = navigator.userAgent.toLowerCase();
  this.agent = agent;
  this.major = parseInt(navigator.appVersion);
  this.minor = parseFloat(navigator.appVersion);
  this.ns = ((agent.indexOf('mozilla')!=-1) && ((agent.indexOf('spoofer')==-1) && (agent.indexOf('compatible') == -1)));
  this.ns2 = (this.ns && (this.major == 3));
  this.ns3 = (this.ns && (this.major == 3));
  this.ns4b = (this.ns && (this.minor < 4.04));
  this.ns4 = (this.ns && (this.major >= 4));
  if (!document.all && !document.layers && document.getElementById){
	  this.ns6 = true;
  }else{
	  this.ns6 = false;
  }
  this.ns4up = ((this.ns && (this.major >= 4)) || this.ns6);
  this.ns601 = (this.ns6 && agent.indexOf('netscape6/6.01') != -1);
  this.ns610 = (this.ns6 && agent.indexOf('netscape6/6.1') != -1);
  this.ns6up = this.ns6;
  this.ie = (agent.indexOf("msie") != -1);
  this.ie3 = (this.ie && (this.major == 2));
  this.ie4 = (this.ie && (this.major == 4));
  this.ie5 = (agent.indexOf('msie 5') != -1);	
  this.ie55 = (agent.indexOf('msie 5.5') != -1);	
  this.ie6 = (agent.indexOf('msie 6') != -1);	
  this.ie4up = (this.ie && (this.major >= 4));
  this.ie5up = (parseInt(agent.substr(agent.indexOf('msie ') + 5, 1)) >= 5);
  this.op3 = (agent.indexOf("opera") != -1);
  this.win = (agent.indexOf("win")!=-1);
  this.winnt = (agent.indexOf("winnt")!=-1 || agent.indexOf("windows nt")!=-1);
  this.mac = (agent.indexOf("mac")!=-1);
  this.unix = (agent.indexOf("x11")!=-1);
}

//-----------------------------------------------------------------------------
// global variables definition.
//-----------------------------------------------------------------------------

var objBrowser;

var arrDhtmlNamedObjects = new Array();
var arrLoadedPage = new Array();
var arrCreatedLayer = new Array();
var arrMovingLayer = new Array();
var arrPoolMovingLayer = new Array();
var arrDraggableLayer = new Array();
var strFrameName = '';

var blnInitialized = false;
//-----------------------------------------------------------------------------
// Initialisation functions.
//-----------------------------------------------------------------------------

function typeDhtmlNamedObject(lngCoordX, lngCoordY){
	this.posX = lngCoordX;
	this.posY = lngCoordY;
}

function getDhtmlNamedObject(strDhtmlNamedObject){
	if ((objBrowser.ie4up && objBrowser.mac) || objBrowser.ns6up){
		if (arrDhtmlNamedObjects['\'' + strDhtmlNamedObject + '\'']){
			return arrDhtmlNamedObjects['\'' + strDhtmlNamedObject + '\''];
		}else{
			return new typeDhtmlNamedObject(null, null);
		}	
	}else{
		return new typeDhtmlNamedObject(null, null);
	}	
}

//-----------------------------------------------------------------------------
// Init this library.
//-----------------------------------------------------------------------------
function initLibrary(jsStrFrame){
	var jsStrFrameWithDot = '';
	if (!blnInitialized){
		objBrowser = new BrowserCheck();
		arrDhtmlNamedObjects = new Array();
		blnInitialized = true;
	}
	if (jsStrFrame && jsStrFrame != ''){
		if (jsStrFrame.indexOf(".") < 0){
			jsStrFrame = getCompleteFrameName(null, jsStrFrame);
		}
		jsStrFrameWithDot = jsStrFrame + '.';
	}
	if ((objBrowser.ns6up || objBrowser.ie5up) && !objBrowser.mac){
		var arrAcceptedTag = new Array('DIV','SPAN','IMG','TABLE','TR','TD','LI','UL','INPUT','SELECT');
		for (var lngI=0;lngI<arrAcceptedTag.length;lngI++){
			for (var lngJ=0;lngJ<eval(jsStrFrameWithDot + "document.body.getElementsByTagName(arrAcceptedTag[lngI])").length;lngJ++){
				if (eval(jsStrFrameWithDot + "document.body.getElementsByTagName(arrAcceptedTag[lngI])")[lngJ].id != ''){
					//alert(eval(jsStrFrameWithDot + "document.body.getElementsByTagName(arrAcceptedTag[lngI])")[lngJ].id + ', left= ' + getLeft(eval(jsStrFrameWithDot + "document.body.getElementsByTagName(arrAcceptedTag[lngI])")[lngJ]) + ', top= ' + getTop(eval(jsStrFrameWithDot + "document.body.getElementsByTagName(arrAcceptedTag[lngI])")[lngJ])))
					arrDhtmlNamedObjects['\'' + eval(jsStrFrameWithDot + "document.body.getElementsByTagName(arrAcceptedTag[lngI])")[lngJ].id + '\''] = new typeDhtmlNamedObject(getLeft(eval(jsStrFrameWithDot + "document.body.getElementsByTagName(arrAcceptedTag[lngI])")[lngJ]), getTop(eval(jsStrFrameWithDot + "document.body.getElementsByTagName(arrAcceptedTag[lngI])")[lngJ]));
				}
			}
		}
	}else if ((objBrowser.ie4up && objBrowser.mac) ||(objBrowser.ie4up && objBrowser.win)){
		for (var lngI=0;lngI<eval(jsStrFrameWithDot + "document.all").length;lngI++){
			if (eval(jsStrFrameWithDot + "document.all")[lngI].id != ''){
				arrDhtmlNamedObjects['\'' + eval(jsStrFrameWithDot + "document.all")[lngI].name + '\''] = new typeDhtmlNamedObject(getLeft(eval(jsStrFrameWithDot + "document.all")[lngI]), getTop(eval(jsStrFrameWithDot + "document.all")[lngI]));
			}
		}
	}
}

//-----------------------------------------------------------------------------
// getElement.
//-----------------------------------------------------------------------------

function getElement(jsStrFrame, jsStrLayerName){
	var objElement = null;
	if(blnInitialized){
		var strObjElement = '';
		var jsStrFrameWithDot = '';
		var jsStrCompleteFrameLocation = '';
		if (jsStrFrame && jsStrFrame != ''){
			if (jsStrFrame.indexOf(".") < 0){
				jsStrCompleteFrameLocation = getCompleteFrameName(null, jsStrFrame);
			}else{
				jsStrCompleteFrameLocation = jsStrFrame;
			}
			jsStrFrameWithDot = jsStrCompleteFrameLocation + '.';
		}
		if (objBrowser.ns6up){
			if (getElement.arguments[getElement.arguments.length-1].toUpperCase() == 'IMAGE'){
				objElement = eval(jsStrFrameWithDot + 'document.images["' + getElement.arguments[getElement.arguments.length-2] + '"]');
			}else if (getElement.arguments[getElement.arguments.length-1].toUpperCase() == 'FORM'){
				objElement = eval(jsStrFrameWithDot + 'document.forms["' + getElement.arguments[getElement.arguments.length-2] + '"]');
			}else if (getElement.arguments[getElement.arguments.length-1].toUpperCase() == 'DOCUMENT'){
				objElement = eval(jsStrFrameWithDot + 'document.getElementById("' + getElement.arguments[getElement.arguments.length-2] + '").document');
			}else{
				objElement = eval(jsStrFrameWithDot + 'document.getElementById("' + getElement.arguments[getElement.arguments.length-2] + '")');
			}
			if (objElement){
				objElement.ElementName = getElement.arguments[getElement.arguments.length-2];
				objElement.completeElementName = jsStrFrameWithDot + 'document.getElementById("' + getElement.arguments[getElement.arguments.length-2] + '")';
				objElement.completeFrameLocation = jsStrCompleteFrameLocation;
			}
		}else if (objBrowser.ns4up) {
			if (getElement.arguments.length == 2){
				objElement = eval(jsStrFrameWithDot + 'document.layers["' + jsStrLayerName + '"]');	
			}else if (getElement.arguments.length == 3 && getElement.arguments[getElement.arguments.length-1].toUpperCase() == 'DOCUMENT') {
				objElement = eval(jsStrFrameWithDot + 'document.layers["' + jsStrLayerName + '"].document');
			}else if (getElement.arguments.length == 3 && getElement.arguments[getElement.arguments.length-1].toUpperCase() == 'IMAGE') {
				objElement = eval(jsStrFrameWithDot + 'document.images["' + jsStrLayerName + '"]');	
			}else if (getElement.arguments.length>=3){
				if (arrCreatedLayer[getElement.arguments[1]]){
					strObjElement = jsStrFrameWithDot + 'document.layers["' + arrCreatedLayer[getElement.arguments[1]] + '"]';
				}else{
					strObjElement = jsStrFrameWithDot + 'document.layers["' + getElement.arguments[1] + '"]';
				}
				for (var i=2;i<getElement.arguments.length-2;i++) {
					if ((getElement.arguments[i].toUpperCase() != 'DOCUMENT') && (getElement.arguments[i].toUpperCase() != 'IMAGE') && (getElement.arguments[i].toUpperCase() != 'FORM')) {
						if (arrCreatedLayer[getElement.arguments[i]]){
							strObjElement += '.document.layers["' + arrCreatedLayer[getElement.arguments[i]] + '"]';
						}else{
							strObjElement += '.document.layers["' + getElement.arguments[i] + '"]';
						}
					}
				}
				if (getElement.arguments[getElement.arguments.length-1].toUpperCase() == 'IMAGE'){
					strObjElement += '.document.images["' + getElement.arguments[getElement.arguments.length-2] + '"]';
				}else if (getElement.arguments[getElement.arguments.length-1].toUpperCase() == 'FORM'){
					strObjElement += '.document.forms["' + getElement.arguments[getElement.arguments.length-2] + '"]';
				}else{
					if (getElement.arguments.length>=4){
						if (arrCreatedLayer[getElement.arguments[getElement.arguments.length-2]]){
							strObjElement += '.document.layers["' + arrCreatedLayer[getElement.arguments[getElement.arguments.length-2]] + '"]';
						}else{
							strObjElement += '.document.layers["' + getElement.arguments[getElement.arguments.length-2] + '"]';
						}
					}
					if (getElement.arguments[getElement.arguments.length-1].toUpperCase() == 'DOCUMENT'){
						strObjElement += '.document';
					}
				}
				objElement = eval(strObjElement);
				if (objElement){
					objElement.ElementName = getElement.arguments[getElement.arguments.length-2];
					objElement.completeElementName = strObjElement;
					objElement.completeFrameLocation = jsStrCompleteFrameLocation;
				}
			}else{
				objElement = null;
			}
		}else if (objBrowser.ie4up){
			objElement = eval(jsStrFrameWithDot + 'document.all.' + getElement.arguments[getElement.arguments.length-2]);	
			if (objElement){
				objElement.ElementName = getElement.arguments[getElement.arguments.length-2];
				objElement.completeElementName = jsStrFrameWithDot + 'document.all.' + getElement.arguments[getElement.arguments.length-2];
				objElement.completeFrameLocation = jsStrCompleteFrameLocation;
			}
		}
	}
	return objElement;
}

//-----------------------------------------------------------------------------
// Layer create and destroy.
//-----------------------------------------------------------------------------

function createLayer(strFrame, objLayer, strNewLayerName, lngLeftPos, lngTopPos, lngWidth, lngHeight, strContent, strBGColor, blnVisibility, lngZIndex) {
	if ((objBrowser.ie4up || objBrowser.ns6up) && !getElement('', strNewLayerName, 'LAYER')) {
		//warning, with ns6, when you create a layer in the body, there are some error while the browser
		//refreshes it self.
		var strLayer = '\n<div id="' + strNewLayerName + '" name="' + strNewLayerName + '" class="layerwrite" style="position:absolute; left:' + lngLeftPos + 'px; top:' + lngTopPos + 'px; width:' + lngWidth + 'px; ';
		if (lngHeight != null){
			strLayer += 'height:' + lngHeight + 'px; ';
			strLayer += 'clip:rect(0, ' + lngWidth + ', ' + lngHeight + ', 0); ';
		}
		if (strBGColor != null && strBGColor != ''){
			strLayer += '; background-color:' + strBGColor + '; ';
		}
		if (lngZIndex != null){
			strLayer += 'z-index:' + lngZIndex + '; ';
		}
		if (blnVisibility){
			strLayer += 'visibility: visible; ';
		}else{
			strLayer += 'visibility: hidden; ';
		}
		strLayer += '">' + ((strContent) ? strContent : '') + '</div>';
		if (objLayer) {
			clipLayer(objLayer, 0, 0, getClipWidth(objLayer), getClipHeight(objLayer));
			if (objBrowser.ie4up){
				if (objBrowser.ie4 && !objBrowser.ie5 && objBrowser.mac){
					var tmpOldContent = objLayer.innerHTML;
					objLayer.insertAdjacentHTML("afterBegin", strLayer + tmpOldContent);
				}else if (objBrowser.ie5 && objBrowser.mac){
					objLayer.innerHTML += strLayer;
				}else{
					objLayer.insertAdjacentHTML("beforeEnd", strLayer);
				}
			}else{
				//for ns6up
				objLayer.innerHTML += strLayer;
			}
		}else{
			if (strFrame && strFrame != ''){
				strFrame = strFrame + '.';
			}else{
				strFrame = '';
			}
			if (objBrowser.ie4up){
				if (objBrowser.ie4 && !objBrowser.ie5 && objBrowser.mac){
					eval(strFrame + 'document.body').insertAdjacentHTML("beforeBegin", strLayer);
				}else{
					eval(strFrame + 'document.body').insertAdjacentHTML("beforeEnd", strLayer);
				}
			}else{
				//for ns6up
				eval(strFrame + 'document.body').innerHTML = unescape(eval(strFrame + 'document.body').innerHTML + strLayer);				
			}
		}
	}else if (objBrowser.ns4up){
		if (objLayer){
			clipLayer(objLayer, 0, 0, getClipWidth(objLayer), getClipHeight(objLayer));
			if (!eval(objLayer.completeElementName + ".document.layers['" + strNewLayerName + "']") || getVisibility(eval(objLayer.completeElementName + ".document.layers['" + strNewLayerName + "']")) == 'hidden'){
				var objLayerNew = eval(objLayer.completeElementName + ".document.layers['" + strNewLayerName + "'] = new Layer(lngWidth, " + objLayer.completeElementName + ")");
				eval(objLayer.completeElementName + ".document.layers['" + strNewLayerName + "'] = objLayerNew");
			}
		}
		else {
			if (!eval("document.layers['" + strNewLayerName + "']") || getVisibility(eval("document.layers['" + strNewLayerName + "']")) == 'hidden'){
				var objLayerNew = document.layers[strNewLayerName] = new Layer(lngWidth);
				eval("document.layers['" + strNewLayerName + "'] = objLayerNew");
			}
		}
		if (objLayerNew){
			objLayerNew.name = strNewLayerName;
			if (objLayerNew.name != strNewLayerName){
				//when the browser could not change the name of the layer...
				arrCreatedLayer[strNewLayerName] = objLayerNew.name;
			}
			moveLayerTo(objLayerNew, lngLeftPos, lngTopPos);
			if (lngHeight != null){	
				setHeight(objLayerNew, lngHeight);
			}
			if (strBGColor != null && strBGColor != ''){
				setBgColor(objLayerNew, strBGColor);
			}
			if (blnVisibility){
				showLayer(objLayerNew);
			}else{
				hideLayer(objLayerNew);
			}
			if (lngZIndex != null){
				setZIndex(objLayerNew, lngZIndex);
			}
			if (strContent && strContent != '') {
				layerWrite(objLayerNew, strContent);
			}
		}
	}
}

function destroyLayer(objLayer) {
	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up) {
			objLayer.innerHTML = '';
			objLayer.outerHTML = '';
			hideLayer(objLayer);
		}else if (objBrowser.ns4up) {
			hideLayer(objLayer);
		}
	}
}

//-----------------------------------------------------------------------------
// Layer visibility.
//-----------------------------------------------------------------------------

function hideLayer(objLayer){

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			objLayer.style.visibility = "hidden";
		}else if (objBrowser.ns4up){
		  objLayer.visibility = "hide";
		}
	}
}

function showLayer(objLayer){

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			objLayer.style.visibility = "visible";
		}else if (objBrowser.ns4up){
		  objLayer.visibility = "show";
		}
	}
}

function inheritLayer(objLayer){

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			objLayer.style.visibility = "inherit";
		}else if (objBrowser.ns4up){
		  objLayer.visibility = "inherit";
		}
	}
}

function getVisibility(objLayer){

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (objLayer.style.visibility == "visible" || objLayer.style.visibility == "hidden"){
				return objLayer.style.visibility;
			}else{
				return "inherit";
			}
		}else if (objBrowser.ns4up){
			if (objLayer.visibility == "show"){
				return "visible";
			}else if (objLayer.visibility == "hide"){
				return "hidden";
			}else{
				return "inherit";
			}
		}
	}else{
		return "";
	}
}

//-----------------------------------------------------------------------------
// Layer writing.
//-----------------------------------------------------------------------------

function layerWrite(objLayer, strText, strClassName, lngWidth, lngHeight) {
	if (objLayer){
		if (layerWrite.arguments.length > 2){
			var strBeginTable = '<table width="' + lngWidth + '" height="' + lngHeight + '" cellpadding="0" cellspacing="0" border="0"><tr><td colspan="2" width="' + lngWidth + '">';
			strBeginTable += getSpacer(lngWidth, 1, false) + '</td></tr><tr><td width="1">' + getSpacer(1, lngHeight, false) + '</td><td valign="top" align="left">';
			var strEndTable = '</td></tr></table>';
			if (strClassName && strClassName != ''){
				strBeginTable += '<span class="' + strClassName + '">';
				strEndTable = '</span>' + strEndTable;
			}
			strText = strBeginTable + strText + strEndTable;
		}else{
			if (strClassName && strClassName != ''){
				strText = '<span class="' + strClassName + '">' + strText + '</span>';
			}
		}
		if (objBrowser.ie4up || objBrowser.ns6up) {
			objLayer.innerHTML = unescape(strText);
		}else if (objBrowser.ns4up){
			objLayer.document.open();
			objLayer.document.write(strText);
			objLayer.document.close();
		}
	}	
}


//-----------------------------------------------------------------------------
// Layer positioning and resizing.
//-----------------------------------------------------------------------------

function moveLayerTo(objLayer, lngX, lngY) {

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (objBrowser.ns6up){
				var strLayerName = objLayer.id;
			}else{
				var strLayerName = objLayer.name;
			}
			if (!isNaN(lngX) && lngX != null){
				objLayer.style.left = lngX + 'px';
				if (getDhtmlNamedObject(strLayerName) && getDhtmlNamedObject(strLayerName).posX){
					getDhtmlNamedObject(strLayerName).posX = lngX;
				}
			}
			if (!isNaN(lngY) && lngY != null){
			    objLayer.style.top  = lngY + 'px';
				if (getDhtmlNamedObject(strLayerName) && getDhtmlNamedObject(strLayerName).posY){
					getDhtmlNamedObject(strLayerName).posY = lngY;
				}
			}
		}else if (objBrowser.ns4up){
			objLayer.moveTo(lngX, lngY);
		}
	}
}

function moveLayerBy(objLayer, lngDx, lngDy) {

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up) {
			var lngX = eval(getLeft(objLayer) + lngDx);
			var lngY = eval(getTop(objLayer) + lngDy);
			moveLayerTo(objLayer, lngX, lngY);
		}else if (objBrowser.ns4up){
			  objLayer.moveBy(lngDx, lngDy);
		}
	}
}

function animatedLayerType(blnInMove, lngCurrentX, lngCurrentY, lngX, lngY, lngStep){
	this.inMove = blnInMove;
	this.currPosX = lngCurrentX;
	this.currPosY = lngCurrentY;
	this.posX = lngX;
	this.posY = lngY;
	this.step = lngStep;
	this.timeoutID = 0;
}

function moveLayerAnimatedTo(strFrame, strLayerName, objLayer, lngX, lngY, lngStep, lngTimeout, strFunctionWhenFinished){

	var lngStepX = 0;
	var lngStepY = 0;
	var lngCurrX = getLeft(objLayer);
	var lngCurrY = getTop(objLayer);
	if (strFrame && strFrame != ''){
		if (strFrame.indexOf(".") < 0){
			strFrameWithDot = getCompleteFrameName(null, strFrame);
		}else{
			strFrameWithDot = strFrame;
		}
		strFrameWithDot += '.';
	}
	if (strLayerName && strLayerName != ''){
		if (objBrowser.ie4up || objBrowser.ns6up){
			objLayer = getElement(strFrame, strLayerName, 'LAYER');
		}else if (objBrowser.ns4up){
			objLayer = eval(strFrameWithDot + strLayerName);
		}	
	}
	if ((objLayer && !arrMovingLayer[objLayer.ElementName]) || (objLayer && arrMovingLayer[objLayer.ElementName] && !arrMovingLayer[objLayer.ElementName].inMove) || (objLayer && arrMovingLayer[objLayer.ElementName] && arrMovingLayer[objLayer.ElementName].step == lngStep && arrMovingLayer[objLayer.ElementName].posX == lngX && arrMovingLayer[objLayer.ElementName].posY == lngY)){
		var lngDirectionX = 1;
		var lngDirectionY = 1;
		lngStep = Math.abs(lngStep);
		if (getLeft(objLayer) > lngX)
			lngDirectionX = -1;
		if (getTop(objLayer) > lngY)
			lngDirectionY = -1;
		if (Math.abs(eval(getLeft(objLayer) - lngX)) > Math.abs(eval(getTop(objLayer) - lngY))){
			lngStepX = lngStep;
			lngStepY = parseInt(eval(Math.abs(eval(getTop(objLayer) - lngY)) / Math.abs(eval(getLeft(objLayer) - lngX))) * lngStep);
		}else{
			lngStepX = parseInt(eval(Math.abs(eval(getLeft(objLayer) - lngX)) / Math.abs(eval(getTop(objLayer) - lngY))) * lngStep);
			lngStepY = lngStep;		
		}
		lngStepX = lngStepX * lngDirectionX;
		lngStepY = lngStepY * lngDirectionY;
		if (eval(getLeft(objLayer) + lngStepX) != lngX){
			if ((lngStepX >0 && eval(getLeft(objLayer) + lngStepX <= lngX)) || (lngStepX <0 && eval(getLeft(objLayer) + lngStepX >= lngX))){
				//ok, lngStepX is correct;
			}else if(getLeft(objLayer) != lngX){
				//lngStepX must be corrected
				lngStepX = eval(lngX - getLeft(objLayer));
			}
		}
		if (eval(getTop(objLayer) + lngStepY) != lngY){
			if ((lngStepY >0 && eval(getTop(objLayer) + lngStepY <= lngY)) || (lngStepY <0 && eval(getTop(objLayer) + lngStepY >= lngY))){
				//ok, lngStepY is correct;
			}else if(getTop(objLayer) != lngY){
				//lngStepY must be corrected
				lngStepY = eval(lngY - getTop(objLayer));
			}		
		}
		if (getLeft(objLayer) == lngX){
			lngStepX = 0;
		}
		if (getTop(objLayer) == lngY){
			lngStepY = 0;
		}
		if (lngStepX != 0 || lngStepY != 0){
			moveLayerBy(objLayer, lngStepX, lngStepY);
		}
		if (getLeft(objLayer) != lngX || getTop(objLayer) != lngY){
			if (objBrowser.ie4up || objBrowser.ns6up){
				strLayerName = '\'' + objLayer.id + '\'';
			}else if (objBrowser.ns4up){
				strLayerName = '\'' + objLayer.completeElementName + '\'';
			}
			if (arrMovingLayer[objLayer.ElementName]){
				if (!arrMovingLayer[objLayer.ElementName].inMove){
					arrMovingLayer[objLayer.ElementName].inMove = true;
					arrMovingLayer[objLayer.ElementName].currPosX = lngCurrX;
					arrMovingLayer[objLayer.ElementName].currPosY = lngCurrY;
					arrMovingLayer[objLayer.ElementName].posX = lngX;
					arrMovingLayer[objLayer.ElementName].posY = lngY;
					arrMovingLayer[objLayer.ElementName].step = lngStep;
				}
			}else{
				arrMovingLayer[objLayer.ElementName] = new animatedLayerType(true, lngCurrX, lngCurrY, lngX, lngY, lngStep);
			}
			arrMovingLayer[objLayer.ElementName].timeoutID = setTimeout("moveLayerAnimatedTo('" + strFrame + "', " + strLayerName + ", null, " + lngX + ", " + lngY + ", " + lngStep + ", " + lngTimeout + ", '" + strFunctionWhenFinished + "');", lngTimeout);
		}else{
			if (!arrMovingLayer[objLayer.ElementName]){
				arrMovingLayer[objLayer.ElementName] = new animatedLayerType(true, lngCurrX, lngCurrY, lngX, lngY, lngStep);			
			}
			arrMovingLayer[objLayer.ElementName].inMove = false;
			arrMovingLayer[objLayer.ElementName].posX = 0;
			arrMovingLayer[objLayer.ElementName].posY = 0;
			arrMovingLayer[objLayer.ElementName].step = 0;
			clearTimeout(arrMovingLayer[objLayer.ElementName].timeoutID);
			if (strFunctionWhenFinished && strFunctionWhenFinished != ''){
				//eval(strFrameWithDot + strFunctionWhenFinished);
				eval(strFunctionWhenFinished);
			}
			if (arrPoolMovingLayer.length > 0){
				var strJsScript2Execute = arrPoolMovingLayer[0];
				var arrTmpPoolMovingLayer = new Array();
				for (var lngI=1;lngI<arrPoolMovingLayer.length;lngI++){
					arrTmpPoolMovingLayer[lngI - 1] =  arrPoolMovingLayer[lngI];
				}
				arrPoolMovingLayer = arrTmpPoolMovingLayer;
				eval(strJsScript2Execute);
			}
		}
	}else if(objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			strLayerName = '\'' + objLayer.id + '\'';
		}else if (objBrowser.ns4up){
			strLayerName = '\'' + objLayer.completeElementName + '\'';
		}
		arrPoolMovingLayer[arrPoolMovingLayer.length] = "moveLayerAnimatedTo('" + strFrame + "', " + strLayerName + ", null, " + lngX + ", " + lngY + ", " + lngStep + ", " + lngTimeout + ", '" + strFunctionWhenFinished + "')";
	}
}

function moveLayerAnimatedBy(strFrame, strLayerName, objLayer, lngDx, lngDy, lngStep, lngTimeout, strFunctionWhenFinished){

	moveLayerAnimatedTo(strFrame, strLayerName, objLayer, eval(getLeft(objLayer) + lngDx), eval(getTop(objLayer) + lngDy), lngStep, lngTimeout, strFunctionWhenFinished)
}

function getLeft(objLayer) {

	if (objLayer){
		lngLeftPosition = 0;
		if (objBrowser.ie4up || objBrowser.ns6up) {
			if (objBrowser.ns6up){
				var strLayerName = objLayer.id;
			}else{
				var strLayerName = objLayer.name;
			}
			if (getDhtmlNamedObject(strLayerName) && getDhtmlNamedObject(strLayerName).posX){
				lngLeftPosition = getDhtmlNamedObject(strLayerName).posX;
			}else{
				//turn around for ns601, when a layer is into another, left and top positions are wrong!
				if (objBrowser.ns601 && objLayer.parentNode){
					if (strLayerName){
						lngLeftPosition = objLayer.offsetLeft - getLeft(objLayer.parentNode);
					}
				}else{
					lngLeftPosition = objLayer.offsetLeft;
				}
			}
		}else if (objBrowser.ns4up) {
			if (objLayer.left){
				lngLeftPosition = objLayer.left;
			}else{
				lngLeftPosition = objLayer.clip.left;
			}
		}
		return lngLeftPosition;
	}else{
		return -1;
	}
}

function getTop(objLayer) {

	if (objLayer){
		lngTopPosition = 0;
		if (objBrowser.ie4up || objBrowser.ns6up) {
			if (objBrowser.ns6up){
				var strLayerName = objLayer.id;
			}else{
				var strLayerName = objLayer.name;
			}
			if (getDhtmlNamedObject(strLayerName) && getDhtmlNamedObject(strLayerName).posY){
				lngTopPosition = getDhtmlNamedObject(strLayerName).posY;
			}else{
				//turn around for ns601, when a layer is into another, left and top positions are wrong!
				if (objBrowser.ns601 && objLayer.parentNode){
					if (strLayerName){
						lngTopPosition = objLayer.offsetTop - getTop(objLayer.parentNode);
					}
				}else{
					lngTopPosition = objLayer.offsetTop;
				}
			}
		}else if (objBrowser.ns4up) {
			if (objLayer.top){
				lngTopPosition = objLayer.top;
			}else{
				lngTopPosition = objLayer.clip.top;
			}
		}
		return lngTopPosition;
	}else{
		return -1;
	}
}

function getRight(objLayer) {

	if (objLayer){
		return getLeft(objLayer) + getWidth(objLayer);
	}else{
		return -1;
	}
}

function getBottom(objLayer) {

	if (objLayer){
		return getTop(objLayer) + getHeight(objLayer);
	}else{
		return -1;
	}
}

function getWidth(objLayer) {
	//*********************************************************************************************
	//Status: With NS4, not full ok, if there is no content in the layer, the value is not correct!
	//*********************************************************************************************
	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up) {
			return objLayer.offsetWidth;
		}else if (objBrowser.ns4up) {
			if (objLayer.document.height){
				return objLayer.document.width;
			}else{
				return objLayer.clip.right - objLayer.clip.left;
			}
		}
	}else{
		return -1;
	}
}

function getHeight(objLayer){
	//*********************************************************************************************
	//Status: With NS4, not full ok, if there is no content in the layer, the value is not correct!
	//*********************************************************************************************
	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			return objLayer.offsetHeight;
		}else if (objBrowser.ns4up) {
			if (objLayer.document.height){
				return objLayer.document.height;
			}else{
				return objLayer.clip.bottom - objLayer.clip.top;
			}
		}
	}else{
		return -1;
	}
}

function getPageLeft(objLayer){

	var lngX;
	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			lngX = 0;
			while (objLayer.offsetParent != null){
				lngX += objLayer.offsetLeft;
				objLayer = objLayer.offsetParent;
			}
			lngX += objLayer.offsetLeft;
			return lngX;
		}else if (objBrowser.ns4up){
			if (objLayer.toString().toUpperCase().indexOf("LAYER") > 0){
				return objLayer.pageX;
			}else if (objLayer.toString().toUpperCase().indexOf("IMAGE") > 0){
				return objLayer.x;
			}else{
				return -1;
			}
		}
	}else{
		return -1;
	}
}

function getPageTop(objLayer){

	var lngY;
	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			lngY = 0;
			while (objLayer.offsetParent != null) {
				lngY += objLayer.offsetTop;
				objLayer = objLayer.offsetParent;
			}
			lngY += objLayer.offsetTop;
			return lngY;
		}else if (objBrowser.ns4up){
			if (objLayer.toString().toUpperCase().indexOf("LAYER") > 0){
				return objLayer.pageY;
			}else if (objLayer.toString().toUpperCase().indexOf("IMAGE") > 0){
				return objLayer.y;
			}else{
				return -1;
			}
		}
	}else{
		return -1;
	}
}


function setWidth(objLayer, lngWidth){

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			objLayer.style.width = parseInt(lngWidth);
		}else{
			objLayer.clip.width = parseInt(lngWidth);
		}
	}
}

function setHeight(objLayer, lngHeight){
	
	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			objLayer.style.height = parseInt(lngHeight);
		}else{
			objLayer.clip.height = parseInt(lngHeight);
		}
	}
}


function getZIndex(objLayer){

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
		    lngZindex = parseInt(objLayer.style.zIndex);
		}else{
		    lngZindex =  parseInt(objLayer.zIndex);
		}
		if (isNaN(lngZindex)){
			lngZindex = 0;
		}
		return lngZindex;
	}else{
		return -1;
	}
}

function setZIndex(objLayer, zIndex){

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
		    objLayer.style.zIndex = zIndex;
		}else{
		    objLayer.zIndex = zIndex;
		}
	}
}

function setZIndexOrder(){
	if (setZIndexOrder.arguments.length > 1){
		if (!isNaN(parseInt(setZIndexOrder.arguments[setZIndexOrder.arguments.length-1]))){
			var lngZIndex2Add = parseInt(setZIndexOrder.arguments[setZIndexOrder.arguments.length-1]);
			var lngNumberOfObjects = setZIndexOrder.arguments.length - 1;
		}else{
			var lngZIndex2Add = 0;
			var lngNumberOfObjects = setZIndexOrder.arguments.length;
		}
		for (var lngI=1;lngI<=lngNumberOfObjects;lngI++){
			setZIndex(setZIndexOrder.arguments[eval(lngNumberOfObjects - lngI)], eval(lngI-1+lngZIndex2Add));
		}
	}
}

//-----------------------------------------------------------------------------
// Layer clipping.
//-----------------------------------------------------------------------------

function clipLayer(objLayer, lngClipLeft, lngClipTop, lngClipRight, lngClipBottom){

	//warning, mac, ie4 won't to clip the layer!!!
	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			objLayer.style.clip = 'rect(' + lngClipTop + ' ' +  lngClipRight + ' ' + lngClipBottom + ' ' + lngClipLeft +')';
			if (Math.abs(eval(lngClipRight - lngClipLeft)) > getWidth(objLayer)){
				setWidth(objLayer, Math.abs(eval(lngClipRight - lngClipLeft)))
			}
			if (Math.abs(eval(lngClipTop - lngClipBottom)) > getHeight(objLayer)){
				setHeight(objLayer, Math.abs(eval(lngClipTop - lngClipBottom)))
			}
		}else if (objBrowser.ns4up){
			objLayer.clip.left   = lngClipLeft;
			objLayer.clip.top    = lngClipTop;
			objLayer.clip.right  = lngClipRight;
			objLayer.clip.bottom = lngClipBottom;
		}
	}
}

function getClipLeft(objLayer) {

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			var strClip =  objLayer.style.clip;
			if (!strClip){
				return 0;
			}else{
				return getClipValues(strClip)[3];
			}
		}else if (objBrowser.ns4up){
			return objLayer.clip.left;
		}
	}else{
		return -1;
	}
}

function getClipTop(objLayer) {

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (!objLayer.style.clip){
				clipLayer(objLayer, 0, 0, getWidth(objLayer), getHeight(objLayer))
			}
			if (objLayer.style.clip){
				return getClipValues(objLayer.style.clip)[0];
			}else{
				return 0;
			}
		}else if (objBrowser.ns4up){
			return objLayer.clip.top;
		}
	}else{
		return -1;
	}
}

function getClipRight(objLayer) {

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (!objLayer.style.clip){
				clipLayer(objLayer, 0, 0, getWidth(objLayer), getHeight(objLayer))
			}
			if (objLayer.style.clip){
				return getClipValues(objLayer.style.clip)[1];
			}else{
				return 0;
			}
		}else if (objBrowser.ns4up){
			return objLayer.clip.right;
		}
	}else{
		return -1;
	}
}

function getClipBottom(objLayer) {

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (!objLayer.style.clip){
				clipLayer(objLayer, 0, 0, getWidth(objLayer), getHeight(objLayer))
			}
			if (objLayer.style.clip){
				return getClipValues(objLayer.style.clip)[2];
			}else{
				return 0;
			}
		}else if (objBrowser.ns4up){
			return objLayer.clip.bottom;
		}
	}else{
		return -1;
	}
}

function getClipWidth(objLayer) {

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (!objLayer.style.clip){
				clipLayer(objLayer, 0, 0, getWidth(objLayer), getHeight(objLayer))
			}
			if (objLayer.style.clip){
				return eval(getClipValues(objLayer.style.clip)[1] - getClipValues(objLayer.style.clip)[3]);
			}else{
				return 0;
			}
		}else if (objBrowser.ns4up){
			return objLayer.clip.width;
		}
	}else{
		return -1;
	}
}

function getClipHeight(objLayer) {

	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (!objLayer.style.clip){
				clipLayer(objLayer, 0, 0, getWidth(objLayer), getHeight(objLayer))
			}
			if (objLayer.style.clip){
				return eval(getClipValues(objLayer.style.clip)[2] - getClipValues(objLayer.style.clip)[0]);
			}else{
				return 0;
			}
		}else if (objBrowser.ns4up){
			return objLayer.clip.height;
		}
	}else{
		return -1;
	}
}

function getClipValues(strClip) {

	if (objBrowser.ie4up || objBrowser.ns6up){
		var arrClip = new Array();
		var lngI = strClip.indexOf("(");
		arrClip[0] = parseInt(strClip.substring(lngI + 1, strClip.length), 10);
		lngI = strClip.indexOf(" ", lngI + 1);
		arrClip[1] = parseInt(strClip.substring(lngI + 1, strClip.length), 10);
		lngI = strClip.indexOf(" ", lngI + 1);
		arrClip[2] = parseInt(strClip.substring(lngI + 1, strClip.length), 10);
		lngI = strClip.indexOf(" ", lngI + 1);
		arrClip[3] = parseInt(strClip.substring(lngI + 1, strClip.length), 10);
		return arrClip;
	}
}

//-----------------------------------------------------------------------------
// Layer background.
//-----------------------------------------------------------------------------

function setBgColor(objLayer, strColor) {

	var strOldBackgroundImage = '';
	if (objLayer){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (strColor && strColor != ''){
				objLayer.style.backgroundColor = strColor;
			}else{
				if (objLayer.style.backgroundImage != ''){
					strOldBackgroundImage = objLayer.style.backgroundImage;
				}
				objLayer.style.background = '';
				if (strOldBackgroundImage != ''){
					objLayer.style.backgroundImage = strOldBackgroundImage;
				}
			}
		}else if (objBrowser.ns4up){
			objLayer.bgColor = strColor;
		}
	}
}

function setBgImage(objLayer, imgBackground) {
	if (objLayer && imgBackground){
		if (objBrowser.ie4up || objBrowser.ns6up){
			if (imgBackground && imgBackground != ''){
				if (imgBackground.src){
					objLayer.style.backgroundImage = "url(" + imgBackground.src + ")";
				}else{
					objLayer.style.backgroundImage = "url(" + imgBackground + ")";
				}
			}else{
				objLayer.style.backgroundImage = "";
			}
		}else if (objBrowser.ns4up){
			if (imgBackground && !imgBackground.src){
				imgBackground = getLoadedImage(imgBackground);
			}
			//does not work with NS on Windows!!!!
			if (imgBackground && imgBackground != ''){
				objLayer.background.src = imgBackground.src;
			}else{
				objLayer.background.src = null;
			}
		}
	}
}

//-----------------------------------------------------------------------------
// Layer scrolling.
//-----------------------------------------------------------------------------

function scrollLayerTo(objLayer, lngX, lngX){

	if (objLayer){
		var lngDx = getClipLeft(objLayer) - lngX;
		var lngDy = getClipTop(objLayer) - lngY;
		scrollLayerBy(objLayer, -lngDx, -lngDy);
	}
}

function scrollLayerBy(objLayer, lngDx, lngDy){

	if (objLayer){
		clipLayer(objLayer, eval(getClipLeft(objLayer) + eval(lngDx * (-1))), eval(getClipTop(objLayer) + eval(lngDy * (-1))), eval(getClipRight(objLayer) + eval(lngDx * (-1))), eval(getClipBottom(objLayer) + eval(lngDy * (-1))));
		moveLayerBy(objLayer, lngDx, lngDy);
	}
}

//-----------------------------------------------------------------------------
// Layer Load a page.
//-----------------------------------------------------------------------------

function loadedPageType(strFrame, objLayer, strSourcePage, lngWidth, lngHeight, strScrollBarMethodX, strScrollBarMethodY, strSourceScrollImage, lngScrollButtonSize){
	this.strFrame = strFrame;
	this.objLayer = objLayer;
	this.strSourcePage = strSourcePage;
	this.lngWidth = lngWidth;
	this.lngHeight = lngHeight;
	if (!objBrowser.ie4up && (!strSourceScrollImage || strSourceScrollImage == '')){
		strScrollBarMethodX = 'NO';
		strScrollBarMethodY = 'NO';
	}
	this.strScrollBarMethodX = strScrollBarMethodX;
	this.strScrollBarMethodY = strScrollBarMethodY;
	this.lngScrollButtonSize = lngScrollButtonSize;
	this.imgScrollBar = getLoadedImage(strSourceScrollImage);
}

function loadPage(strFrame, objLayer, strSourcePage, lngWidth, lngHeight, strScrollBarMethodX, strScrollBarMethodY, strSourceScrollImage, lngScrollButtonSize){

	//warning, with mac, ie4 there are a lot of problems but no javascript errors!
	//the size of the layer come's bigger as the content size

	if (!(objBrowser.ie4 && !objBrowser.ie5 && objBrowser.mac)){
		hideLayer(objLayer);
	}
	arrLoadedPage[arrLoadedPage.length] = new loadedPageType(strFrame, objLayer, strSourcePage, lngWidth, lngHeight, strScrollBarMethodX, strScrollBarMethodY, strSourceScrollImage, lngScrollButtonSize);
	if (objBrowser.ie4up){
		if (objBrowser.ie4 && !objBrowser.ie5 && objBrowser.mac){
			strHiddenLayer = '<iframe id="bufferIFrame000001" name="bufferIFrame000001" src="' + strSourcePage+ '"></iframe>';
		}else{
			strHiddenLayer = '<iframe id="bufferIFrame000001" name="bufferIFrame000001" src="' + strSourcePage+ '" style="display:none"></iframe>';
		}
		layerWrite(objLayer, strHiddenLayer);
	}else if (objBrowser.ns6up){
		strHiddenLayer = '<iframe id="bufferIFrame000001" name="bufferIFrame000001" src="' + strSourcePage+ '" style="visibility:hidden"></iframe>';
		layerWrite(objLayer, strHiddenLayer);
	}else if (objBrowser.ns4up){
		if (!lngWidth || lngWidth < 1)
			lngWidth = getWidth(objLayer);
		objLayer.load(strSourcePage, lngWidth);
	}
}

function loadPageFinish(strBgColor, strBackground){

	var objLoadedPage = arrLoadedPage[arrLoadedPage.length-1];
	var strLoadedContent = '';
	if (objLoadedPage.strFrame && objLoadedPage.strFrame != ''){
		objLoadedPage.strFrame += '.';
	}else{
		objLoadedPage.strFrame = 'parent.';
	}
	if (objBrowser.ie4up || objBrowser.ns6up){
		layerWrite(objLoadedPage.objLayer, eval(objLoadedPage.strFrame + "bufferIFrame000001.document.body.innerHTML"));
	}
	if (strBgColor && strBgColor != ''){
		setBgColor(objLoadedPage.objLayer, strBgColor);
	}
	if (strBackground && strBackground != ''){
		setBgImage(objLoadedPage.objLayer, strBackground);
	}
	if (objLoadedPage.lngWidth > 0 && objLoadedPage.lngHeight > 0){
		if (objLoadedPage.strScrollBarMethodX.toUpperCase() == 'AUTO' || objLoadedPage.strScrollBarMethodX.toUpperCase() == 'YES'){
			clipLayer(objLoadedPage.objLayer, 0, 0, eval(objLoadedPage.lngWidth - objLoadedPage.lngScrollButtonSize), eval(objLoadedPage.lngHeight - objLoadedPage.lngScrollButtonSize));
		}else{
			clipLayer(objLoadedPage.objLayer, 0, 0, objLoadedPage.lngWidth, objLoadedPage.lngHeight);
		}
	}
	showLayer(objLoadedPage.objLayer);
	arrLoadedPage.length = arrLoadedPage.length-1;
}

//-----------------------------------------------------------------------------
// ScrollBar utilities.
//-----------------------------------------------------------------------------

function setScrollBar(objLayer, strScrollBarMethodX, strScrollBarMethodY, strSourceScrollImage, lngScrollButtonSize){

	//beta version
	if (!objBrowser.ie4up && (!strSourceScrollImage || strSourceScrollImage == '')){
		strScrollBarMethodX = 'NO';
		strScrollBarMethodY = 'NO';
	}
	this.strScrollBarMethodX = strScrollBarMethodX;
	this.strScrollBarMethodY = strScrollBarMethodY;
	this.lngScrollButtonSize = lngScrollButtonSize;
	this.imgScrollBar = getLoadedImage(strSourceScrollImage);
	if (this.imgScrollBar){
		this.iconTopActiv = 0;
	}
}


//-----------------------------------------------------------------------------
// Window and page properties.
//-----------------------------------------------------------------------------

function getWindowWidth(strFrame){

	if (strFrame && strFrame != ''){
		if (strFrame.indexOf(".") < 0){
			strFrame = getCompleteFrameName(null, strFrame);
		}
		strFrame += '.';
	}
	if (objBrowser.ie4up){
		return eval(strFrame + "document.body.clientWidth");
	}else if (objBrowser.ns4up){
		return eval(strFrame + "window.innerWidth");
	}else{
		return -1;
	}
}

function getWindowHeight(strFrame) {

	if (strFrame && strFrame != ''){
		if (strFrame.indexOf(".") < 0){
			strFrame = getCompleteFrameName(null, strFrame);
		}
		strFrame += '.';
	}
	if (objBrowser.ie4up){
		return eval(strFrame + "document.body.clientHeight");
	}else if (objBrowser.ns6up || (objBrowser.ns4up && objBrowser.mac)){
		return eval(strFrame + "window.innerHeight");
	}else if (objBrowser.ns4up){
		return eval(strFrame + "window.innerHeight") + 4;
	}else{
		return -1;
	}	
}

function getPageScrollX(strFrame) {

	if (strFrame && strFrame != ''){
		if (strFrame.indexOf(".") < 0){
			strFrame = getCompleteFrameName(null, strFrame);
		}
		strFrame += '.';
	}
	if (objBrowser.ie4up){
		return eval(strFrame + "document.body.scrollLeft");
	}else if (objBrowser.ns4up){
		return eval(strFrame + "window.pageXOffset");
	}else{
		return -1;
	}	
}

function getPageScrollY(strFrame) {

	if (strFrame && strFrame != ''){
		if (strFrame.indexOf(".") < 0){
			strFrame = getCompleteFrameName(null, strFrame);
		}
		strFrame += '.';
	}
	if (objBrowser.ie4up){
		return eval(strFrame + "document.body.scrollTop");
	}else if (objBrowser.ns4up){
		return eval(strFrame + "window.pageYOffset");
	}else{
		return -1;
	}	
}

//-----------------------------------------------------------------------------
// Image utilities.
//-----------------------------------------------------------------------------

function getLoadedImage(strImagePath){

	var objImage = null;
	if (document.images && strImagePath && strImagePath != ''){
		if (getLoadedImage.arguments.length == 1){
			objImage = new Image();
		}else if (getLoadedImage.arguments.length == 3){
			objImage = new Image(getLoadedImage.arguments[1], getLoadedImage.arguments[2]);
		}
		objImage.src = strImagePath;
	}
	return objImage;
}

//-----------------------------------------------------------------------------
// HTML utilities.
//-----------------------------------------------------------------------------

function getSpacer(lngWidth, lngHeight, blnAutoLineFeed){
	var str2Return = '<spacer type="block" width="' + lngWidth + '" height="' + lngHeight + '" />';
	if (blnAutoLineFeed){
		str2Return += '<br>';
	}
	return str2Return;
}

//-----------------------------------------------------------------------------
// Frames utilities.
//-----------------------------------------------------------------------------

function getCompleteFrameName(objFrameset, strFrame){
	//to be implemented
	return 'top.frames["' + strFrame + '"]';
}

function getCompleteFrameName_new(objFrameset, strFrame){
	if (!objFrameset){
		strFrameName = 'top.frames';
		objFrameset = window.frames;
	}
	if (strFrame && strFrame != ''){
		for (var lngI=0;lngI<objFrameset.length;lngI++){
			if (window.frames[lngI].frames.length > 0){
				strFrameName = getCompleteFrameName(objFrameset[lngI], strFrame);
			}else if (objFrameset[lngI].name == strFrame){
				strFrameName += '["' + objFrameset[lngI].name + '"]';
				return strFrameName;
				lngI = objFrameset.length;
			}
		}	
	}else{
		return '';
	}
}

