// #################################################################################
// <SCRIPT>
// ID-3 ASP Library
// Javascript Universal Include File
// (c) 2002 ID-3 Technologies inc. All right reserved
// #################################################################################

// #################################################################################
// ID3ASP_ApplyComboBox
// #################################################################################
function ID3ASP_ApplyCombox(obj){
	//Assure that the obj is loaded properly
	this.obj = obj;

	if (typeof(_ID3ASP_ApplyCombox_prototype_called) == 'undefined'){
		_ID3ASP_ApplyCombox_prototype_called = true;
		ID3ASP_ApplyCombox.prototype.Apply = Apply;
		ID3ASP_ApplyCombox.prototype.Initialize = Initialize;
	}

	function Apply(){
		var obj = this.obj
		var oFrmMask = ID3ASP.GetElementByID(obj.name + '_MaskFrame',obj.parentElement);
		var oList = ID3ASP.GetElementByID(obj.name + '_ListBox',obj.parentElement.parentElement);
		obj.style.height = obj.offsetHeight - 3
		oFrmMask.width = obj.offsetWidth;
		oFrmMask.height = obj.offsetHeight - 2;
		oList.style.width = obj.offsetWidth + 20;

		obj.ID3ASPObj = new ID3ASP_ComboBoxObj(obj,oList)
	}

	function Initialize(){
		var obj = this.obj;
		if (obj.offsetWidth == 0){
			ID3ASP.SetTimeout(this,"Initialize()",100);
		}
		else{
			this.Apply();
		}
	}

	this.Initialize();
}

// #################################################################################
// ID3ASP_ApplyDropDown
// #################################################################################
function ID3ASP_ApplyDropDown(obj){
	obj.ID3DropDownObj = new ID3ASP_DropDownObj(obj);
}

// #################################################################################
// ID3ASP_AutoComplete
// #################################################################################
function ID3ASP_AutoComplete(obj,sList) {
	var aListItems = new Array();
	var oTextRange = obj.createTextRange();
	var sOldValue = obj.value
	var bItemFound = false

	if (((event.keyCode > 47)||(event.keyCode == 39))) {
		sList = new String(sList);
		aListItems = sList.split("|")

		ItemSearch:
		for (var i=0;i<aListItems.length;i++) {
			if (aListItems[i].indexOf(sOldValue,0)==0) {
				obj.value = aListItems[i];
				bItemFound = true;
				break ItemSearch;
		}
	}

		if (bItemFound) {
			oTextRange.moveStart('character',sOldValue.length)
			oTextRange.select();
			// window.setTimeout('lf_EnabledAutoComplete()',300);
		}
	}
}

// #################################################################################
// ID3ASP_BrowseForFile
// #################################################################################
function ID3ASP_BrowseForFile(oDestField,sRoot,sFileTypes,bCanUpload){
	if (sRoot.indexOf(":\\") < 0){
		if (sRoot.indexOf(ID3ASP.appPath) != 0){
			sRoot = ID3ASP.appPath + sRoot;
		}
	}

	var sFilePath = ID3ASP.ShowFileDialog(sRoot,sFileTypes,bCanUpload);
	if (sFilePath != null){
		oDestField.value = sFilePath;
		if (typeof(oDestField.onchange) == "function"){
			oDestField.onchange();
		}
	}
}


// #################################################################################
// ID3ASP_CheckMultiBoxKey
// #################################################################################
function ID3ASP_CheckMultiBoxKeyDown(CurBox, EscapeChar, NextBox){
	if ((typeof(NextBox) != "undefined") && (event.keyCode != 8)&&(event.keyCode != 46)&&(!event.shiftKey)&&(!event.leftShift)&&(event.keyCode != 9)){
		if (CurBox.value.length == CurBox.size){
			NextBox.focus();
		}
		else{
			var intKeyCode = 0;
			var bFocus = false;

			switch(EscapeChar){
				case ".":
					if (event.keyCode == 110) bFocus = true;
					break;
				case " ":
					if (event.keyCode == 32) bFocus = true;
					break;
				case ")":
					if ((event.keyCode == 48) && (event.shiftKey)) bFocus = true;
					break;
				case "(":
					if ((event.keyCode == 57) && (event.shiftKey)) bFocus = true;
					break;
				case "-":
					if ((event.keyCode == 189) || (event.keyCode == 109)) bFocus = true;
					break;
				case "+":
					if ((event.keyCode == 107) || ((event.keyCode == 187)&&(event.shiftKey))) bFocus = true;
					break;
				case "=":
					if (event.keyCode == 187)  bFocus = true;
					break;
			}

			if (bFocus){
				NextBox.focus();
			}
		}
	}
}

function ID3ASP_CheckMultiBoxKeyUp(CurBox, EscapeChar, NextBox){
}

// ##################################################################################
// ID3ASP_ChangeComboText
// ##################################################################################
function ID3ASP_ChangeComboText(objSrc){
	var sFieldName = objSrc.name.substring(0,objSrc.name.lastIndexOf('_'));

	var oCboText = ID3ASP.GetElementByID(sFieldName,objSrc.parentElement)

	if (objSrc.value != "#NULL#"){
		oCboText.value = objSrc.value;
	}
	else{
		oCboText.value = "";
	}
}

// #################################################################################
// ID3ASP_ComboBoxObj
// #################################################################################
function ID3ASP_ComboBoxObj(Obj,ListObj)
{
	this.Parent		= Obj;
	this.List		= ListObj
	this.NewValue	= String();
	this.OldValue	= String();
	this.UniqueID	= Obj.uniqueID;

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_ComboBoxObj_prototype_called) == 'undefined'){
		_ID3ASP_ComboBoxObj_prototype_called = true;

		ID3ASP_ComboBoxObj.prototype.Search = Search;
		ID3ASP_ComboBoxObj.prototype.SetValue = SetValue;
		ID3ASP_ComboBoxObj.prototype.UpdateFromList = UpdateFromList;

		//Event
		ID3ASP_ComboBoxObj.prototype.ClassInit = ClassInit;
		ID3ASP_ComboBoxObj.prototype.KeyDown = KeyDown;
		ID3ASP_ComboBoxObj.prototype.KeyUp = KeyUp;
	}

	function Search(sValue){
		var bItemFound = false;
		var oSL = new ID3ASP_SelectListObj(this.List);

		ItemSearch:
		for (var i=0;i<oSL.Count;i++){
			if (oSL.Items(i).value.indexOf(sValue,0)==0){
				this.NewValue = oSL.Items(i).value;
				oSL.SelectIndex(i);
				bItemFound = true;
				break ItemSearch;
			}
		}

		return(bItemFound);
	}

	function SetValue(sValue){
		if (sValue == "#NULL#"){
			this.Parent.value = "";
		}
		else{
			this.Parent.value = sValue;
		}
	}

	function UpdateFromList(){
		var oSL = new ID3ASP_SelectListObj(this.List)

		if (oSL.SelectedIndex == -1){
			oSL.SelectIndex(0);}

		this.Parent.value = oSL.Value;

	}

	//EVENT
	function ClassInit(){
	}


	function KeyUp(){
		var oSL	= new ID3ASP_SelectListObj(this.List)

		if (event.keyCode > 47){
			if (this.Search(this.Parent.value)){
				this.OldValue	= this.Parent.value;
				this.Parent.value = this.NewValue;
				ID3ASP_SelectRange(this.OldValue.length,this.Parent.value.length,this.Parent);
			}
			else{
				oSL.DeselectAll();
				return(false);
			}

		}
		oSL = null;
		return(true);
	}

	function KeyDown(){
		var bReturn = false;

		switch (event.keyCode){
			case 38: // Up
				if (this.Search(this.Parent.value)){
					if (this.List.selectedIndex > 0){
						this.SetValue(this.List.options[this.List.selectedIndex - 1].value);
					}
				}
				break;
			case 40: // Down
				if (this.Search(this.Parent.value)){
					if (this.List.selectedIndex < (this.List.options.length - 1)){
						this.SetValue(this.List.options[this.List.selectedIndex + 1].value);
					}
				}
				break;
			default:
				bReturn = true;
		}

		return(bReturn);
	}
	this.ClassInit();
}

// #################################################################################
// ID3ASP_DropDownObj
// #################################################################################
function ID3ASP_DropDownObj(obj){
	this.Parent = obj;
	this.uniqueID = obj.uniqueID;
	this.KeyStrokes = new String('');
	this.TimeoutObj = null;

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_DropDownObj_prototype_called) == 'undefined'){
		_ID3ASP_DropDownObj_prototype_called = true;

		//Events
		ID3ASP_DropDownObj.prototype.ClassInit = ClassInit;
		ID3ASP_DropDownObj.prototype.KeyDown = KeyDown;
		ID3ASP_DropDownObj.prototype.KeyPress = KeyPress;
		ID3ASP_DropDownObj.prototype.Timeout = Timeout;
	}

	//EVENTS
	function ClassInit(){

	}

	function KeyDown(){
		switch (event.keyCode){
			case 8:		// Backspace
				this.KeyStrokes = '';
				return(false);
				break;
		}

		return(true);
	}

	function KeyPress(){
		var oSL = new ID3ASP_SelectListObj(this.Parent);

		if (this.TimeoutID != null){
			ID3ASP.ClearTimeout(this.TimeoutID);
			this.TimeoutID = null;
		}

		this.KeyStrokes += String.fromCharCode(event.keyCode);

		//Searching the best match
		for (var i=0;i<oSL.Count;i++){
			if (oSL.Items(i).text.toUpperCase().indexOf(this.KeyStrokes.toUpperCase(),0) == 0){
				oSL.SelectIndex(i);
				break;
			}
		}

		this.TimeoutID = ID3ASP.SetTimeout(this,"Timeout()",750)

		oSL = null;

		return(false);
	}

	function Timeout(){
		this.TimeoutID = null;
		this.Parent.onchange();
		this.KeyStrokes = '';
	}

	this.ClassInit();
}

// #################################################################################
// ID3ASP_EventObj
// #################################################################################
function ID3ASP_EventObj(strEventList){
	this.Events = String(strEventList).split('|');

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_EventObj_prototype_called) == 'undefined'){
		_ID3ASP_EventObj_prototype_called = true;
		ID3ASP_EventObj.prototype.GetEvent = GetEvent;
		ID3ASP_EventObj.prototype.FireEvent = FireEvent;
	}

	function GetEvent(sEventName){
		var aEvt;
		var sFuncs = "";

		for (var i=0;i<this.Events.length;i++){
			if (this.Events[i].indexOf('=') >= 0){
				aEvt = this.Events[i].split('=');}
			else{
				aEvt = this.Events[i].split(':');}

			if (aEvt[0].toUpperCase() == sEventName.toUpperCase()){
				sFuncs += aEvt[1] + ";"
			}
		}

		return (sFuncs);
	}

	function FireEvent(sEventName,obj){
		var funcs = this.GetEvent(sEventName).replace('this','obj');
		eval(funcs);
	}
}

function ID3ASP_StringObj(str){
	this.m_strInner = new String(str);

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_StringObj_prototype_called) == 'undefined')
	{
		_ID3ASP_StringObj_prototype_called = true;

		ID3ASP_StringObj.prototype.ToEmail = ToEmail;
		ID3ASP_StringObj.prototype.ToHTTPUrl = ToHTTPUrl;
		ID3ASP_StringObj.prototype.ToIP = ToIP;
		ID3ASP_StringObj.prototype.FindIpPacket = FindIpPacket;
		ID3ASP_StringObj.prototype.ToCreditCardNum = ToCreditCardNum;
		ID3ASP_StringObj.prototype.ToSIN = ToSIN;
		ID3ASP_StringObj.prototype.ToNAPhone = ToNAPhone;
		ID3ASP_StringObj.prototype.ToCAZipCode = ToCAZipCode;
	}

	function ToEmail(){
		if (this.m_strInner.search(/[0-9|a-z|A-Z|\.]+@[0-9|a-z|A-Z|\-]+\.[0-9|a-z|A-Z|\-]+/) < 0){
			return('');
		}
		return(m_strInner.replace(/ /gi,''));
	}

	function ToHTTPUrl(){
		var strNew = '';
		this.m_strInner = this.m_strInner.toLowerCase();

		if(this.m_strInner.indexOf('@') > 0){
			if (this.m_strInner.search(/[0-9|a-z|A-Z|\.]+@[0-9|a-z|A-Z|\-]+\.[0-9|a-z|A-Z|\-]+/) < 0){

				return(strNew);
			}
		}
		else if (this.m_strInner.search(/[0-9|a-z|A-Z|:\/]+\.[0-9|a-z|A-Z|\-]+\.[0-9|a-z|A-Z|\-]+/) < 0) {
			return(strNew);
		}

		if (this.m_strInner.indexOf('://') < 0){
			if(this.m_strInner.indexOf('@') > 0){
				if (this.m_strInner.indexOf('mailto:') < 0){
					strNew = 'mailto:' + this.m_strInner;
				}
			}
			else if (this.m_strInner.indexOf('javascript:') < 0){
				strNew = 'http://' + this.m_strInner;
			}
			else
				strNew = this.m_strInner;
		}
		else{
			strNew = this.m_strInner
		}

		return(strNew.replace(/ /gi,''));
	}

	function ToIP(){
		var strNew = '',strTemp = '';
		var arrPacket = new Array(0,0,0,0);

		if (this.m_strInner.search(/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/) >= 0) {
			return(this.m_strInner)
		}

		this.m_strInner = this.m_strInner.replace(/\./gi,'').substr(0,12);

		if (isNaN(this.m_strInner) == false){
			for (var iPacket = 0;iPacket<4;iPacket++){
				arrPacket[iPacket] = FindIpPacket(this.m_strInner.substr(strTemp.length),iPacket + 1);
				strTemp += arrPacket[iPacket];
			}

			strNew = arrPacket[0] + '.' + arrPacket[1] + '.' + arrPacket[2] + '.' + arrPacket[3]
		}

		return(strNew);
	}

	function FindIpPacket(str,index){
		if (str.charAt(0) == '0'){
			return('0');
		}

		if ( str.length >= (7-index) ){
			if (Number(str.substr(0,3)) > 255)
				return('255');
			else
				return(str.substr(0,3));
		}

		if ( str.length == (6-index) ){
			return(str.substr(0,2));
		}

		return(str.substr(0,1));

	}

	function ToCreditCardNum(){
		var strNew = '';
		this.m_strInner = this.m_strInner.replace(/ /gi,'').substr(0,16);

		if (isNaN(this.m_strInner) == false){
			for (var i=1;i<=this.m_strInner.length;i++){
				strNew += this.m_strInner.charAt(i-1);
				if ( (i % 4) == 0){
					strNew += ' ';
				}
			}
		}

		return(strNew)
	}

	function ToSIN(){
		var strNew = '';
		this.m_strInner = this.m_strInner.replace(/ /gi,'').substr(0,9);

		if (isNaN(this.m_strInner) == false){
			for (var i=1;i<=this.m_strInner.length;i++){
				strNew += this.m_strInner.charAt(i-1);
				if ( (i % 3) == 0){
					strNew += ' ';
				}
			}
		}

		return(strNew)
	}

	function ToNAPhone(){
		var strNew = '';
		var bLongNum = true;

		this.m_strInner = this.m_strInner.replace(/[()\.\-#p ]/gi,'');

		if ((this.m_strInner.length <= 7) || ( (this.m_strInner.length>7)&&(this.m_strInner.length<10) ) ){
			bLongNum = false;
		}

		if (this.m_strInner.length == 7){
			if (isNaN(this.m_strInner)){
				return('');
			}
		}
		else if (this.m_strInner.length > 7){
			if (isNaN(this.m_strInner.substr(0,10))){
				return('');
			}
		}
		else{
			return('');
		}

		for (var i=0;i<this.m_strInner.length;i++){
			switch (i){
				case 0:
					if (bLongNum)
						strNew += '(';
					break;
				case 3:
					if (bLongNum){
						strNew += ') ';
					}
					else{
						strNew += '-';
					}
					break;
				case 6:
					if (bLongNum)
						strNew += '-';
					break;
				case 7:
					if(bLongNum == false)
						strNew += ' #';
					break;
				case 10:
					strNew += ' #';
					break;
			}
			strNew += this.m_strInner.charAt(i);
		}
		return(strNew)
	}

	function ToCAZipCode(){
		var strNew = '';

		this.m_strInner = this.m_strInner.toUpperCase();
		this.m_strInner = this.m_strInner.replace(/ /,'');

		for (var i=1;i <= this.m_strInner.length;i++){
			if (i == 4){
				strNew += ' ';
			}

			if ((i % 2) == 0){
				if (isNaN(this.m_strInner.charAt(i-1)) == false) {
					strNew += this.m_strInner.charAt(i-1)
				}
				else
					return('');
			}
			else{
				if (isNaN(this.m_strInner.charAt(i-1))) {
					strNew += this.m_strInner.charAt(i-1)
				}
				else
					return('');
			}
		}
		return(strNew)
	}
}

// #################################################################################
// ID3ASP_SelectListObj
// #################################################################################
function ID3ASP_SelectListObj(oRef)
{
	this.Ref = oRef;
	this.SelectedIndex = (oRef.selectedIndex == 'undefined')?-1:oRef.selectedIndex;
	this.Count = oRef.length;

	if (this.SelectedIndex >= 0)
	{
		this.Value = oRef[this.SelectedIndex].value;
		this.Text = oRef[this.SelectedIndex].text;
	}

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_SelectListObj_prototype_called) == 'undefined')
	{
		_ID3ASP_SelectListObj_prototype_called = true;

		ID3ASP_SelectListObj.prototype.AddItem = AddItem;
		ID3ASP_SelectListObj.prototype.DelItem = DelItem;
		ID3ASP_SelectListObj.prototype.DeselectAll = DeselectAll;
		ID3ASP_SelectListObj.prototype.DelSelected = DelSelected;
		ID3ASP_SelectListObj.prototype.SelectAll = SelectAll;
		ID3ASP_SelectListObj.prototype.SelectIndex = SelectIndex;
		ID3ASP_SelectListObj.prototype.GetIndex = GetIndex;
		ID3ASP_SelectListObj.prototype.Items = Items;
	}

	function AddItem(sKey,sText)
	{
		this.Ref.options[this.Count] = new Option(sKey,sText);
	}

	function DelItem(sText)
	{
		this.Ref.options[this.GetIndex(sText)] = null;
	}

	function DelSelected()
	{
		this.DelItem(this.Text);
	}

	function Items(index)
	{
		return(this.Ref.options[index])
	}

	function SelectAll()
	{
		var i;

		for (i=0;i<this.Count;i++)
		{
			this.Ref.options[i].selected = true;
		}
	}

	function DeselectAll()
	{
		var i;

		for (i=0;i<this.Count;i++)
		{
			this.Ref.options[i].selected = false;
		}

		this.Ref.selectedIndex = 0;
		this.Ref.selectedIndex = -1;
	}

	function SelectIndex(index)
	{
		this.DeselectAll();

		this.Ref.options[index].selected = true;
		this.SelectedIndex = this.Ref.selectedIndex;
		this.Value = this.Ref.options[index].value
		this.Text = this.Ref.options[index].text
	}

	function GetIndex(sKey)
	{
		var iIndex = 0;

		while ( (iIndex < this.Count) && (this.Ref.options[iIndex].text != sKey) )
		{
			iIndex++;
		}

		return(iIndex);
	}
}

// ################################################################################
// ID3ASP_HTMLArea
// ################################################################################
function ID3ASP_ApplyHTMLObj(strFieldName,sCSS,sMode,sEditable){
	var obj = new ID3ASP_HTMLAreaObj(strFieldName,sCSS,sMode,sEditable);

	obj = null;
}

function ID3ASP_HTMLAreaObj(strFieldName,sCSS,sMode,sEditable){
	this.colorPalette;
	this.currentColorPicker;
	this.currentCSS			= sCSS;
	this.editBoxElm			= ID3ASP.GetElementByID(strFieldName + "_HTMLFrame");
	this.editDocumentElm	= this.editBoxElm.contentWindow.document;
	this.mode				= sMode;
	this.selection;
	this.valueElm			= ID3ASP.GetElementByID(strFieldName);
	this.fieldName			= strFieldName;
	this.editable			= sEditable;

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_HTMLAreaObj_prototype_called) == 'undefined'){
		_ID3ASP_HTMLAreaObj_prototype_called = true;

		ID3ASP_HTMLAreaObj.prototype.AddHR			= AddHR;
		ID3ASP_HTMLAreaObj.prototype.AddHTML		= AddHTML
		ID3ASP_HTMLAreaObj.prototype.AddImage		= AddImage;
		ID3ASP_HTMLAreaObj.prototype.AddTable		= AddTable;
		ID3ASP_HTMLAreaObj.prototype.Copy			= Copy;
		ID3ASP_HTMLAreaObj.prototype.Cut			= Cut;
		ID3ASP_HTMLAreaObj.prototype.GetSelection	= GetSelection;
		ID3ASP_HTMLAreaObj.prototype.Paste			= Paste;
		ID3ASP_HTMLAreaObj.prototype.SelectText		= SelectText;

		ID3ASP_HTMLAreaObj.prototype.SaveValue		= SaveValue;
		ID3ASP_HTMLAreaObj.prototype.SetBgColor		= SetBgColor;
		ID3ASP_HTMLAreaObj.prototype.SetBold		= SetBold;
		ID3ASP_HTMLAreaObj.prototype.SetColor		= SetColor;
		ID3ASP_HTMLAreaObj.prototype.SetCSS			= SetCSS;
		ID3ASP_HTMLAreaObj.prototype.SetFgColor		= SetFgColor;
		ID3ASP_HTMLAreaObj.prototype.SetFontName	= SetFontName;
		ID3ASP_HTMLAreaObj.prototype.SetFontSize	= SetFontSize;
		ID3ASP_HTMLAreaObj.prototype.SetInnerHTML	= SetInnerHTML;
		ID3ASP_HTMLAreaObj.prototype.SetItalic		= SetItalic;
		ID3ASP_HTMLAreaObj.prototype.SetJustify		= SetJustify;
		ID3ASP_HTMLAreaObj.prototype.SetLink		= SetLink;
		ID3ASP_HTMLAreaObj.prototype.SetList		= SetList;
		ID3ASP_HTMLAreaObj.prototype.SetMode		= SetMode;
		ID3ASP_HTMLAreaObj.prototype.SetSuperscript	= SetSuperscript;
		ID3ASP_HTMLAreaObj.prototype.SetTag			= SetTag;
		ID3ASP_HTMLAreaObj.prototype.SetTextIndent	= SetTextIndent;
		ID3ASP_HTMLAreaObj.prototype.SetUnderline	= SetUnderline;
		ID3ASP_HTMLAreaObj.prototype.ShowColorPalette	= ShowColorPalette;

		//EVENTS
		ID3ASP_HTMLAreaObj.prototype.onClassInit	= onClassInit;
		ID3ASP_HTMLAreaObj.prototype.onKeyDown		= onKeyDown;
	}

	function AddHR(){
		var oSel = this.GetSelection();
		if (this.mode == 'html'){
			oSel.pasteHTML("<HR>");
		}
		else{
			var sText = "<hr>";
			oSel.text = sText;
			this.SelectText(sText)
		}
	}

	function AddHTML(sText){
		var oSel = this.GetSelection();
		if (this.mode == 'html'){
			oSel.pasteHTML(sText);
		}
		else{
			oSel.text = sText;
			this.SelectText(sText);
		}
	}

	function AddImage(sRootPath,sLang){
		var oImg
		var oSel = this.GetSelection();
		var sFileTypeList
		var sImageHTML
		sLang = (typeof(sLang) == 'undefined')?ID3ASP.lang:sLang;
		oImg = ID3ASP.ShowModal("ID3HTML_AddImage.asp?Lang=" + sLang + "&Root=" + escape(sRootPath),485,340,"status:no;scroll:no");

		if (oImg != null){
			if (this.mode == 'html'){
				oSel.pasteHTML(oImg.outerHTML);
			}
			else{
				var sText = oImg.outerHTML;
				oSel.text = sText;
				this.SelectText(sText);
			}
		}
	}

	function AddTable(sLang){
		var oSel = this.GetSelection();
		var sTableHTML
		sLang = (typeof(sLang) == 'undefined')?ID3ASP.lang:sLang;

		sTableHTML = ID3ASP.ShowModal("ID3HTML_AddTable.asp?Lang=" + sLang,485,200,"status:no;scroll:no");

		if (sTableHTML != null){
			if (this.mode == 'html'){
				oSel.pasteHTML(sTableHTML);
			}
			else{
				var sText = sTableHTML;
				oSel.text = sText;
				this.SelectText(sText);
			}
		}
	}

	function Copy(){
		var oSel = this.GetSelection();
		oSel.execCommand('Copy');
	}

	function Cut(){
		var oSel = this.GetSelection();
		oSel.execCommand('Cut');
	}

	function GetSelection(){
		if (this.mode == 'html'){
			this.editDocumentElm.body.focus();
			return(this.editDocumentElm.selection.createRange());
		}
		else{
			this.valueElm.focus();
			return(document.selection.createRange());
		}
	}

	function Paste(){
		var oSel = this.GetSelection();
		oSel.execCommand('Paste');
	}

	function SelectText(sText){
		var oRange;
		if (this.mode == 'html'){
			this.editDocumentElm.body.focus();
			oRange = this.editDocumentElm.body.createTextRange();
		}
		else{
			this.valueElm.focus();
			oRange = this.valueElm.createTextRange();
		}

		oRange.findText(sText);
		oRange.select();
	}

	function SaveValue(){
		this.valueElm.value = this.editDocumentElm.body.innerHTML;
	}

	function SetBgColor(sColor){
		this.selection.select();
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			this.selection.execCommand('BackColor',false,sColor);}
		else{
			var sText = "<font style='background-color:" + sColor + "'>" + oSel.text + "</font>"
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function SetBold(){
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			oSel.execCommand('Bold');}
		else{
			var sText = "<b>" + oSel.text + "</b>"
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function SetColor(sColor,sType){
		this.selection = this.GetSelection();

		switch (sType){
			case "fgColor":
				this.SetFgColor(sColor);
				break;
			case "bgColor":
				this.SetBgColor(sColor);
				break;
		}
	}

	function SetCSS(sNewCSS){
		if (this.mode == 'html'){
			this.editDocumentElm.body.focus();
			oLink = this.editDocumentElm.documentElement.getElementsByTagName('LINK')
			oLink[0].href = sNewCSS;
		}
	}

	function SetFgColor(sColor){
		var oSel = this.GetSelection()
		this.selection.select();
		if (this.mode == 'html'){
			this.selection.execCommand('ForeColor',false,sColor);}
		else{
			var sText = "<font color='" + sColor + "'>" + oSel.text + "</font>"
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function SetFontName(sFontName){
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			oSel.execCommand('FontName',false,sFontName);
		}
		else{
			var sText = "<font face=" + sFontName + "'>" + oSel.text + "</font>"
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function SetFontSize(iSize){
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			oSel.execCommand('FontSize',false,iSize);
		}
		else{
			var sText = "<font size=" + iSize + "'>" + oSel.text + "</font>"
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function SetInnerHTML(sInnerHTML){
		this.editDocumentElm.body.innerHTML = sInnerHTML;
	}

	function SetItalic(){
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			oSel.execCommand('Italic');}
		else{
			var sText = "<i>" + oSel.text + "</i>"
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function SetJustify(sJustify){
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			if (sJustify.toLowerCase() == 'justify'){
				var sText = oSel.text
				var sHTML = "<P align='" + sJustify + "'>" + sText + "</P>"
				oSel.pasteHTML(sHTML);
				this.SelectText(sText)
			}
			else{
				oSel.execCommand('Justify' + sJustify);
			}
		}
		else{
			var sText = "<P align='" + sJustify + "'>" + oSel.text + "</P>"
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function SetLink(sLinkRootPath, sImageRootPath,sLang){
		var oSel = this.GetSelection()
		sLang = (typeof(sLang) == 'undefined')?ID3ASP.lang:sLang;

		var sLnk = ID3ASP.ShowModal('ID3HTML_AddLink.asp?Lang=' + sLang + '&Text=' + oSel.text + "&LinkRoot=" + sLinkRootPath + "&ImageRoot=" + sImageRootPath,485,325,"scroll:no;status:no")
		if (sLnk != null){
			if (this.mode == 'html'){
				oSel.pasteHTML(sLnk)
			}
			else{
				var sText = sLnk
				oSel.text =	sText
				this.SelectText(sText)
			}
		}
	}

	function SetList(bOrdered){
		var sOrdering = "InsertUnorderedList";

		if (bOrdered){
			sOrdering = "InsertOrderedList";
		}
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			oSel.execCommand(sOrdering);
		}
	}

	function SetMode(sMode){
		if (sMode == 'html'){
			ID3ASP_ShowLayer(this.fieldName + '_HTMLFrameDiv');
			ID3ASP_HideLayer(this.fieldName + '_CODEFrameDiv');
			}
		else {
			ID3ASP_ShowLayer(this.fieldName + '_CODEFrameDiv');
			ID3ASP_HideLayer(this.fieldName + '_HTMLFrameDiv');
			}
		this.mode = sMode;
		this.GetSelection();
	}

	function SetSuperscript(){
		var oSel = this.GetSelection()
		var sText = oSel.text
		var sHTML = "<SUP>" + sText + "</SUP>"
		oSel.pasteHTML(sHTML);
		this.SelectText(sText)
	}

	function SetTag(sTag){
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			oSel.execCommand('FormatBlock',false,sTag);
		}
		else{
			var sText = sTag + oSel.text + sTag.replace("<","</")
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function SetTextIndent(bIndent){
		var sIndent = "Outdent";

		if (bIndent){
			sIndent = "Indent";
		}
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			oSel.execCommand(sIndent);
		}
	}

	function SetUnderline(){
		var oSel = this.GetSelection()

		if (this.mode == 'html'){
			oSel.execCommand('Underline');
		}
		else{
			var sText = "<U>" + oSel.text + "</U>"
			oSel.text = sText
			this.SelectText(sText)
		}
	}

	function ShowColorPalette(objSrc, sColorType, sFieldName){
		var sCurrentColor = objSrc.style.backgroundColor;
		var sNewColor = ID3ASP.ShowColorDialog(sCurrentColor);
		if (sNewColor != null){
			objSrc.style.backgroundColor = sNewColor;
			this.SetColor(sNewColor,sColorType);
		}
	}

	//Events
	function onClassInit(){
		this.editDocumentElm.write("<HTML><HEAD><LINK REL='stylesheet' TYPE='text/css' HREF='" + this.currentCSS + "'></HEAD>");
		this.editDocumentElm.write("<BODY>" + this.valueElm.value + "</BODY></HTML>");
		this.editDocumentElm.designMode = this.editable;
		this.editBoxElm.ID3ASPObj = this;
		this.valueElm.ID3ASPObj = this;
		this.editDocumentElm = this.editBoxElm.contentWindow.document;
	}

	function onKeyDown(){
		var sKeyCode = window.event.keyCode
		var oSel = this.GetSelection();
		switch (sKeyCode){
			case 9:
				oSel.text = String.fromCharCode(sKeyCode);
				return(false);
				break;
		}

	}

	this.onClassInit()
}


function ID3ASP_IsInRect(obj,oRect){
	obj.style.position = 'relative';
	obj.style.top=0;
	obj.style.left = 0;

	var objZone = new ID3ASP_RectObj(obj.offsetTop,obj.offsetLeft,obj.offsetWidth,obj.offsetHeight)

	if (oRect.IsOver(objZone)){
		return(true);
	}

	if (objZone.IsOver(oRect)){
		return(true);
	}

	return(false);
}

function ID3ASP_RectObj(top,left,width,height){
	this.Coord = new Array();
	this.top	= Number(String(top).replace('px',''));
	this.left	= Number(String(left).replace('px',''));
	this.width	= Number(String(width).replace('px',''));
	this.height	= Number(String(height).replace('px',''));


	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_RectObj_prototype_called) == 'undefined'){
		_ID3ASP_RectObj_prototype_called = true;

		ID3ASP_RectObj.prototype.IsIn = IsIn;
		ID3ASP_RectObj.prototype.IsOver = IsOver;
		ID3ASP_RectObj.prototype.IsTrought = IsTrought;

		//Event
		ID3ASP_RectObj.prototype.ClassInit = ClassInit;
	}

	function IsIn(coordPoint){
		var iX = coordPoint[1];
		var iY = coordPoint[0];

		if ((iY > this.Coord[0][0]) && (iX > this.Coord[0][1]) && (iY < this.Coord[3][0]) && (iX < this.Coord[3][1]) ){
			return (true);
		}

		return(false);
	}

	function IsOver(oRect){
		//Check if one of the point is in the rect
		for (var i=0;i<4;i++){
			if (this.IsIn(oRect.Coord[i])){
				return(true);
			}
		}

		//Check if one side pass trought the rect
		for (i=0;i<4;i++){
			if (this.IsTrought(oRect.Coord[i],oRect.Coord[(i+1)%4])){
				return(true);
			}
		}


		return(false)
	}

	function IsTrought(coordPointA,coordPointB){
		//Check orientation
		if (coordPointA[1] == coordPointB[1]){	//This is a vert. line
			if ((this.Coord[0][1] < coordPointA[1]) && (this.Coord[1][1] > coordPointA[1])) {
				if ( (this.Coord[0][0] >= coordPointA[0]) && (this.Coord[2][0] <= coordPointB[0]) )
					return(true);
			}
		}
		else{
			if ((this.Coord[0][0] < coordPointA[0]) && (this.Coord[2][0] > coordPointA[0])) {
				if ( (this.Coord[0][1] >= coordPointA[1]) && (this.Coord[1][1] <= coordPointB[1]) ){
					return(true);}
			}
		}

		return (false);
	}

	// EVENTS
	function ClassInit(){
		//Création de l'architecture de coord.
		for (var i = 0;i<4;i++){
			this.Coord[i] = new Array();
		}

		//Mise en place des valeurs des coord.
		// Top-Left
		this.Coord[0][0]	= this.top;					//y
		this.Coord[0][1]	= this.left;				//x
		// Top-Right
		this.Coord[1][0]	= this.top;
		this.Coord[1][1]	= this.left + this.width;
		// Bottom-Left
		this.Coord[2][0]	= this.top + this.height;
		this.Coord[2][1]	= this.left;
		// Bottom-Right
		this.Coord[3][0]	= this.top + this.height;
		this.Coord[3][1]	= this.left + this.width;
	}

	this.ClassInit();
}


function ID3ASP_PopulateDropDown(objDropDown,sOL){
	var oOptList = new ID3ASP_OptionList();
	var iNbItem;
	oOptList.ParseList(sOL);
	if (oOptList.values.length > 0){
		for (var i=0;i<objDropDown.options.length;i++){
			if (typeof(oOptList.values[i]) != 'undefined'){
				if (oOptList.descriptions[i] != '*'){
					objDropDown.options[i] = new Option(oOptList.descriptions[i],oOptList.values[i]);
				}
				else{
					objDropDown.options[i] = new Option(oOptList.values[i],oOptList.values[i])
				}
			}
			else{
				objDropDown.options[i] = null;
			}
			iNbItem = i;
		}
		if (oOptList.values.length > iNbItem){
			for (var i=0;i<oOptList.values.length;i++){
				if (oOptList.descriptions[i] != '*'){
					objDropDown.options[i] = new Option(oOptList.descriptions[i],oOptList.values[i]);
				}
				else{
					objDropDown.options[i] = new Option(oOptList.values[i],oOptList.values[i])
				}
			}
		}
	}
}

// ----------------------------------------
// ID3ASP_TimeoutObj
// ----------------------------------------
function ID3ASP_TimeoutObj(){
	this.objects	= new Array();
	this.methods	= new Array();

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_TimeoutObj_prototype_called) == 'undefined'){
		_ID3ASP_TimeoutObj_prototype_called = true;

		ID3ASP_TimeoutObj.prototype.Add = Add;
		ID3ASP_TimeoutObj.prototype.Remove = Remove;
		ID3ASP_TimeoutObj.prototype.Execute = Execute;
	}

	function Add(obj,sMethod){
		var id = this.objects.length;

		for (var i=0;i<this.objects.length;i++){
			if (this.objects[i] == null){
				id = i;
				break;
			}
		}

		this.objects[id] = obj;
		this.methods[id] = sMethod;

		return(id);
	}

	function Remove(id){
		var iCount = 0;

		this.objects[id] = null;
		this.methods[id] = null;

		for (var i=0;i<this.objects.length;i++){
			if (this.objects[i] != null){
				iCount++;
			}
		}

		if (iCount == 0){
			this.objects = new Array();
			this.methods = new Array();
		}
	}

	function Execute(id){
		if ((typeof(this.objects[id]) == "object") && (this.objects[id] != null) ){
			eval('this.objects[id].' + this.methods[id]);
			this.Remove(id);
		}
	}
}

//############################################################################################

//############################################################################################
// FormObj
//############################################################################################
function ID3ASP_FormObj(){
	this.items = new Array();
	this.name;
	this.action;
	this.method;

	//Déclaration des méthodes de l'objet
	if (typeof(_ID3ASP_FormObj_prototype_called) == 'undefined'){
		_ID3ASP_FormObj_prototype_called = true;

		ID3ASP_FormObj.prototype.GetItem = GetItem;
		ID3ASP_FormObj.prototype.IsValidFormItem = IsValidFormItem;
		ID3ASP_FormObj.prototype.ParseDoc = ParseDoc;
		ID3ASP_FormObj.prototype.ReOrderTabIndex = ReOrderTabIndex;
		ID3ASP_FormObj.prototype.ToNextField = ToNextField;
		ID3ASP_FormObj.prototype.ToPreviousField = ToPreviousField;

		ID3ASP_FormObj.prototype.Initialize = Initialize;
	}

	//GetItem
	function GetItem(sItemName){

	}

	//IsValidFormItem
	function IsValidFormItem(oItem){
		if (typeof(oItem) != 'undefined'){
			switch (String(oItem.tagName).toLowerCase()){
				case 'input':
				case 'select':
				case 'textarea':
					if (oItem.tabIndex > 0){
						return(true);
					}
					break
			}
		}
		return(false);
	}

	//ParseDoc
	function ParseDoc(oParent){
		if (oParent!=null){
			var oChild = oParent.childNodes;

			for (var i=0;i<oChild.length;i++){
				if ( this.IsValidFormItem(oChild[i]) ){
					this.items[this.items.length] = oChild[i];
				}
				else{
					if (oChild[i].hasChildNodes()){
						this.ParseDoc(oChild[i]);
					}
				}
			}
		}
		return (null);
	}

	//ReOrderByTabIndex use by this.items.sort()
	function ReOrderTabIndex(){

		this.items = this.items.sort(ReOrder);

		function ReOrder(oItem1,oItem2){
			if (oItem1.tabIndex < oItem2.tabIndex)
				return(-1);
			if (oItem1.tabIndex > oItem2.tabIndex)
				return(1);

			return(0)
		}
	}


	//ToNextField
	function ToNextField(obj){
		var iTabIndex = obj.tabIndex
		var oPotItem = null;
		if (this.items.length == 0){
			this.Initialize(document.body);
		}

		for(var i=0;i<this.items.length;i++){
			//Validation of a potential item
			if (iTabIndex > 0){
				if (this.items[i].tabIndex > iTabIndex){
					oPotItem = this.items[i];
				}//if
			}//if
			else{
				if( this.items[i] == obj){
					if ((i + 1)<this.items.length){
						oPotItem = this.items[i+1];
					}//if
					else{
						oPotItem = this.items[0];
					}//else
				}//if
			}//else

			if (oPotItem != null){
				if (oPotItem.disabled==false &&
					oPotItem.type!='hidden' &&
					ID3ASP_OffsetVisibility(oPotItem) != 'hidden'){

					oPotItem.focus();
					return(oPotItem);
				}//if
			}//if
		}//for

		return(null);
	}//function

	//toPreviousField
	function ToPreviousField(obj){
		var iTabIndex = obj.tabIndex
		var oPotItem = null;
		if (this.items.length == 0){
			this.Initialize();
		}

		for(var i=this.items.length - 1;i>=0;i--){
			//Validation of a potential item
			if (iTabIndex > 0){
				if (this.items[i].tabIndex < iTabIndex){
					oPotItem = this.items[i];
				}//if
			}//if
			else{
				if( this.items[i] == obj){
					if ((i - 1)>=0){
						oPotItem = this.items[i-1];
					}//if
					else{
						oPotItem = this.items[this.items.length];
					}//else
				}//if
			}//else

			if (oPotItem != null){
				if (oPotItem.disabled==false &&
					oPotItem.type!='hidden' &&
					ID3ASP_OffsetVisibility(oPotItem) != 'hidden'){

					oPotItem.focus();
					return(oPotItem);
				}//if
			}//if
		}//for
		return(null)
	}

	//Event
	function Initialize(){
		this.ParseDoc(document.body);
		this.ReOrderTabIndex();
	}

	this.Initialize();
}

//############################################################################################

var ID3ASP = new ID3ASP_GenObj();
