// #################################################################################
// <SCRIPT>
// ID-3 ASP Library
// Javascript Universal Include File
// (c) 2002 ID-3 Technologies inc. All right reserved
// #################################################################################

// #################################################################################
// ID3ASP_AbsoluteTop
// #################################################################################
function ID3ASP_AbsoluteTop(obj,iTop){
	if (obj.offsetParent != null){
		iTop += obj.offsetTop;
		return(ID3ASP_AbsoluteTop(obj.offsetParent,iTop));
	}
	else{
		return(iTop);
	}
}

// #################################################################################
// ID3ASP_AbsoluteTop
// #################################################################################
function ID3ASP_AbsoluteLeft(obj,iLeft){
	if (obj.offsetParent != null){
		iLeft += obj.offsetLeft;
		return(ID3ASP_AbsoluteLeft(obj.offsetParent,iLeft));
	}
	else{
		return(iLeft);
	}
}

// ##################################################################################
// ID3ASP_AdjustPosition
// ##################################################################################
function ID3ASP_AdjustPosition(obj,parentObj){
	if (typeof(obj.style) != 'undefined'){
		var objWidth = obj.offsetWidth, objHeight = obj.offsetHeight;
		var objLeft = ID3ASP_AbsoluteLeft(obj,0), objTop = ID3ASP_AbsoluteTop(obj,0);
		var winWidth = obj.document.body.offsetWidth + document.body.scrollLeft, winHeight = obj.document.body.offsetHeight + document.body.scrollTop;

		//Check if the horizon space is sufficient
		if ((objLeft + objWidth) > winWidth){
			obj.style.left = (objLeft - objWidth)+ parentObj.offsetWidth;
		}
		//Check if the vertical space is sufficient
		if ((objTop + objHeight) > winHeight){
			obj.style.top = (objTop - objHeight - parentObj.offsetHeight);
		}
	}
}

function ID3ASP_DrawMask(obj){
	if (typeof(obj.style) != 'undefined'){
		var oMask = document.createElement('IFRAME');
		document.body.appendChild(oMask);
		oMask.style.position = 'absolute';
		oMask.style.display  = 'block';
		oMask.style.top = ID3ASP_AbsoluteTop(obj,0);
		oMask.style.left = ID3ASP_AbsoluteLeft(obj,0);
		oMask.style.width = obj.offsetWidth;
		oMask.style.height = obj.offsetHeight;
		oMask.style.filter ='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
		oMask.style.zIndex = 999;

		oMask.frameborder = 0;
		oMask.src = 'javascript:false;';
		oMask.scrolling = 'no';

		return(oMask);
	}
}

// #################################################################################
// ID3ASP_Format
// #################################################################################
function ID3ASP_Format(strValue,iType,sErrorMessage){
	var sNewValue = '';
	var oStr = new ID3ASP_StringObj(strValue);

	if (strValue.length > 0){
		switch (iType){
			case 1:			//Format as Email
				sNewValue = oStr.ToEmail();
				break;
			case 2:			//Format as HTTP Url
				sNewValue = oStr.ToHTTPUrl();
				break;
			case 8:			//Format as IP
				sNewValue = oStr.ToIP();
				break;
			case 60:		//Format as Credit Card
				sNewValue = oStr.ToCreditCardNum();
				break;
			case 65:		//Format as SIN (Social Insurance Number)
				sNewValue = oStr.ToSIN();
				break;
			case 70:		//Format as North-American Phone Number
				sNewValue = oStr.ToNAPhone();
				break;
			case 80:		//Format as Canada zip code
				sNewValue = oStr.ToCAZipCode();
				break;
		}

		if (typeof(sErrorMessage) != 'undefined'){
			if (sNewValue.length == 0){
				alert(sErrorMessage);
			}
		}
	}
	return(sNewValue);
}


// #################################################################################
// ID3ASP_FormatAsEmail
// #################################################################################
function ID3ASP_FormatAsEmail(oField, sErrorMessage)
{
	var sString;

	sString = oField.value;
	sString = sString.replace(/ /gi,'');
	if (sString.length > 0) {
		if (!(sString.length > 5 && sString.indexOf('@') > 0 && sString.lastIndexOf('.') > 0 && (sString.indexOf('@') < sString.lastIndexOf('.')))) {
			alert(sErrorMessage);
			oField.focus();
			}
		}
	oField.value = sString;
}


// #################################################################################
// ID3ASP_GenerateUniqueIDs
// #################################################################################
function ID3ASP_GenerateUniqueIDs(objParent,iStartID,iLevel){
	var oChild = objParent.childNodes;

	for (var i=0;i<oChild.length;i++){
		if (String(oChild[i].uniqueID) == 'undefined'){
			if (oChild[i].nodeType != 3){
			oChild[i].uniqueID = new String('ms__id' + iStartID);
			iStartID++;}
		}

		if (oChild[i].hasChildNodes() == true){
			iStartID = ID3ASP_GenerateUniqueIDs(oChild[i],iStartID + 1,iLevel + 1);}
	}

	return (iStartID);
}

// #################################################################################
// ID3ASP_GetCursorPos
// #################################################################################
function ID3ASP_GetCursorPos(obj)
{
	var oTR = document.selection.createRange()

	oTR.moveEnd('character',obj.value.length);

	var iPos = obj.value.length - oTR.text.length + 1;
	oTR = null;

	return (iPos)
}

// #################################################################################
// ID3ASP_GetElementByName
// #################################################################################
function ID3ASP_GetElementByName(objParent,sName){
	var oElement;
	var oChild = objParent.childNodes;

	for (var i=0;i<oChild.length;i++){
		if ( (oChild[i].hasChildNodes()) && (oChild[i].tagName != "SELECT") ){
			oElement = ID3ASP_GetElementByName(oChild[i],sName);
		}

		if (oElement != null){
			return(oElement);
		}

		if ( (oChild[i].name == sName)){
			return (oChild[i]);}
	}

	return (null);
}

// #################################################################################
// ID3ASP_GetElementsByName
// #################################################################################
function ID3ASP_GetElementsByName(objParent,sName,arrElements){
	var oElement;
	var oChild = objParent.childNodes;

	for (var i=0;i<oChild.length;i++){
		if ( (oChild[i].hasChildNodes()) && (oChild[i].tagName != "SELECT") ){
			ID3ASP_GetElementsByName(oChild[i],sName,arrElements);
		}

		if ( (oChild[i].name == sName)){
			arrElements[arrElements.length] = oChild[i];
		}
	}

	return (null);
}

// #################################################################################
// ID3ASP_GetElementByID
// #################################################################################
function ID3ASP_GetElementByID(objParent,sName){
	var oElement;
	var oChild = objParent.childNodes;

	for (var i=0;i<oChild.length;i++){
		if ( (oChild[i].hasChildNodes()) && (oChild[i].tagName != "SELECT") ){
			oElement = ID3ASP_GetElementByID(oChild[i],sName);
		}

		if (oElement != null){
			return(oElement);
		}

		if ( (oChild[i].id == sName)){
			return (oChild[i]);}
	}

	return (null);
}

// #################################################################################
// ID3ASP_GetElementByUniqueID
// #################################################################################
function ID3ASP_GetElementByUniqueID(objParent,iUniqueID){
	var oElement;
	var oChild = objParent.childNodes;

	for (var i=0;i<oChild.length;i++){
		if (oChild[i].hasChildNodes()){
			oElement = ID3ASP_GetElementByUniqueID(oChild[i],iUniqueID);}
			if (oElement != null){
				return(oElement);}

		if (String(oChild[i].uniqueID) == String(iUniqueID)){
			return (oChild[i]);}
	}

	return (null);
}

// #################################################################################
// ID3ASP_GetIntegerStyleValue
// #################################################################################
function ID3ASP_GetIntegerStyleValue(sValue){
	var iNewValue;
	var iIndex;
	if (isNaN(sValue)){
		//Find the last index of a number in the string
		NumSearch:
		for (iIndex=0;iIndex<sValue.length;iIndex++){
			if (isNaN(sValue[iIndex])){
				break NumSearch;
			}
		}

		iNewValue = sValue.substr(0,iIndex + 1);
	}
	else{
		iNewValue = sValue;
	}
	return(Number(iNewValue));
}


// #################################################################################
// ID3ASP_GetTabStrip
// #################################################################################
function ID3ASP_GetTabStrip(oChildNode){
	if ( String(oChildNode.id).indexOf("_Strip") > 0){
		return(oChildNode);
	}
	else{
		if ( String(oChildNode.tagName).toLowerCase() != "body"){
			return(ID3ASP_GetTabStrip(oChildNode.parentNode));
		}
	}

	return (null)
}

// #################################################################################
// ID3ASP_HideTabStrip
// #################################################################################
function ID3ASP_HideTabStrip(obj){
	obj.style.visibility = 'hidden';
	obj.style.position = 'absolute';
	obj.style.left = -1000;
}

// #################################################################################
// ID3ASP_LimitRange
// #################################################################################
function ID3ASP_LimitRange(sValue,MinValue,MaxValue){

	if (sValue < MinValue){
		sValue = MinValue;}
	else if (sValue > MaxValue){
		sValue = MaxValue;}

	return (sValue);
}

// #################################################################################
// ID3ASP_LockKey
// #################################################################################
function ID3ASP_LockKey(sRegExp){
	var rCompareExp = new RegExp(sRegExp);
	var sChar = String.fromCharCode(event.keyCode);

	if (sChar.search(sRegExp) < 0){
		return(false);
	}
	return(true);
}


// #################################################################################
// ID3ASP_NumberBox
// #################################################################################
function ID3ASP_NumberBox(obj){
	if (isNaN(obj.value) != true){
		switch (event.keyCode){
			case 33:
				obj.value = Number(obj.value) + 10;
				break;
			case 38:
				obj.value = Number(obj.value) + 1;
				break;
			case 34:
				obj.value = Number(obj.value) - 10;
				break;
			case 40:
				obj.value = Number(obj.value) - 1;
				break;
			default:
				return(true);
				break;
		}
	}
	else{
		obj.value = 0;
	}

	return(false);
}

// #################################################################################
// ID3ASP_OffsetVisibility
// #################################################################################
function ID3ASP_OffsetVisibility(obj){
	if (obj.tagName == 'BODY'){
		return('visible');
	}

	if ((obj.style.visibility == '') || (obj.style.visibility == 'inherit')){
		return(ID3ASP_OffsetVisibility(obj.parentElement));
	}
	else{
		return (obj.style.visibility)
	}
}

// #################################################################################
// ID3ASP_OpenModalWindow
// #################################################################################
function ID3ASP_OpenModalWindow(sPath,iWidth,iHeight,sRessourcesPath,sExtraAttributes){
	var sReturnValue
	sExtraAttributes = (typeof(sExtraAttributes) == 'undefined')?"status:no":sExtraAttributes;
	sRessourcesPath = (typeof(sRessourcesPath) == 'undefined')?"/ID3ASP/Ressources/":sRessourcesPath;

	//sReturnValue = window.showModalDialog(sRessourcesPath + "ID3ModalWindow.asp?SRC=" + sPath,"","center:yes;help:no;dialogHeight:" + iHeight + "px;dialogWidth:" + iWidth + "px;" + sExtraAttributes)
	sReturnValue = window.showModalDialog(sRessourcesPath + sPath,"","center:yes;help:no;dialogHeight:" + iHeight + "px;dialogWidth:" + iWidth + "px;" + sExtraAttributes)
	return(sReturnValue);
}

function ID3ASP_OpenWindow(URL, WindowName, WindowWidth, WindowHeight,sExtraAttributes) {
	sExtraAttributes = (typeof(sExtraAttributes) == 'undefined')?"scrollbars=yes,resizable=yes,status=no,titlebar=yes,toolbar=no":sExtraAttributes;
	PosX = Math.round(screen.availWidth / 2) - (WindowWidth / 2)
	PosY = Math.round(screen.availHeight / 2) - (WindowHeight / 2) - 20

	popupwin = window.open(URL,WindowName,"directories=no,menubar=no,screenx=" + PosX + ",screeny=" + PosY + ",left=" + PosX + ",top=" + PosY + ",height=" + WindowHeight + ",width=" + WindowWidth + "," + sExtraAttributes )
    popupwin.focus();
    return(popupwin);
}

// #################################################################################
// ID3ASP_PopUpCalendar
// #################################################################################
function ID3ASP_PopUpCalendar(obj,strFieldName,strMonthList,strWeekdayList,strEvents){
	var oNest = obj.document.createElement('DIV');
	oNest.ID = strFieldName + '_CalendarDiv';
	oNest.Name = strFieldName + '_CalendarDiv';
	oNest = obj.document.body.appendChild(oNest);

	if (obj.ID3bObjAttached != true){
		obj.ID3bObjAttached = true;
		obj.ID3CalendarObj = new ID3ASP_CalendarObj(obj,oNest,strFieldName,strMonthList,strWeekdayList,strEvents,'ID3CalendarPopUp');}
	else{
		obj.ID3CalendarObj.Hide();
	}

	oNest = null;
}



// #################################################################################
// ID3ASP_RepeatStr
// #################################################################################
function ID3ASP_RepeatStr(str,iNbRepeat){
	var sNewStr = '';

	for (var i=0;i<iNbRepeat;i++){
		sNewStr += str;
	}

	return (sNewStr);
}



// #################################################################################
// ID3ASP_SelectRange
// #################################################################################
function ID3ASP_SelectRange(iSelStart,iSelStop,obj)
{
	var oTR = obj.createTextRange();

	oTR.moveStart('character',iSelStart);
	oTR.moveEnd('character',iSelStop - obj.value.length);

	oTR.select();
}

// #################################################################################
// ID3ASP_ShowHideSelect
// #################################################################################
function ID3ASP_ShowHideSelect(sVisibility,top,left,width,height)
{
	var arSelect = document.getElementsByTagName("SELECT")
	var oRect = new ID3ASP_RectObj(top,left,width,height)

	for (var i=0;i<arSelect.length;i++){
		if (sVisibility == 'hidden'){
			if (ID3ASP_IsInRect(arSelect[i],oRect)){
				arSelect[i].style.visibility = 'hidden';}
		}
		else{
			arSelect[i].style.visibility = 'inherit';}
	}
}

// #################################################################################
// ID3ASP_ShowTabStrip
// #################################################################################
function ID3ASP_ShowTabStrip(iTabSection,sTabStripName){
	var oTabStripSelectorDiv = ID3ASP.GetElementByID(sTabStripName + '_TabSelectorDiv');
	var oTabStripSelector = ID3ASP.GetElementByName(sTabStripName + '_Button' + iTabSection,oTabStripSelectorDiv);
	var oTabStripPanel = ID3ASP.GetElementByID(sTabStripName + '_Strip' + iTabSection);
	eval("oTabStripSelector.form." + sTabStripName).value = iTabSection;

	//On fait disparaître les autres TabStripPanel du groupe
	var oDivElms = document.getElementsByTagName('DIV');

	for (var i=0;i<oDivElms.length;i++){
		if (String(oDivElms[i].id).indexOf(sTabStripName + '_Strip') == 0 ){
			ID3ASP_HideTabStrip(oDivElms[i]);
		}
	}

	//On fait désactive les boutons
	var oButtonElms = oTabStripSelectorDiv.getElementsByTagName('INPUT');

	for (var i=0;i<oButtonElms.length;i++){
		if (String(oButtonElms[i].name).indexOf(sTabStripName + '_Button') == 0 ){
			oButtonElms[i].className = 'ID3ASP_TabSelector';
		}
	}

	//Activation du bon bouton
	oTabStripSelector.className = 'ID3ASP_TabSelectorActive';

	//On affiche le bon
	oTabStripPanel.style.visibility = '';
	oTabStripPanel.style.position = '';
	oTabStripPanel.style.left = 0;
}

// #################################################################################
// ID3ASP_ToggleClassOff
// #################################################################################
function ID3ASP_ToggleClassOff(obj){
	obj.className = obj.OldClass ;
}



// #################################################################################
// ID3ASP_ToggleClassOn
// #################################################################################
function ID3ASP_ToggleClassOn(obj,sClass){
	obj.OldClass = obj.className;
	obj.className = sClass;
}


// #################################################################################
// ID3ASP_MouseOver / ID3ASP_MouseOut
//##################################################################################
function ID3ASP_MouseOver()
{
	for (var i=0; i<ID3ASP_MouseOver.arguments.length; i+=2) {
		var obj = ID3ASP_MouseOver.arguments[i+1]
		obj.sNormImg = obj.src;
		obj.sOverImg = ID3ASP_MouseOver.arguments[i];
		obj.src = obj.sOverImg;
	}
}

function ID3ASP_MouseOut()
{
	for (var i=0; i<ID3ASP_MouseOut.arguments.length; i++) {

		var obj = ID3ASP_MouseOut.arguments[i]
		obj.src = obj.sNormImg;
	}
}

function ID3ASP_MouseClick()
{
	for (var i=0; i<ID3ASP_MouseClick.arguments.length; i+=2) {
		var obj = ID3ASP_MouseClick.arguments[i+1]
		obj.sClickImg = ID3ASP_MouseClick.arguments[i];
		obj.src = obj.sClickImg;
	}
}

// #################################################################################
// ID3ASP_OptionList
// #################################################################################
function ID3ASP_OptionList(){
	this.values			= new Array();
	this.descriptions	= new Array();

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_OptionList_prototype_called) == 'undefined'){
		_ID3ASP_OptionList_prototype_called = true;

		ID3ASP_OptionList.prototype.Add = Add;
		ID3ASP_OptionList.prototype.GetDescription = GetDescription;
		ID3ASP_OptionList.prototype.ParseList = ParseList;
	}

	function Add(sValue,sDescription){
		this.values[this.values.length] = sValue;
		this.descriptions[this.descriptions.length] = sDescription;
	}

	function GetDescription(sValue,sIfNotFound){

		if (typeof(sIfNotFound) == 'undefined') sIfNotFound = '';

		for (var i=0;i<this.values.lenght;i++){
			if (this.values[i] == sValue){
				return(this.descriptions[i]);
			}
		}

		return(sIfNotFound);
	}

	function ParseList(sList){
		if(typeof(sList) == 'undefined'){
			return(false);
		}

		var aItemList = sList.split("|");
		var aItem
		for (var i=0;i<aItemList.length;i++){
			aItem = aItemList[i].split(":");
			if (aItem.length > 1){
				this.Add(aItem[0],aItem[1]);
			}
			else{
				this.Add(aItemList[i],"*");
			}
		}
	}
}


// #################################################################################
// ID3ASP_ShowLayer / ID3ASP_HideLayer
// #################################################################################
function ID3ASP_ShowLayer(sLayerName){
	var oLyr = ID3ASP.GetElementByID(sLayerName);
	oLyr.style.visibility	= 'inherit';
	oLyr.style.position		= 'static';
	oLyr.style.display		= 'block'
	oLyr.style.left			= 0;
}

function ID3ASP_HideLayer(sLayerName){
	var oLyr = ID3ASP.GetElementByID(sLayerName);
	oLyr.style.visibility	= 'hidden';
	oLyr.style.position		= 'absolute';
	oLyr.style.display		= 'none'
	oLyr.style.left			= -1000;
}

