	VIEW_TEXT = "1";
	VIEW_SIMPLELIST = "2";
	VIEW_MULTIPLELIST = "3";
	VIEW_CHOICE = "4";
	
	
	
	/*-----------------------------------------*/
	/* CRITERIA MANAGER COLLECTION OBJECT 	   */
	/*-----------------------------------------*/	
	function CriteriaManagerCollectionDef()
	{
		var _listCriteriaManager = new Collection();
		
		this.FindCriteriaManager = FindCriteriaManager;
		this.AddCriteriaManager = AddCriteriaManager;
		this.RemoveCriteriaManager = RemoveCriteriaManager;
		this.FindCriteriaManagerById = FindCriteriaManagerById;
	
		function FindCriteriaManagerById(Id)
		{
			var i;
			for( i=0; i<_listCriteriaManager.Count(); i++ )
			{
				if( _listCriteriaManager.Item(i).id == Id )
					return _listCriteriaManager.Item(i);
			}
			return null;
		}		

		function FindCriteriaManager(Index)
		{
			if (isNaN(Index))
			{
				var i;
				for( i=0; i<_listCriteriaManager.Count(); i++ )
				{
					if( _listCriteriaManager.Item(i).id == Index )
						return i;
				}
				return -1;
			}
			else
			{
				if( Index < 0 || Index >= _listCriteriaManager.Count() )
					return -1;
				else
					return Index;
			}
		}

		function CriteriaManager(Index)
		{
			var CriteriaManagerIndex;
			CriteriaManagerIndex = FindCriteriaManager(Index);
			if (CriteriaManagerIndex >= 0)
				return _listCriteriaManager.Item(CriteriaManagerIndex);
			else
				return null;
		}

		function AddCriteriaManager(WebpartQualifier, DocumentQualifier, URLSuffix, url, iEditMode, fCreateIFrame,objDocument)
		{
			var CMIndex;
			var NewCM;
			
			
			CMIndex = FindCriteriaManager(DocumentQualifier);
			
			if (CMIndex >= 0)
				return null;
			
			NewCM = new CriteriaManagerDef(WebpartQualifier,DocumentQualifier, URLSuffix, url, iEditMode, fCreateIFrame,objDocument);
			
			_listCriteriaManager.Add(NewCM);
			this.Count = _listCriteriaManager.Count();
			
			return NewCM;
		}

		function RemoveCriteriaManager(Index)
		{
			_listCriteriaManager.Remove(FindCriteriaManager(Index));
			this.Count = _listCriteriaManager.Count();
		}
		
		function ClearCriteriaManager()
		{
			var i;
			for(i=0;i<this.Count;i++)
				RemoveCriteriaManager(i);
		}			
		
	}	
	
	
	
	/*-----------------------------*/
	/* CRITERIA MANAGER OBJECT 	   */
	/*-----------------------------*/	
	function CriteriaManagerDef(WebpartQualifier, DocumentQualifier,URLSuffix,url,iEditMode,fCreateIFrame,objDocument)
	{
		var _listCriteria = new Collection();
		var _listObject = new Collection();
		var _DocumentQualifier = DocumentQualifier;
		var _urlStore = url;
		var _Frame = null;
		var _fCreateIFrame = fCreateIFrame;
		var _EditMode = iEditMode;
		var _Forms = null;
		var _WebpartQualifier = WebpartQualifier;
		var _fLoad = false;
		var _width = null;
		var _height = null;
		var _Document = objDocument;
		
		
		var _Loader = new DocumentLoader("GetCriteriaManager('" + DocumentQualifier + "').Loader", URLSuffix, DocumentQualifier,'ReportContent_' + DocumentQualifier);
		
		//this.Document = objDocument;
		this.Loader = _Loader;
		this.WebpartQualifier = WebpartQualifier;
		this.id = _DocumentQualifier;
		this.URLSuffix = URLSuffix;
		//this.Save = Save;
		this.Criteria = Criteria;
		this.init = init;
		this.AddCriteria = AddCriteria;
		this.ClearCriteria = ClearCriteria;
		this.FindCriteriaById = FindCriteriaById;
		this.FindCriteriaByObjectId = FindCriteriaByObjectId;
		this.FindCriteriaByObjectIdAndOperator = FindCriteriaByObjectIdAndOperator;
		this.ChangeCriteria = ChangeCriteria;
		this.SendCriteria = SendCriteria;
		this.SetGlobalCriteria = SetGlobalCriteria;
		this.Refresh = Refresh;
		this.RefreshIfChanged = RefreshIfChanged;
		this.Reload = Reload;
		this.Count = 0;
		this.RaiseEventCriteria = RaiseEventCriteria;
		this.ClearContent = ClearContent;
		this.GetXml = GetXml;
		
		function ClearContent() {
			if( _Loader ) _Loader.clearContent();
		}
		
		function init()
		{
			/*if( _fCreateIFrame )
			{
				var nameFrame = "__ICriteriaSave" + _DocumentQualifier;
				document.write("<IFRAME ID='" + nameFrame + "' style='display:;' src='blank.html'></IFRAME>"); //
				_Frame = document.frames(nameFrame)
			}*/
		}
		
		function FindCriteriaById(Id)
		{
			var i;
			for( i=0; i<_listCriteria.Count(); i++ )
			{
				if( _listCriteria.Item(i).id == Id )
					return _listCriteria.Item(i);
			}
			return null;
		}		
		
		function FindCriteriaByObjectId(Id)
		{
			var i;
			for( i=0; i<_listCriteria.Count(); i++ )
			{
				if( _listCriteria.Item(i).IdObject == Id )
					return _listCriteria.Item(i);
			}
			return null;
		}			
		
		function FindCriteriaByObjectIdAndOperator(Id,Operator)
		{
			var i;
			for( i=0; i<_listCriteria.Count(); i++ )
			{
				if( _listCriteria.Item(i).IdObject == Id )
				{
					if( _listCriteria.Item(i).Operator == Operator )
					{
						return _listCriteria.Item(i);
					}
					else
					{
						switch(Operator)
						{
							case "=":
								if( _listCriteria.Item(i).Operator == 'IN' ) return _listCriteria.Item(i);
								break;
							case "<>":
								if( _listCriteria.Item(i).Operator == 'NOT IN' ) return _listCriteria.Item(i);
								break;
						}		
					}
				}
			}
			return null;
		}		

		function FindCriteria(Index)
		{
			if (isNaN(Index))
			{
				var i;
				for( i=0; i<_listCriteria.Count(); i++ )
				{
					if( _listCriteria.Item(i).id == Index )
						return i;
				}
				return -1;
			}
			else
			{
				if( Index < 0 || Index >= _listCriteria.Count() )
					return -1;
				else
					return Index;
			}
		}

		function Criteria(Index)
		{
			var CriteriaIndex;
			CriteriaIndex = FindCriteria(Index);
			if (CriteriaIndex >= 0)
				return _listCriteria.Item(CriteriaIndex);
			else
				return null;
		}
		

		function AddCriteria(IDCriteria,IDObject,ViewType,DataType,Listen)
		{
			var oCriteria = null;
			var NewCriteria;
			
			
			oCriteria = FindCriteriaById(IDCriteria);
			
			if (oCriteria != null)
			{
				oCriteria.Value = null;
				return oCriteria;
			}
			
			NewCriteria = new CriteriaDef(IDCriteria,IDObject,ViewType,DataType,Listen);
			
			_listCriteria.Add(NewCriteria);
			this.Count = _listCriteria.Count();
			
			return NewCriteria;
		}

		function RemoveCriteria(Index)
		{
			_listCriteria.Remove(FindCriteria(Index));
			this.Count = _listCriteria.Count();
		}
		
		function ClearCriteria()
		{
			var i;
			for(i=0;i<this.Count;i++)
				RemoveCriteria(i);
			
		}
		
		function GetXml()
		{
			var strXML = '<CriterionList>';
			var i;
			
			for(i=0;i<_listCriteria.Count();i++)
			{
				var oCriteria = _listCriteria.Item(i);
				if( oCriteria.Value != null && oCriteria.IsActivate )
				{
					strXML = strXML + oCriteria.GetXml();
					oCriteria.IsActivate = false;
				}
			}
			strXML = strXML + '</CriterionList>';
			return strXML;
		
		}
		
		function CreateCriteriaForm()
		{
			var oDiv;
			var oInput;
			
			var oDiv = document.createElement('div');
			oDiv.style.display = 'none';
			oDiv.style.width = oDiv.style.height = '0px';
			
			
			//var oForm = document.createElement('form');
			//oForm.method = 'POST';
			//oForm.action = _urlStore;
			var oForm = new Element('FORM',{method:'POST',action:_urlStore});
			
			if( V_KEY_FORM != undefined && V_VALUE_FORM != undefined )
			{
				oInput = new Element('INPUT',{type:"TEXT",name:V_KEY_FORM,value:V_VALUE_FORM});
				oForm.appendChild(oInput);
				try{ Garbage.trash(oInput);} catch(e){}
			}
			
			//oInput = document.createElement('<input type=TEXT name=EditMode>');
			oInput = new Element('INPUT',{type:"TEXT",name:"EditMode",value:(_EditMode?_EditMode:"")});
			//oInput.value = _EditMode;
			oForm.appendChild(oInput);
			try{ Garbage.trash(oInput);} catch(e){}
			
			//oInput = document.createElement('<input type=TEXT name=Cmd>');
			oInput = new Element('INPUT',{type:"TEXT",name:"Cmd",value:""});
			//oInput.value = '';
			oForm.appendChild(oInput);
			try{ Garbage.trash(oInput);} catch(e){}
			
			//oInput = document.createElement('<input type=TEXT name=IdCriteria>');
			oInput = new Element('INPUT',{type:"TEXT",name:"IdCriteria",value:""});
			//oInput.value = '';
			oForm.appendChild(oInput);
			try{ Garbage.trash(oInput);} catch(e){}
			
			//oInput = document.createElement('<input type=TEXT name=DocumentQualifier>');
			oInput = new Element('INPUT',{type:"TEXT",name:"DocumentQualifier",value:_DocumentQualifier});
			//oInput.value = _DocumentQualifier;
			oForm.appendChild(oInput);			
			try{ Garbage.trash(oInput);} catch(e){}
			
			//oInput = document.createElement('<input type=TEXT name=URLSuffix>');
			oInput = new Element('INPUT',{type:"TEXT",name:"URLSuffix",value:URLSuffix});
			//oInput.value = URLSuffix;
			oForm.appendChild(oInput);
			try{ Garbage.trash(oInput);} catch(e){}

			//oInput = document.createElement('<input type=TEXT name=Width>');
			oInput = new Element('INPUT',{type:"TEXT",name:"Width",value:""});
			oForm.appendChild(oInput);
			try{ Garbage.trash(oInput);} catch(e){}
			
			//oInput = document.createElement('<input type=TEXT name=Height>');
			oInput = new Element('INPUT',{type:"TEXT",name:"Height",value:""});
			oForm.appendChild(oInput);										
			try{ Garbage.trash(oInput);} catch(e){}

			//oInput = document.createElement('<input type=TEXT name=xmlProps>');
			oInput = new Element('INPUT',{type:"TEXT",name:"xmlProps",value:""});
			//oInput.value = '';
			oForm.appendChild(oInput);																	
			try{ Garbage.trash(oInput);} catch(e){}
			
			oDiv.appendChild(oForm);
			document.getElementsByTagName('body')[0].appendChild(oDiv);
			try{ Garbage.trash(oForm);} catch(e){}

			return oForm;
			
		}
		
		function SendCriteria(Cmd,IdCriteria)
		{
			var xmlProps = GetXml();
			var frmCriteria;
			if( ! _Forms ) _Forms = CreateCriteriaForm();
			
			/*if( _fCreateIFrame )
			{
				if( typeof(_Frame.document.all.__FRM_CriteriaSave) == "undefined"  )
				{
					var strFrm = "<FORM id='__FRM_CriteriaSave' Method='POST' action='" + _urlStore + "' ><INPUT TYPE='TEXT' NAME='EditMode' VALUE='" + _EditMode + "' ><INPUT TYPE='TEXT' NAME='Cmd' VALUE='' ><INPUT TYPE='TEXT' NAME='IdCriteria' VALUE='' ><INPUT TYPE='TEXT' NAME='DocumentQualifier' VALUE='' ><INPUT TYPE='TEXT' NAME='URLSuffix' VALUE='' ><INPUT TYPE='TEXT' NAME='xmlProps' VALUE=''></FORM>";
					
					_Frame.document.write(strFrm);
				}
				frmCriteria = _Frame.document.all.__FRM_CriteriaSave;
			}
			else
			{
				frmCriteria = getElByID("__FRM_CriteriaSave");	
				frmCriteria.action = _urlStore;
			}			*/
			
			_Forms.Cmd.value = Cmd;
			if (typeof App != 'undefined') _Forms.EditMode.value = App.EditMode?1:0;
			if( typeof(IdCriteria) != "undefined")
				_Forms.IdCriteria.value = IdCriteria;
			
			_Forms.Width.value = ( _width && _width != undefined && _width > 50 )?String(_width):'';
			_Forms.Height.value = ( _height && _height != undefined && _height > 50 )?String(_height):'';
			_Forms.DocumentQualifier.value = _DocumentQualifier;
			_Forms.URLSuffix.value = URLSuffix;
			_Forms.xmlProps.value = xmlProps;
			
			RaiseEvent('www.activportal.mc:Document','onExpandWebpart', null, _DocumentQualifier);			
			
			_Loader.submit(_Forms);
			
			_fLoad = true;
			//frmCriteria.submit();			
			
		}
		
		function RaiseEventCriteria()
		{
			var arrayEvent = new Array();
			var oEvent;
			var i;
			var j;
			
			j=0;
			for(i=0;i<_listCriteria.Count();i++)
			{
				var oCriteria = _listCriteria.Item(i);
				if( oCriteria.Value != null && oCriteria.IsActivate )
				{
					oEvent = new CriteriaDataEvent(_DocumentQualifier,null,null,oCriteria.IdObject,null,oCriteria.dataType,oCriteria.Operator,oCriteria.Value)
					arrayEvent[j++] = oEvent;
				}
			}
			
			RaiseApplicationEvent("www.activportal.mc:SQLVCriteria","OnCriteriaChange",arrayEvent);
		}
		
		function SetGlobalCriteria(paramEvent)
		{
			var strXML = "<GlobalCriteria IdObject='" + paramEvent.IdObject + "' Operator='=' >";
			strXML +=  "<Value><![CDATA[" + paramEvent.Value + "]]></Value>";
			strXML += "</GlobalCriteria>";
			SendCriteria('SetGlobalCriteria');
			
			//try{
				if( HasWindowOpener() )
					window.opener.SetDisplayGlobalFilter(paramEvent.IdDomain,paramEvent.LabelObject,paramEvent.Operator,paramEvent.Value);
				else
					SetDisplayGlobalFilter(paramEvent.IdDomain,paramEvent.LabelObject,paramEvent.Operator,paramEvent.Value);
			//}
			//catch(e){}
			
		}
		
		function ChangeCriteria(paramEvent)
		{
			var oIDObject;
			var oValue;
			var oCriteria;
			var fSend = false;

			if( paramEvent instanceof Array || paramEvent.length != undefined )
			{
				var i;
				
				for(i=0; i<paramEvent.length;i++)
				{
					if( _DocumentQualifier != paramEvent[i].IdDocument ) // Pour gérer le cas de lui même
					{  
						
						oCriteria = FindCriteriaByObjectIdAndOperator(paramEvent[i].IdObject,paramEvent[i].Operator);
						if( oCriteria != null )
						{
							
							oCriteria.Value = paramEvent[i].Value;
							oCriteria.Ignore = 0;
							oCriteria.IsActivate = true;
							fSend = true;
						}
					}					
				}
			}
			else
			{
				if( _DocumentQualifier == paramEvent.IdDocument ) return;
				oCriteria = FindCriteriaByObjectIdAndOperator(paramEvent.IdObject,paramEvent.Operator);
				if( oCriteria != null )
				{
					oCriteria.Value = paramEvent.Value;
					oCriteria.Ignore = 0;
					oCriteria.IsActivate = true;
					fSend = true;
				}
			}
			
			if( _WebpartQualifier != null && _WebpartQualifier != '' )
			{
					var oMultiDocTab = GetTabStrip(_WebpartQualifier);
					if( oMultiDocTab )
					{
						var oreg = new RegExp(_DocumentQualifier);
						if( !oreg.test(oMultiDocTab.currentTabSelected) )fSend = false;
					}
			}			
			if( _WebpartQualifier != null && _WebpartQualifier != '' )
			{
				if (typeof(App)!= 'undefined' && typeof(App.webpartList[_WebpartQualifier]) != 'undefined')
				{
					if( App.webpartList[_WebpartQualifier].tabs )
					{
						if( App.webpartList[_WebpartQualifier].tabs.selectedTab.getAttribute("name") != _DocumentQualifier ) {
							fSend = false;
							/*if( _Document ) {
								_Document.hasChanged = true;
							}*/
						}
							
					} 
				}
			}					
			
			if( fSend ) 
			{
				var oVerifyCriteria = null
				var i=0;
				while( i < _listCriteria.Count() )
				{
					oVerifyCriteria = _listCriteria.Item(i);
					if( !oVerifyCriteria.IsActivate )
					{
						oVerifyCriteria.Ignore = 1;
						oVerifyCriteria.Value = '';
						oVerifyCriteria.IsActivate = true;
					}
					i++;
				}
				DisplayWebPart(WebpartQualifier,true)				
				SendCriteria('0');
				
			}

		}
		
		function Refresh(width,height)
		{
			var fSend = true;
			_width = width;
			_height = height;
			if(  typeof GetTabStrip != 'undefined' && _WebpartQualifier != null && _WebpartQualifier != '' )
			{
					var oMultiDocTab = GetTabStrip(_WebpartQualifier);
					if( oMultiDocTab )
					{
						var oreg = new RegExp(_DocumentQualifier);
						if( !oreg.test(oMultiDocTab.currentTabSelected) )fSend = false;
					}
			}
			
			if( _WebpartQualifier != null && _WebpartQualifier != '' )
			{
				if (typeof(App) != 'undefined' && typeof(App.webpartList[_WebpartQualifier]) != 'undefined')
				{
					if( App.webpartList[_WebpartQualifier].tabs )
					{
						if( App.webpartList[_WebpartQualifier].tabs.selectedTab.getAttribute("name") != _DocumentQualifier ) fSend = false;
					}
				}
			}					
								
			if( fSend )	SendCriteria('0');
		}
		
		function RefreshIfChanged(evt,width,height)
		{
			if (width) _width = width;
			if (height) _height = height;
			var fSend = false;
			if( evt.DocumentQualifier == _DocumentQualifier  )	
			{
				
				var oVerifyCriteria = null
				var i=0;
				while( i < _listCriteria.Count() )
				{
					oVerifyCriteria = _listCriteria.Item(i);
					if( oVerifyCriteria.IsActivate )
					{
						fSend = true
						break;
					}
					i++;
				}
				
				if( i	< (_listCriteria.Count()) || !_fLoad)
				{
					if( fSend )
					{
						i=0;
						while( i < _listCriteria.Count() )
						{
							oVerifyCriteria = _listCriteria.Item(i);
							if( !oVerifyCriteria.IsActivate )
							{
								oVerifyCriteria.Ignore = 1;
								oVerifyCriteria.Value = '';
								oVerifyCriteria.IsActivate = true;
							}
							i++;
						}

						SendCriteria('0');
					}
					DisplayWebPart(WebpartQualifier,true)				
					
				}
			}
		}
		
		function Reload()		
		{
			if( ! _Forms ) _Forms = CreateCriteriaForm();
			
			_Forms.Cmd.value = 'Reload';
			_Forms.DocumentQualifier.value = _DocumentQualifier;
			_Forms.URLSuffix.value = URLSuffix;
			_Forms.Width.value = ( _width && _width != undefined && _width > 50 )?String(_width):'';
			_Forms.Height.value = ( _height && _height != undefined && _height > 50 )?String(_height):'';
			_Loader.submitInto(_Forms,'DocumentContainer_' + _DocumentQualifier);
		}
		
	}


	
	/*-----------------------------*/
	/* CRITERIA OBJECT 	   		     */
	/*-----------------------------*/
	function CriteriaDef(IDCriteria,IDObject,ViewType,DataType,Operator,Listen)
	{
		this.id = IDCriteria;
		this.IdCriteria = IDCriteria;
		this.IdObject = IDObject;
		this.ViewType = ViewType;
		this.dataType = DataType;
		this.Operator	= Operator;
		this.IsSave = 0;
		this.Ignore = 0;
		this.InheriteContact = 0;
		this.IsActivate = false;
		this.Listen = Listen;
		this.Value = null;
		this.SetValueFromHTML = SetValueFromHTML;
		this.GetXml = GetXml;
		this.ValidateValue = ValidateValue;
		
		
		function ValidateValue(_oHTML)
		{
			
			var _DecimalSeparator = _oHTML.DecimalSeparator;
			var _GroupingSeparator = _oHTML.GroupingSeparator;
			var _UserCurrency = _oHTML.UserCurrency;
			var _VolumeUnit = _oHTML.VolumeUnit;
			var _DistanceUnit = _oHTML.DistanceUnit;
			var _DateFormat = _oHTML.DateFormat;
			var _ErrorValidateMessage = _oHTML.ErrorValidateMessage;
			
			switch(this.dataType)
			{
				case 'CHAR':
					this.Value = _oHTML.value;
					break;
				case 'NUM':
				case 'CURRENCY':
								
					var sValue = String(_oHTML.value);
					
					/*sValue = sValue.replace(_DecimalSeparator,String.fromCharCode(181));
					sValue = sValue.replace(_GroupingSeparator,String.fromCharCode(249));
					
					sValue = sValue.replace(getCurrencyUnit(_UserCurrency),'');
					sValue = sValue.replace(_VolumeUnit,'');
					sValue = sValue.replace(_DistanceUnit,'');
					
					sValue = sValue.replace(String.fromCharCode(181),'.');
					sValue = sValue.replace(String.fromCharCode(249),'');	*/
				
				
					var oNum = new Number(sValue);
					if( isNaN(oNum) )
					{ 
						alert(_ErrorValidateMessage);
						_oHTML.focus();
						return false
					}
					this.Value = oNum;
					break;
				case 'DATE':
					if (_oHTML.value == '') this.Value = '';
					else
					{
						var oDate = getDateFromFormat(_oHTML.value, _DateFormat);
						if( isNaN(oDate) ) 
						{ 
							alert(_ErrorValidateMessage);
							_oHTML.focus();
							return false;
						}
						this.Value = formatDate(oDate, FORMAT_DATE_INT);
					}
					break;
					
				default:
					this.Value = _oHTML.value;
					break;
			}
			
			return true;
		}
		
		
		function SetValueFromHTML(oHTML)
		{
			var oArray;
			
			if (!this.Ignore)
			{
				//this.Ignore = 0;
				switch(String(ViewType))
				{
					case VIEW_TEXT:
							if( !this.ValidateValue(oHTML))
							{
								return false;
							}
					
						break;
					case VIEW_SIMPLELIST:
					case VIEW_CHOICE:				
						
						this.Value = oHTML.value;
						if( oHTML.value == '_GETALL_' ) 
						{
							this.Value = ''
							this.Ignore = 1;
						}
								
						break;
					case VIEW_MULTIPLELIST:
						var options = oHTML.options;
						var i;
						var iSelected = 0;
						
						this.Value = new Array();
						for(i=0;i<options.length;i++)
						{
							if( options.item(i).selected ) 
							{
								if( options.item(i).value == '_GETALL_' ) 
								{
									this.Value = new Array();
									break;
								}										
								this.Value[iSelected++] = options.item(i).value;
							}
						}
						
						if( this.Value.length == 0 )
							this.Ignore = 1;
						
						break;
				}
			}
			else 
				this.Value = ''
				
			this.IsActivate = true;
			return true;
		}
		
		function GetXml()
		{
		
			var strXML = "";
			
			strXML = "<Criterion IDCriterion=\"" + this.id + "\" Save=\"" + this.IsSave + "\" Ignore=\"" + this.Ignore + "\" Operator=\"" + XMLEncode(this.Operator) + "\">";
			strXML += "<Values>";
			if( this.Value != null )
			{
				if( this.Value instanceof Array)
				{
					var i=0;
					
					for(i=0;i<this.Value.length;i++)
					{
						//strXML += "<Value>" + XMLEncode(this.Value[i]) + "</Value>";
						strXML += "<Value><![CDATA[" + this.Value[i] + "]]></Value>";
					}
				}
				else
				{
					//strXML += "<Value>" + XMLEncode(this.Value) + "</Value>";
					strXML += "<Value><![CDATA[" + this.Value + "]]></Value>";
				}
			}
			strXML += "</Values>";
			strXML += "</Criterion>";
			return strXML;
		}
	}
	
	
		/*--------------------------------*/
	/* VIEW MANAGER COLLECTION OBJECT */
	/*--------------------------------*/
	function SqlvisionManagerCollectionDef()
	{
		var _list = new Collection();
		
		this.Add = Add;
		this.Find = Find;
		this.Remove = Remove;
		this.FindById = FindById;
		
		
		function Add(oObject)
		{
			var VMIndex;
			
			if( oObject == null ) return null;
			
			VMIndex = Find(oObject.id);
			
			if (VMIndex >= 0)
				Remove(VMIndex)
			
			_list.Add(oObject);
			this.Count = _list.Count();
			
			return oObject;
		}		
	
		function FindById(Id)
		{
			var i;
			for( i=0; i<_list.Count(); i++ )
			{
				if( _list.Item(i).id == Id )
					return _list.Item(i);
			}
			return null;
		}		

		function Find(Index)
		{
			if (isNaN(Index))
			{
				var i;
				for( i=0; i<_list.Count(); i++ )
				{
					if( _list.Item(i).id == Index )	
						return i;
				}
				return -1;
			}
			else
			{
				if( Index < 0 || Index >= _list.Count() )
					return -1;
				else
					return Index;
			}
		}

		function Remove(Index)
		{
			_list.Remove(Find(Index));
			this.Count = _list.Count();
		}
		
		function Clear()
		{
			var i;
			for(i=0;i<this.Count;i++)
				Remove(i);
			
		}	
	
	}
	
	
	
	/////////////////////////////////////////////////////////////////////////////
	// Entry Point
	
	var _MainCriteriaManagerCollection = new CriteriaManagerCollectionDef()
	var _MainSqlvisionManagerCollection = new SqlvisionManagerCollectionDef()
	
	
	
	
	
	function GetSqlvisionView(id)
	{
		return _MainSqlvisionManagerCollection.FindById(id);
	}
	
	function CreateSqlvisionView(oObject)
	{
		return _MainSqlvisionManagerCollection.Add(oObject)
	}
	
	
	function GetCriteriaManager(DocumentQualifier)
	{
		return  _MainCriteriaManagerCollection.FindCriteriaManagerById(DocumentQualifier);
	}
	
	
	function CreateCriteriaManager(WPQualifier,DocumentQualifier, URLSuffix, url,iEditMode, fCreateIFrame, objDocument)
	{
		var oManager = _MainCriteriaManagerCollection.AddCriteriaManager(WPQualifier,DocumentQualifier,URLSuffix,url,iEditMode,fCreateIFrame,objDocument);
		if( oManager != null )
		{
			oManager.init();
		}
		return oManager;	
	
	}
	
	
	function RegisterCriteriaManager(DocumentQualifier)
	{
		var oManager = GetCriteriaManager(DocumentQualifier);
		if( oManager != null )
		{
			if( typeof(RequestAvailableInfos) != "undefined" )
			{
				var i=0;			
				for( i=0;i< oManager.Count; i++)
				{
					var oCriteria = oManager.Criteria(i);
					
					var oFunc = null;
						oFunc = RequestAvailableInfos("www.activportal.mc:SQLVCriteria","Criteria_O" + oCriteria.IdObject);
						if( oFunc != null && oFunc() != null)
						{
							oCriteria.Value = oFunc();
							oCriteria.IsActivate = true;
						}
					}				
				}
			
			if( typeof(RegisterEvent) != "undefined" ) 
			{
				RegisterEvent("www.activportal.mc:SQLVCriteria","OnCriteriaChange",oManager.ChangeCriteria);

				if(  typeof GetTabStrip != 'undefined' && oManager.WebpartQualifier != null && oManager.WebpartQualifier != '' )
				{
						var oMultiDocTab = GetTabStrip(oManager.WebpartQualifier);
						if( oMultiDocTab )
						{
							RegisterEvent("www.activportal.mc:WebpartTabStrip","TabActivated",oManager.RefreshIfChanged);
						}
				}
			}
		}
		return oManager;
	}
	

	
	function RegisterCriteria(DocumentQualifier, IDCriteria,IDObject,ViewType,DataType,Operator,Listen)
	{
		var oManager = GetCriteriaManager(DocumentQualifier)
		if( oManager != null ) 
		{
			return oManager.AddCriteria(IDCriteria,IDObject,ViewType,DataType,Operator,Listen);
		}
		return null;
	}
	
	
	/*function XMLEncode(sStr)
	{
		sStr = sStr.replace('&', '&amp;');
		sStr = sStr.replace('<', '&lt;');
		sStr = sStr.replace('>', '&gt;');
		sStr = sStr.replace('"', '&quot;');
		sStr = sStr.replace('\'', '&apos;');
		return sStr;
		
	}*/
	
	
function getCurrencyUnit(sCurrencySeparator)
{
	var sReturnValue = sCurrencySeparator;
	switch(sCurrencySeparator)
	{
		case 'GBP':
			sReturnValue = '£';
			break;
		case 'EUR':
			sReturnValue = '€';
			break;
		case 'AUD':
		case 'NZD':
		case 'USD':
			sReturnValue = '$';
			break;

	}

	return sReturnValue;
}	

function XMLEncode(sStr)
{
	var sStrEndoding = '';
	var i;
	sStr = String(sStr);
	for(i=0;i<sStr.length;i++)
	{
		switch(sStr.charAt(i))
		{
			case '&':
				sStrEndoding += '&amp;'
				break;
			case '<':
				sStrEndoding += '&lt;'
				break;
			case '>':
				sStrEndoding += '&gt;'
				break;
			case '"':
				sStrEndoding += '&quot;'
				break;
			case '\'':
				sStrEndoding += '&apos;'
				break;
			default:
				if( sStr.charCodeAt(i) > 127 ) 
				{
					sStrEndoding += '&#' + sStr.charCodeAt(i) + ';'
				}
				else
				{
					sStrEndoding += sStr.charAt(i);
				}
				break;
		}
	}
	return sStrEndoding;

}	
	
	
	function InjectIFrameSRC(id,src) {
		var WPs = document.body.getElementsByTagName("IFRAME");
		var i,WP;
		var p;

		for(i=0;i<WPs.length;i++) 
		{
			if (WPs[i].id == id)
			{
				WPs[i].src = src;
				/*
				p = WPs[i].parentNode;
				while (p!=null && p!=undefined)
				{
					alert(p.tagName + ":" + p.id + ":" + p.height);
					p = p.parentNode;
				}
				*/
				break;
			}
		}
	}



