// JavaScript Document
if (!window.HTMLObjects) {  var HTMLObjects = new Object(); }

/*############### Returns what internet browser is being used
  ################################################################## */
var global_vars = new Object();
var ie = /MSIE/.test(navigator.userAgent);
var moz = !ie && navigator.product == "Gecko";
var s_email_address_re = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(info|name))$/;
var s_post_code_re = /^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$/;
/*############### Returns obj pointer for html tag name specified
  ################################################################## */

$nam_ = function(object)
{
	return(document.getElementsByTagName(object));
}

/*############### Returns obj pointer for object name specified
  ################################################################## */

$c_ = function (object)
{
	return(document.createElement(object));
}

/*############### Returns obj pointer for object name specified
  ################################################################## */

$_ = function (object)
{
	if (document.getElementById) { return(document.getElementById(object));	} // For most browsers
	else if (document.all) { 	return(document.all[object]);  }              // For IE
	else if (document.layers) { return(document.layers[object]); }            // For Netscape
	else {  return(document.getElementById(object)); }	
}

/*############### Returns selected index of select HTML layer
  ################################################################## */
 
$sel_ = function(objname)
{
	var obj=$_(objname);
	return(obj.options[obj.options.selectedIndex]);
}

/*############### Copy Object Variable
  ################################################################## */

Object.prototype.copy = function()
{  
	var obj_copy = new Object();
    for (var e in this) {
      obj_copy[e] = this[e];
    }
	return(obj_copy);
};

/*############### Extend Object
  ################################################################## */

Object.prototype._extends = function(oSuper) { 
   for (sProperty in oSuper) { 
         this.prototype[sProperty] = oSuper[sProperty]; 
  } 
}

/*############### Serialise Object
  ################################################################## */

getValue = function(object) { 
	
	
}

/*############### Empty
  ################################################################## */
  
Object.prototype.empty = function()
{
	for (var e in this) { 
		if (this[e]!=null && this[e]!=undefined)
		{
			switch(typeof(this[e]))
			{
				case 'object':
					if (this[e].length!=undefined) { this[e]=new Array(0); } 
					else { this[e].empty; }
				break;
				case 'number': this[e]=-1; break;
				case 'string': this[e]=''; break;
				case 'boolean': this[e]=false; break;
				case 'array': this[e]=new Array(0); break;			
			}		
		}
	}
}


if (moz)
{	

/*############### The following function within this IF statement are implemented so that
  ############### the system will function in other browsers than Internet Explorer.
  ####################################################################################### */	
	
	with(HTMLElement.prototype)
	{
	
		/*############### Returns canHaveChildren property value
		  ################################################################## */	
		  
		__defineGetter__("canHaveChildren", function () {
				switch (this.tagName) {
					case "AREA":
					case "BASE":
					case "BASEFONT":
					case "COL":
					case "FRAME":
					case "HR":
					case "IMG":
					case "BR":
					case "INPUT":
					case "ISINDEX":
					case "LINK":
					case "META":
					case "PARAM":
						return false;
				}
				return true;
			});
		
		/*############### Sets outerHTML property value
		  ################################################################## */	
		  
		__defineSetter__("outerHTML", function (html_code) {
		   var r = this.ownerDocument.createRange();
		   r.setStartBefore(this);
		   var cf = r.createContextualFragment(html_code);
		   this.parentNode.replaceChild(cf, this);
		
		   return html_code;
		});
			
		/*############### Returns outerHTML property value
		  ################################################################## */	
		  
		__defineGetter__("outerHTML", function () {
			var attr, attrs = this.attributes;
			var str = "<" + this.tagName;
			for (var i = 0; i < attrs.length; i++) {
				attr = attrs[i];
				if (attr.specified)
					str += " " + attr.name + '="' + attr.value + '"';
			}
			if (!this.canHaveChildren)
				return str + "/>";
		
			return str + ">" + this.innerHTML + "</" + this.tagName + ">";
		});
	}
}


/*############### HTMLObjects Class
  ################################################################## */

HTMLObjects = { 	


/*############### Is Empty
  ################################################################## */
  
	is_empty: function(objects)
	{
		var arr_objects=objects.split(',');	
		var empty=false;
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);			
			switch(obj.tagName.toLowerCase())
			{
				case 'select':
				case 'textarea':
					if (obj!=null && obj!=undefined && obj.value=='') { empty=true; }
					else { empty=false; }
				break;
				case 'input':		
					switch(obj.type.toLowerCase())
					{
						case 'checkbox':
							if (obj!=null && obj!=undefined && !obj.checked) { empty=true; }
							else { empty=false; }
						break;
						default:
							if (obj!=null && obj!=undefined && obj.value=='') { empty=true; }
							else { empty=false; }
						break;
					}
				break;
				default:
					if (obj!=null && obj!=undefined && obj.innerHTML=='') { empty=true; }
					else { empty=false; }
				break;			
			}		
		}
		return(empty);
	},
	
/*############### Change Class
  ################################################################## */
  
	change_class: function(objects,className)
	{
		var arr_objects=objects.split(',');
	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			if (obj!=null && obj!=undefined)
			{
				obj.className=className;
			}
		}	
	},
	
/*############### Change Object
  ################################################################## */
  
	change: function(objects,newobjectvalue)
	{
		var arr_objects=objects.split(',');
	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			if (obj!=null && obj!=undefined)
			{
				obj.outerHTML=newobjectvalue;
			}
		}	
	},
	
/*############### Change_Content
  ################################################################## */
  
	change_content: function(objects,newobjectvalue)
	{
		var arr_objects=objects.split(',');
	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			if (obj!=null && obj!=undefined)
			{
				obj.innerHTML=newobjectvalue;
			}
		}	
	},
	
/*############### Empty Objects
  ################################################################## */
  
	empty: function(objects)
	{
		var arr_objects=objects.split(',');	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			
			var obj=$_(arr_objects[nObject]);			
			if (obj!=null)
			{				
				switch(obj.tagName.toLowerCase())
				{
					case 'select': obj.options.length=1; obj.options.selectedIndex=0; break;				
					case 'textarea': obj.value=''; break;
					case 'input':				
						switch(obj.type.toLowerCase())
						{
							case 'checkbox': if (obj.checked) { obj.checked=false; }  break;
							default: obj.value='';	 break;
						}
					break;
					default: obj.innerHTML=''; break;			
				}
			}
		}
	},
	
/*############### Hide Object
  ################################################################## */
  
	hide: function(objects)
	{
		var arr_objects=objects.split(',');	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			
			if (obj!=null && obj!=undefined) { 
				obj.style.visibility='hidden'; 
				obj.style.display='none'; 
			}
		}
	},
	
/*############### Show Object
  ################################################################## */

	show: function(objects)
	{
		var arr_objects=objects.split(',');	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			if (obj!=null && obj!=undefined) { 
				obj.style.visibility='visible'; 
				obj.style.display='block'; 
			}
		}
	},
	
/*############### Delete Object
  ################################################################## */

	delete_obj: function(object)
	{
		try {
			if (typeof(object)=='string') { object=$_(object); }
			if (document.layers) { delete object; }
			else { object.outerHTML=object.innerHTML=''; }
		} catch(e) { }
	},

/*############### Delete Objects
  ################################################################## */

	delete_objects: function(objects)
	{
		var arr_objects=objects.split(',');	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			if (obj!=null && obj!=undefined) { this.delete_obj(obj); }
		}
	},
	
/*############### Disable Object
  ################################################################## */

	disable: function(object) { object.disabled=true; },
	
	disable_objects: function(objects)
	{
		var arr_objects=objects.split(',');	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			if (obj!=null && obj!=undefined) { this.disable(obj); }
		}
	},
	
	disable_clear: function(objects)
	{
		this.empty(objects);
		var arr_objects=objects.split(',');	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			if (obj!=null && obj!=undefined) { this.disable(obj); }
		}
	},
	
/*############### Enable Object
  ################################################################## */	
  
	enable: function(object) { object.disabled=false; },

/*############### Enable Objects
  ################################################################## */
  
	enable_objects: function(objects)
	{
		var arr_objects=objects.split(',');	
		for (var nObject=0;nObject<arr_objects.length;nObject++)
		{
			var obj=$_(arr_objects[nObject]);
			if (obj!=null && obj!=undefined) { this.enable(obj); }
		}
	}	
}
		
