
var DOM = (function() 
{
	return {		

		GetElement: function (elementname)
		{			
			if (document.getElementById)
				if (document.getElementById(elementname))					
					return document.getElementById(elementname);

			if (document.getElementsByName)
				if (document.getElementsByName(elementname)[0])	
					return document.getElementsByName(elementname)[0];
					
			if (document.all)
				return eval('document.all.' + elementname);
					
			if (document.layers)
				return eval('document.layers.' + elementname);					
			
		},
		
		GetSelectedValue: function (elementname)
		{
			return this.GetElement(elementname).options[this.GetElement(elementname).selectedIndex].value;
		
		},
		
		SetSelectedValue: function (elementname, value)
		{
			for (var i = 0; i < this.GetElement(elementname).options.length; i++)
				if (this.GetElement(elementname).options[i].value == value)
					this.GetElement(elementname).selectedIndex = i;
					
		},

		CheckElementValue: function (elementname, elementvalue, result)
		{
			if (this.GetElement(elementname).value == elementvalue) return result;
				else return !result;
				
		},

		CheckValue: function (currentvalue, comparevalue, result)
		{
			if (currentvalue != comparevalue) return !result;
				else return result;
					
		},

		SetElementsProperty: function (elementname, elements_ids, property, value)
		{
			var i;
			var elements = elements_ids.split(",");
			
			for (i in elements)
			{				
				// alert('this.GetElement(\'' + elementname + elements[i] + '\').' + property + ' = \'' + value + '\'');
				eval('this.GetElement(\'' + elementname + elements[i] + '\').' + property + ' = \'' + value + '\'');
				
			}
			
		},

		SetRadioValueState: function (formname, elementname, elementvalue, state)
		{
			var i;
			var selectelement;
			var isselected = 0;
				
			var elementobj = eval('document.' + formname + '.' + elementname);
				
			for (i = 0; i < elementobj.length; i++)
			{
				if (elementobj[i].value == elementvalue)
				{
					elementobj[i].checked = state;
							
				}
		
			}
			
		},

		GetRadioValue: function (formname, elementname)
		{
			var i;
			var selectelement;
			var isselected = 0;
				
			var elementobj = eval('document.' + formname + '.' + elementname);
				
			for (i = 0; i < elementobj.length; i++)
			{
				if (elementobj[i].checked)
				{
					selectelement = elementobj[i].value;
					var isselected = 1;
							
				}
		
			}
		
			if (isselected == 0)
			{
				return false;
				
			}
			else
			{
				return selectelement;	
				
			}
			
		},

		DisableElement: function (formname, elementname)
		{
			var elementobj = eval('document.' + formname + '.' + elementname);
			
			elementobj.disabled = true;
			
		},

		EnableElement: function (formname, elementname)
		{
			var elementobj = eval('document.' + formname + '.' + elementname);
			
			elementobj.disabled = false;
			
		},

		GetVisibilityElement: function (elementname)
		{
			return (this.GetElement(elementname).style.display == 'none') ? 0 : 1;
			
		},

		SwitchVisibilityElement: function (elementname, showstatus)
		{
			switch(showstatus)
			{
				case 0:
					this.GetElement(elementname).style.display = 'none';
					break;
				case 1:
					this.GetElement(elementname).style.display = '';
					break;
				case 2:
					if (this.GetElement(elementname).style.display == 'none') this.GetElement(elementname).style.display = '';
						else this.GetElement(elementname).style.display = 'none';
					break;
					
			}
			
		},

		SaveField: function (fieldname)
		{
			return this.GetElement(fieldname).value;
			
		},

		ClearField: function (fieldname)
		{
			this.GetElement(fieldname).value = "";
			
		},

		PrintWindow: function ()
		{
			var browserVersion = parseInt(navigator.appVersion);
			
			if (browserVersion >= 4)
			{
				window.print();
		
			}
		
		},

		FormActionChange: function (formname, actionurl)
		{
			this.GetElement(formname).action = actionurl
			
		},

		ArrayToSelectOptions: function (selectname, datalist, selectedkey, nonekey, nonevalue)
		{
			this.GetElement(selectname).options.length = 0;
			
			var i;		
			var j = 0;
			
			if (nonevalue.length > 0)
			{		
				this.GetElement(selectname).options[j] = new Option(nonevalue, nonekey);
				
				if (nonekey == selectedkey)
				{
					this.GetElement(selectname).options.selectedIndex = j;
					
				}
				
				j = j + 1;
				
			}
			
			for (i in datalist)
			{
				this.GetElement(selectname).options[j] = new Option(datalist[i]['name'], datalist[i]['id']);
				
				if (datalist[i]['id'] == selectedkey)
				{
					this.GetElement(selectname).options.selectedIndex = j;
					
				}
				
				j = j + 1;
				
			}			
				
		},
		
		ArrayToGet: function (data)
		{	
			var info = 'Array('
			
			for (var i = 0; i <= General.SizeOf(data) - 1; i++)
			{				
				info = info + i + ' => ' + (General.IsNumeric(data[i]) ? data[i] : '"' + data[i] + '"');
				
				if (i < General.SizeOf(data) - 1)
				{
					info = info + ', ';
					
				}
				
			}
			
			info = info + ')';
				
			return escape(info);
		
		},
		
		AddEvent: function (Obj, EventType, Fn)
		{
		    if (Obj.addEventListener)
		    {
		       Obj.addEventListener(EventType, Fn, false);
		       
		       return true;
		       
		    } 
		    else if (Obj.attachEvent)
		    {
		       var r = Obj.attachEvent("on" + EventType, Fn);
		       
		       return r;
		       
		    } 
		    else 
		    {
		       return false;
		       
		    }
		     
		},

		InitFocus: function ()
		{
		    if (findFocus('input'))
		        return;
		        
		    if (findFocus('select'))
		        return;
		        
		    if (findFocus('textarea'))
		        return;
		        
		},

		FindFocus: function (elementName)
		{
		    var inputs = document.GetElementsByTagName(elementName);
		    
		    for (var i = 0; i < inputs.length; i++)
		    {
		        if (inputs[i].className.indexOf('focus') != -1 )
		        {
		            inputs[i].focus();
		            return true;     
		                   
		        }
		        
		    }
		    
		    return false;
		    
		},

		GetAbsolutePosition: function (element)
		{
		    var Point = new this.GetPoint();
		    
		    for (; 
		         element && element != document.body;
		         Point.translate(element.offsetLeft, element.offsetTop), element = element.offsetParent
		    );
		        
		    return new Array(Point.x, Point.y);
		    
		},
		
		GetPoint: function (x, y)
		{
		    this.x = x || 0;
		    this.y = y || 0;
		
		    this.translate = function(dx, dy)
		    {
		        this.x += dx || 0;
		        this.y += dy || 0;
		        
		    };
		    
		    this.getX = function(){ return this.x; }
		    this.getY = function(){ return this.y; }
		    
		    this.equals = function(anotherpoint)
		    {
		        return anotherpoint.x == this.x && anotherpoint.y == this.y;
		        
		    };
		        
		},
		
		CheckboxStatus: function(elements_name, status)
		{
			elements_name = elements_name.split(',');
			
			var j = 0;
			var elements_status = new Array();
				
			for (var i in elements_name)
			{
				if (this.GetElement(elements_name[i]).checked == status)
				{
					elements_status[j] = elements_name[i];
					
					j = j + 1;
					
				}
				
			}
			
			return elements_status;
			
		},
		
		CheckboxOptions: function(elements_name, option)
		{
			elements_name = elements_name.split(',');
						
			for (var i in elements_name)
			{
				switch(option)
				{
					case "SelectAll":
						this.GetElement(elements_name[i]).checked = true;						
						break;	
					case "DeselectAll":
						this.GetElement(elements_name[i]).checked = false;
						break;	
					case "InvertAll":
						if (this.GetElement(elements_name[i]).checked == true) 
						{
							this.GetElement(elements_name[i]).checked = false;
							
						}
						else 
						{	
							this.GetElement(elements_name[i]).checked = true;
							
						}
						break;	

				}
					
			}

		
		}

	};
			
})();

