	document.createElement('HRBField');
	document.createElement('HRBSelect');
	document.createElement('HRBToggle');

	function completeUI(){
		var arr =  document.getElementsByTagName( "*" );
		for(var i=0; i < arr.length; i++)
		{
			var tagName = document.getElementsByTagName( "*" ).item(i).nodeName;
			if (tagName.toLowerCase()=='hrbfield'){
				new HRBField(document.getElementsByTagName( "*" ).item(i));
			}
			else if (tagName.toLowerCase()=='hrbselect'){
				new HRBSelect(document.getElementsByTagName( "*" ).item(i));
			}
			else if (tagName.toLowerCase()=='hrbtoggle'){
				new HRBToggle(document.getElementsByTagName( "*" ).item(i));
			}
			
		}
	}

	function removeNumberFormat( strValue ) {
		var objRegExp = /,/g; //search for commas globally
		return strValue.replace(objRegExp,'');
	}

	function addNumberFormat( strValue ) {
		if(typeof strValue =='number')
		strValue=''+strValue;
		var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})');
		//check for match to search criteria
		while(objRegExp.test(strValue)) {
		strValue = strValue.replace(objRegExp, '$1,$2');
		}
		return strValue;
	}

	function convertformat(numActual){
		return '$' +addNumberFormat(numActual);
	}

	function HRBField(custObj){
		this._fieldAtt=custObj.attributes["objmap"].value;
		this._fieldtyp="number";
		if ( (typeof custObj.attributes["typ"] !='undefined') && custObj.attributes["typ"]!=null){
			this._fieldtyp=custObj.attributes["typ"].value ;

		}

		var str=''
		var tmpMaxLen= parseInt(custObj.attributes["maxlen"].value);
		var tmpMinLen=1;
		this._hrb_txt=document.createElement("input");
		this._hrb_txt.type       =  "text";
		this._hrb_txt.value       =  eval(this._fieldAtt);
		this._hrb_txt.style.width       = (10*tmpMaxLen)+'px';
		this._hrb_txt.className='input';

		this._hrb_txt.maxLength  = tmpMaxLen;
		this._hrb_txt.onclick=function(){
		
		}

		this._hrb_txt.onblur=function(){
			var rg_lead_zero =/^0+/
			var tmpval=(removeNumberFormat(self._hrb_txt.value)).replace(rg_lead_zero,'');
			tmpval=(tmpval=='')?'0':tmpval;
			eval( self._fieldAtt +'='+ parseInt(tmpval));
			self._hrb_txt.value=addNumberFormat(tmpval);
		}
		this.getInputFld=function(){
			return this._hrb_txt;
		}

		this._hrb_txt.onkeypress=function(eve){
				var rg=/^([0-9,\b])/;
				var kn = window.event?event.keyCode : eve.which;
				//patch for FF for tab.
				if (!window.event && kn==0){
					return true;
				}
				kc =String.fromCharCode(kn);
				return rg.test(kc);
		  }
		var self=this;
		if(this._fieldtyp=='amount'){
		var tmpsp =document.createElement("span");
		tmpsp.innerHTML='$ ';
		custObj.appendChild(tmpsp)
		}
		custObj.appendChild(this._hrb_txt);
}


	function HRBSelect(custObj){
		this._fieldAtt=custObj.attributes["objmap"].value;
		this._hrb_sel=document.createElement("select");

		for (var i=0;i<custObj.childNodes.length ;i++ ){
				if(custObj.childNodes[i].nodeName.toLowerCase()=='hrboption'){
					this._hrb_sel.options[this._hrb_sel.options.length] = new Option(custObj.childNodes[i].attributes["text"].value, custObj.childNodes[i].attributes["value"].value);
				}
		}
		this._hrb_sel.onclick=function(){
		}

		this._hrb_sel.onchange=function(){
			
			eval( self._fieldAtt +'=\''+ self._hrb_sel.value+'\'');

			
		}
		
		var self=this;
		custObj.appendChild(this._hrb_sel);
	}



	function HRBToggle(custObj){
		this._fieldAtt=custObj.attributes["objmap"].value;
		this._hrb_sel=document.createElement("input");
		this._hrb_sel.type='hidden'
		var ev_att=custObj.attributes["clickevent"];
		this._callbk_click=(typeof ev_att !='undefined' && ev_att!=null)?ev_att.value:null;

		//alert(custObj.childNodes.length)

		var rad =new Array();
		var label =new Array();
		var rad_nm = 'hrb_rad'+Math.random();
		var rad_sel_ind=0;

		for (var k =0;k<custObj.childNodes.length ;k++ ){
			
			if(custObj.childNodes[k].nodeName.toLowerCase()=='hrboption'){
			var indx=rad.length;

			rad[indx]=document.createElement("input");
			rad[indx].type='radio';
			rad[indx].name=rad_nm;
			var defsel =custObj.childNodes[k].attributes['default'];
			if (defsel !=null && (typeof defsel !='undefined')){
				rad[indx].checked=true;
				rad_sel_ind=indx;
				rad[indx].setAttribute('checked', 'true');

			}
			rad[indx].value=custObj.childNodes[k].attributes['value'].value;
			label[indx]=custObj.childNodes[k].attributes['text'].value;
			rad[indx].onclick = function() {
										for (var k1=0;k1<rad.length ;k1++ ){
											rad[k1].checked=false;
										}
										this.checked=true;
										if(this.value=="true" || this.value=="false"){
											eval( self._fieldAtt +'='+ this.value);

										}else{
											eval( self._fieldAtt +'=\''+ this.value+'\'');
										}

										if (self._callbk_click!=null){
											//trigger the call back function
											try{
											eval(self._callbk_click+'(\''+this.value+'\')');
											}catch(e){alert('call back not defined.');}
										}
									}
								}

		}
	
		var _sp= document.createElement('span');
	
		for (var m =0;m<rad.length ;m++ ){
				_sp.appendChild(rad[m]);
				_sp.appendChild (document.createTextNode(label[m]))
		}
								
				
		var self=this;
		custObj.appendChild(_sp)
		rad[rad_sel_ind].click();

	}
