var ns4=document.layers;
var ie4=document.all;
var ns6=document.getElementById&&!document.all;

function DHFSetElementHTML(elementid,s,append)
	{
	var el=document.getElementById(elementid);
	if (el)
		{
		if (append)
			el.innerHTML=el.innerHTML+s;
		else
			el.innerHTML=s;
		}
	}	
function DHFGetSelectValue(elementid,defval)
	{
		var el=document.getElementById(elementid);
		if (el)
			{
				var i=el.selectedIndex;
				return(el.options[i].value);
			}
		else
			{
				if (defval!=undefined) return(defval);
			}	
	}	
function GetFieldValue(elementid,defval)
	{
		var el=document.getElementById(elementid);
		if (el)
			{
			return(el.value);
			}
		else
			{
			if (defval!=undefined) return(defval);
			}
	}
function DHFSetFieldValue(elementid,s)
	{
		var el=document.getElementById(elementid);
		if (el)
			{
			el.value=s;
			}
	}
function ShowElement(elementid,state)
	{
	var el=document.getElementById(elementid);
	if (el)
		{
		el.style.display=state ? "inline" : "none";
		}
	}	
function HideDiv(elementid,state)
	{
	var el=document.getElementById(elementid);
	if (el)
		{
		el.style.visibility=state ? "hidden" : "";
		}
	}		
function IsFieldChecked(elementid)	
	{
	var el=document.getElementById(elementid);
	if (el)
		{
		return(el.checked);
		}
	else
		alert('Noot defined SetFieldChecked');
	}
	
function SetFieldChecked(elementid,state)
	{
	var el=document.getElementById(elementid);	
	if (el)
		{		
			el.checked=state;
		}
	}

function DisableElement(elementid,state)
	{
	var el=document.getElementById(elementid);
	if (el)
		{
		el.disabled=state;
		}
	}
	
function DHFSetSelectIndex(elementid,s)
	{
	var el=document.getElementById(elementid);
	if (el)
		{
		el.selectedIndex=s;
		}
	}
	
function DHFGetSelectIndex(elementid, defval)
	{
	var el=document.getElementById(elementid);
	if (el)
		{
			return(el.selectedIndex);
		}
	else
		{
			if (defval!=undefined) return(defval);
		}
	}

function DHFGetSelectText(elementid, defval)
	{
	var el=document.getElementById(elementid);
	if (el)
		{
			var i=el.selectedIndex;
			return(el.options[i].text);
		}
	else
		{
			if (defval!=undefined) return(defval);
		}
	}
	
function trim(inputString) 
	{ // Removes leading and trailing spaces from the passed string. Also removes
		if (typeof inputString != "string") { return inputString; }
		var retValue = inputString;
		var ch = retValue.substring(0, 1);
		while (ch == " ") { // Check for spaces at the beginning of the string
			retValue = retValue.substring(1, retValue.length);
			ch = retValue.substring(0, 1);
		}
		ch = retValue.substring(retValue.length-1, retValue.length);
		while (ch == " ") { // Check for spaces at the end of the string
			retValue = retValue.substring(0, retValue.length-1);
			ch = retValue.substring(retValue.length-1, retValue.length);
		}
		while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
			retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
		}
		return retValue; // Return the trimmed string back to the user
	} // Ends the "trim" function
function DHFIsNumeric2(val, allowNegative, allowDecimal)
	{
		if (allowDecimal) return (val+'').search(/^ *[0-9]+(\.[0-9]*)? *$/)!=-1;
		return (val+'').search(/^ *[0-9]+ *$/)!=-1;
	}		
function IsDate(val)
	{
		var a;
		if (val.indexOf('.')>=0)
			{
			a=val.split('.');
			if (a.length!=3) return false;
			//dmy
			}
		else
			return false;
		var d=0;
		var m=1-d;
		if (!DHFIsNumeric2(a[d], false, false) ||
			!DHFIsNumeric2(a[m], false, false) ||
			!DHFIsNumeric2(a[2], false, false) ||
			a[d]<1 || a[d]>31 || a[m]<1 || a[m]>12 || a[2]<1799 || a[2]>2999)
			return false;
		
		var dt=new Date(a[2],a[m]-1,a[d]);
		if (dt.getDate()==a[d] && dt.getMonth()+1==a[m] && dt.getFullYear()==a[2])
			return true;
		
		return false;
	}		
	

function CompareDates(StartDate, EndDate)
	{
        var arr_start, arr_end;

        StartDate = StartDate.replace("/", ".");
		EndDate = EndDate.replace("/", ".");

        if (!((StartDate.indexOf(".") >= 0) || (!(EndDate.indexOf(".")) >= 0)) )
            return false;

        if ((!IsDate(StartDate)) || (!IsDate(EndDate)))
			return false;

		arr_start=StartDate.split('.');
		arr_end=EndDate.split('.');
		
		if (parseFloat(arr_start[2])>parseFloat(arr_end[2]))
			return false;
		else if ( (parseFloat(arr_start[2])==parseFloat(arr_end[2])) && (parseFloat(arr_start[1])>parseFloat(arr_end[1])) )
			return false;
		else if ( (parseFloat(arr_start[2])==parseFloat(arr_end[2])) && (parseFloat(arr_start[1])==parseFloat(arr_end[1])) && (parseFloat(arr_start[0])>parseFloat(arr_end[0])) )
			return false;
		return true;
	}

function GetCurrentDate()
	{
	var CurrentYear='<%=Year(DateTime.Now)%>';
	var CurrentMonth='<%=Month(DateTime.Now)%>';
	var CurrentDay='<%=Day(DateTime.Now)%>';
	return CurrentDay+'.'+CurrentMonth+'.'+CurrentYear;
	}
function DHFIsNumeric(val)
	{
		var s=val+"";
		var l=s.length;
		var i=0;
		while (s.charAt(i)==' ') i++;
		if (s.charAt(i)=='-') i++;
		var valid = false;
		while (s.charAt(i)>="0" && s.charAt(i)<="9")
			{
			valid = true;
			i++;
			}
		if (s.charAt(i)=='.') i++;
		while (s.charAt(i)>="0" && s.charAt(i)<="9")
			{
			valid = true;
			i++;
			}
		while (s.charAt(i)==' ') i++; 
		return valid && i>=l;
	}		
					
	function DHFIsEmail(val)	
		{ 
		var p1_a, pn_a, p_pt, p_fn
		  
		p1_a = val.indexOf("@");   
		pn_a = val.lastIndexOf("@");
		p_pt = val.lastIndexOf(".");
		p_fn = val.length-1;   
		if ((p1_a < 1 || p_pt < 2 || p1_a != pn_a || p_fn-p_pt>3 || p_fn-p_pt <2))
			{
			return false;
			}
		return true;	 

		}	
	function validatelngchaine(elementid,intlong)
			{  			
  				var el=document.getElementById(elementid).value;
  				
  				if (el.length==0) 
  				{
  					if (event.keyCode < 48  || event.keyCode > 57 ) 
  					{
  						event.returnValue = false;
  					}
  				}
  				else
  				{	
  					if (el.indexOf(".")!=-1)
  					{
  						if (event.keyCode < 48  || event.keyCode > 57 ) 
  						{
  							event.returnValue = false;
  						}
  					}
  					else
  					{  				
  						if (el.length>=intlong-3) 
  						{ 					  					
  							if (event.keyCode!=46) 
  							{  					
  								event.returnValue = false;
  							}	
  						} 
						else
							{
								if ((event.keyCode < 48 && event.keyCode!=46)  || event.keyCode > 57 ) 
									{
										event.returnValue = false;
									}	
							}		
						 				  				
  					}
  				}
  			}	
	function validatePosNeglngchaine(elementid,intlong)
			{  			
  				var el=document.getElementById(elementid).value;
  				
  				if (el.length==0) 
  				{
  					if ((event.keyCode < 48 && event.keyCode!=45)  || event.keyCode > 57 ) 
  					{
  						event.returnValue = false;
  					}
  				}
  				else
  				{	
  					if (el.indexOf(".")!=-1)
  					{
  						if (event.keyCode < 48  || event.keyCode > 57 ) 
  						{
  							event.returnValue = false;
  						}
  					}
  					else
  					{  				
  						if ((el.length>=intlong-4  && el>=0) || (el.length>=intlong-3  && el<0))
  						{ 					  					
  							if (event.keyCode!=46) 
  							{  					
  								event.returnValue = false;
  							}	
  						} 
						else
							{
								if ((event.keyCode < 48 && event.keyCode!=46)  || event.keyCode > 57 ) 
									{
										event.returnValue = false;
									}	
							}		
						 				  				
  					}
  				}
  			}	 
  			
  			function OnlyInteger(intType) 
				{ 
					if (intType	== 0)  
						{
							if (event.keyCode < 48 || event.keyCode > 57)
								{
									event.returnValue = false;
								}
						}
					else
						{
							if (event.keyCode < 47 || event.keyCode > 57)
								{
									event.returnValue = false;
								}
						}		
				}	
	/* ---- ---- -- -- ---- ------- - ------- -- ----- -- --- */
	/* this part is to test weither a content is empty or not */
			function IsFieldEmpty(elementid) 
				{ 
					if (trim(GetFieldValue(elementid, '')).length==0)
						return true;
					
					return false;
				}
				
			
			function IsEmail(val)	
				{ 
					var p1_a, pn_a, p_pt, p_fn
					p1_a = val.indexOf("@");   
					pn_a = val.lastIndexOf("@");
					p_pt = val.lastIndexOf(".");
					p_fn = val.length-1;   

					if ((p1_a < 1 || p_pt < 2 || p1_a != pn_a || p_fn-p_pt>3 || p_fn-p_pt <2))
						{
						return false;
						}
					return true;	 
				}
			function SetFieldFocusByID(ItemID)
				{
					if (!ItemID)
						return false;
					if (document.getElementById(ItemID))
						{
							if (document.getElementById(ItemID).disabled == false && document.getElementById(ItemID).type!='hidden')
							{
								document.getElementById(ItemID).focus();
								if(document.getElementById(ItemID).type=='text' )document.getElementById(ItemID).select();
							}
						}
				}
			function ShowDiv(nObjet) 
			{
					if(ie4) 
						{ // Internet explorer
							eval(nObjet).style.display = '';
						}
					else if(ns4) 
						{ // Netscape 4.x
							document.eval(nObjet).display = '';
						}
					else if(ns6) 
						{ // Netscape 6 (mozilla)
							var divns6 = document.getElementsByTagName("div")
							divns6[nObjet].style.display = '';
						}
					else
						{
							eval(nObjet).style.display = '';
						}
			}
			
			function HideDiv(nObjet) 
			{	
					if(ie4) 
						{ // Internet explorer
							eval(nObjet).style.display = 'none';
						}
					else if(ns4) 
						{ // Netscape 4.x
							document.eval(nObjet).display = 'none';
						}
					else if(ns6) 
						{ // Netscape 6 (mozilla)
							var divns6 = document.getElementsByTagName("div")
							divns6[nObjet].style.display = 'none';
						}
					else
						{
							eval(nObjet).style.display = 'none';
						}
				
			}

/*  --------  Check boxes and radio   ---------- */
function GetCheckedRadioAdvanced(pForm, pSGroup)
	{
		var chkdRadio = null, e, vabRid; 
		if (pForm && (e = pForm.elements) && (vabRid = e[pSGroup])) 
			{ 
				chkdRadio = false; 
				for (var index = 0, len = vabRid.length, io = null; index < len; index++) 
					{ 
						if ((io = vabRid[index]).checked) 
						{ 
							chkdRadio = io; 
							break; 
						} 
					} 
			}
		return chkdRadio;
	} 
	
function HideAllFormDivs(pForm,pSGroup)
	{
		HideAllAdvanced(pForm, pSGroup);
		return true ;
		
		var el=document.getElementById(pForm);
		if (el)
			{
				var tags = el.getElementsByTagName('input');
				var nbrRadios = 0;
				var Contr;
				/* Get the number of selected radio in the group */
				for (Contr=0; Contr<tags.length; Contr++)
					{
						if ((tags[Contr].type=="radio"))	
							HideDiv(eval('div' + tags[Contr] + '_' + Contr)); 
					}
						
						//nbrRadios = nbrRadios + 1 ;
				/* Hide all divs */
				/*if (nbrRadios>0)
					{
						for (Contr=1; Contr<=nbrRadios; Contr++)
							{
								HideDiv(eval('div' + pCurntChckBxID + '_' + Contr)); 
							}
								
					}*/
			}
	}
	
function UnCheckAllItems(pForm, pCurntChckBxID)
	{
		var el=document.getElementById(pForm);
		if (el)
			{
				/* Uncheck all the checkboxes */
				var tags = el.getElementsByTagName('input');
				//alert('Nmbr :' + tags.length);
				var x; 
				var val_check=-1;
				var nbrRadios = 0;
				var Contr;
				for (Contr=0; Contr<tags.length; Contr++)
					{
						if ((tags[Contr].type=="checkbox"))
							{
								tags[Contr].checked=false;
							}
						else if ((tags[Contr].type=="radio"))	
							nbrRadios = nbrRadios + 1 ;
					}
					
				/* Get the number of selected radio in the group */
				
				if ((x = GetCheckedRadioAdvanced(el, pCurntChckBxID))) 
					{ 
						val_check = x.value;
						//alert("checkedButton = " + x.value); 
					} 
				else if (x == false) 
					{ 
						val_check = -1;
						//alert("No button is checked."); 
					} 
				else 
				{ 
					val_check = -1;
				} 
				/* Show the selected div and hide all the others */
				
				
				if (val_check>0)
					{
						/* Show selected Div */
						ShowDiv(eval('div' + pCurntChckBxID + '_' + val_check)); 
						/* hide the others */
						//alert(eval('div' + pCurntChckBxID + '_' + val_check));
						
						for (Contr=1; Contr<=nbrRadios; Contr++)
							{
								try { // it may be possible to have other radio groups without div groups.....
										if (val_check!=Contr)
											HideDiv(eval('div' + pCurntChckBxID + '_' + Contr)); 	
									} 
								catch (e) 
									{ 
									
									} 
								
							}
								
					}
			}
	}
	
	function GetSelectedRadioValue(pForm, pCurntChckBxID)
	{
		var el=document.getElementById(pForm);
		if (el)
			{
				/* Uncheck all the checkboxes */
				var tags = el.getElementsByTagName('input');
				//alert('Nmbr :' + tags.length);
				var x; 
				var val_check=-1;
				var nbrRadios = 0;
				var Contr;
				for (Contr=0; Contr<tags.length; Contr++)
					{
						if ((tags[Contr].type=="radio"))	
							nbrRadios = nbrRadios + 1 ;
					}
				/* Get the number of selected radio in the group */
				if ((x = GetCheckedRadioAdvanced(el, pCurntChckBxID))) 
					{ 
						val_check = x.value;
					} 
				else if (x == false) 
					{ 
						val_check = -1;
						//alert("No button is checked."); 
					} 
				else 
				{ 
					val_check = -1;
				} 
			return val_check;
			}
	}
	
	function GetCheckBoxValue(pForm, pSGroup)
	{
		var chkdRadio = null, e, vabRid;
		if (pForm && (e = pForm.elements) && (vabRid = e[pSGroup]))
			{
				chkdRadio = false;
				for (var index = 0, len = vabRid.length, io = null; index < len; index++)
					{
						if ((io = vabRid[index]).checked)
						{
							chkdRadio = io;
							break;
						}
					}
			}
		return chkdRadio;
	}
	
	function GetCheckBoxValue(elementid)
	{
		var el=document.getElementById(elementid);
		if (el)
			{
				if (el.checked==true)
					return 1;
				else
					return 0;
			}
		return 0;
	}
	
	function DisableTheForm(FormID)
	{
		DisableTheFormButtons(FormID);
	}
	
		function DisableTheFormButtons(FormID)
	{
		var el=document.getElementById(FormID);
		if (el)
			{
				var tags = el.getElementsByTagName('input');
				for (var i=0; i<tags.length; i++)				
					{
						if ((tags[i].type=="button") || (tags[i].type=="submit"))
						{
							DisableButton(tags[i]);
						}
					}
			}
	}
	
	function DisableButton(ItemID)
	{
		if (!IsFieldActive(ItemID))
			return;
		
		document.getElementById(ItemID).disabled ="true";	
	}
	
		function IsFieldActive(ItemID)
	{
		if (document.getElementById(ItemID))
			{
				if (document.getElementById(ItemID).readOnly == false && document.getElementById(ItemID).disabled == false && document.getElementById(ItemID).type!='hidden')
				{
					return true;
				}
				else
					return false;
			}
		else
			return false;
	}
	
		function ControlIntValue(elmID)
			{
				var mValue=0;
				if (elmID)
					{
						mValue=GetFieldValue(elmID,0);
						if (mValue.length>0) 
							mValue=parseInt(mValue);
						
						if ((mValue.length==0) || (mValue<0) || (!DHFIsNumeric(mValue))||(isNaN(mValue)))
							{
								DHFSetFieldValue(elmID,'1');
							}
						else
						
							{
								DHFSetFieldValue(elmID,mValue);
								DHFSetFieldValue(elmID,mValue);
							}
						
					}
			}
	function getElemNumber(name)
	{
		var el=document.getElementById(name);
		if (el)
			{
			var vl=el.value;
			return(parseFloat(vl));
			}
		return 0.00;
	}		
		function ControlPercentValue(elmID)
			{
				var mValue=0;
				if (elmID)
					{
						mValue=GetFieldValue(elmID,0);
						if (mValue.length>0) 
							mValue=parseInt(mValue);
						
						if ((mValue.length==0) || (mValue==0)|| (mValue<0) || (!DHFIsNumeric(mValue))||(isNaN(mValue)))
							{
								DHFSetFieldValue(elmID,'0');
							}
						else if (mValue>100) 
							DHFSetFieldValue(elmID,'100');
						else
						
							{
								//mValue=mValue.toFixed(2);
								if (parseInt(mValue)>100)
									{
										alert('Error! Max=100');
										DHFSetFieldValue(elmID,100);
									}
								else
									{
										DHFSetFieldValue(elmID,mValue);
										//DHFSetFieldValue(elmID,round5(mValue));
									}
							}
						
					}
			}
			
	function round5(n) {
		return (Math.round(n*20)/20).toFixed(2);
	}
	
	function IsDateMMYYYY(val)
	{
	var a;
	var m=0;
	
	if (val.indexOf('.')>=0)
		{
			a=val.split('.');
			if (a.length!=2) return false;
		}
	else
		return false;
	var y=1;
	if (!DHFIsNumeric2(a[m], false, false) ||
		!DHFIsNumeric2(a[y], false, false) ||
		a[m]<1 || a[m]>12 || a[y]<1899 || a[y]>2099)
		return false;
		
	if ( (a[y].length>4) || (a[m].length>2) || (a[y].length<4) )
		return false;
	
	return true;
	}


/* controls dates of the format 12/2006 MM/YYYY */	
function IsDateMM_slash_YYYY(val)
	{
	var a;
	var m=0;
	
	if (val.indexOf('/')>=0)
		{
			a=val.split('/');
			if (a.length!=2) return false;
		}
	else
		return false;
	var y=1;
	if (!DHFIsNumeric2(a[m], false, false) ||
		!DHFIsNumeric2(a[y], false, false) ||
		a[m]<1 || a[m]>12 || a[y]<1899 || a[y]>2099)
		return false;
		
	if ( (a[y].length>4) || (a[m].length>2) || (a[y].length<4) )
		return false;
	
	return true;
	}
	
/* _____________________________________________________________________________ */
function ControlFloatValue_old(elmID)
		{
			var inValue=0;
			if (elmID)
				{
					inValue=GetFieldValue(elmID,0);
					if (inValue.length>0) inValue=parseFloat(inValue);
					
				if ((inValue.length==0) || (inValue==0) || (!DHFIsNumeric(inValue))||(isNaN(inValue)))
					{
						DHFSetFieldValue(elmID,'0.00');
					}
				else
						{
							inValue=inValue.toFixed(2);
							DHFSetFieldValue(elmID,inValue);
						}
					
				}
		}
/* HA: August 31st, ControlFloatValue_old : returns wrong values 
	with large numbers e.g: 33.333.333.333.333.333 ___________________________________________________ */

function ControlFloatValue(elmID)
		{
			var inValue=0;
			
			var TabFloat;
			var IntPart=0, FloatPart=0;
			//inValue=GetFieldValue(elmID,0);
			
			
			if (elmID)
				{	//inValue=replace(inValue,"'","")
					inValue=GetFieldValue(elmID,0);
					inValue=inValue.replace(/'/g,"");
				/*if (inValue.indexOf("'")>=0) 
				{inValue=inValue.replace("'","")}*/
					if (inValue.length>0) 
						{
							if (inValue.indexOf('.')>=0)
								{
									TabFloat=inValue.split('.');
									if (TabFloat.length==1) 
										{
											IntPart= TabFloat[0];
										}
									else if (TabFloat.length==2)
										{
											IntPart= TabFloat[0];
											FloatPart= TabFloat[1];
										}
								}
							else // Single number
								{
									IntPart = inValue;
								}
						}
					
					if (FloatPart.length>2)	
						{
							var ch = FloatPart.substring(0,3);
							if (FloatPart.length>0) 
								{
									FloatPart=parseFloat(ch)/1000;
									FloatPart=FloatPart.toFixed(2);
								}
						}
					else if (FloatPart.length<2)	 // length = 1 e.g : 5
						{
							FloatPart=parseFloat(FloatPart)/10;
							FloatPart=FloatPart.toFixed(2);
						}
					// otherwise keep the value as it is (2 digits after .)
						
					
					if ((IntPart.length==0) || (IntPart==0) || (!DHFIsNumeric(IntPart))||(isNaN(IntPart)))
						{
							IntPart = 0;
						}
					
					if ((FloatPart.length==0) || (FloatPart==0) || (!DHFIsNumeric(FloatPart))||(isNaN(FloatPart)))
						{
							FloatPart = 0;
						}
					
					if (FloatPart.length!=4) // e.g 0.1
						{
							FloatPart=parseFloat(FloatPart);
							FloatPart=FloatPart.toFixed(2);
						}
					
					inValue = inValue; // init the affected value
					
					if (FloatPart.length==4) // e.g 0.12
						{
							inValue = IntPart + FloatPart.substring(1, 4);
						}
					
					if ((inValue.length==0) || (inValue==0) || (!DHFIsNumeric(inValue))||(isNaN(inValue)))
						{
							DHFSetFieldValue(elmID,'0.00');
						}
					else
						{
							DHFSetFieldValue(elmID,formatToDecimalCote(inValue,2,"'"));
							//DHFSetFieldValue(elmID,inValue);
						}
				}
		}
		///////Set number in format nnn'nnn'nnn.dd
		function formatToDecimalCote(value,decima,separator) {
	var deci=Math.round( Math.pow(10,decima)*(Math.abs(value)-Math.floor(Math.abs(value)))) ; 
	var val=Math.floor(Math.abs(value));
	if ((decima==0)||(deci==Math.pow(10,decima))) {val=Math.floor(Math.abs(value)); deci=0;}
	var val_format=val+"";
	var nb=val_format.length;
	for (var i=1;i<4;i++) {
		if (val>=Math.pow(10,(3*i))) {
			val_format=val_format.substring(0,nb-(3*i))+separator+val_format.substring(nb-(3*i));
		}
	}
	if (decima>0) {
		var decim=""; 
		for (var j=0;j<(decima-deci.toString().length);j++) {decim+="0";}
		deci=decim+deci.toString();
		val_format=val_format+"."+deci;
	}
	if (parseFloat(value)<0) {val_format="-"+val_format;}
	return val_format;
	}
	
