/*
To 'shrink' this file: http://www.julienlecomte.net/yuicompressor/

Usage: <script language="JavaScript" src="/qqest/include/Utilities.js"></script>
KeyCodes:
[enter 13] [space 32] [! 33] [" 34] [# 35] [% 37] [& 38] [' 39] [() 40-41] [+ 43] [, 44] [- 45] [. 46] [/ 47] [0-9 48-57] [: 58] [; 59] [< 60] [= 61] [> 62] 
[? 63] [@ 64] [A-Z 65-90] ['[' 91] [\ 92] [']' 93] [_ 95] [a-z 97-122] [126 ]
*/

/*
This will block invalid characters from being entered in various text fields.
This will mask an input box like 40:00
Usage: <input type=text name=Time maxlength=5 size=5 onkeypress='event.returnValue = timeFormatMask(this.value,this.name);'>
Valid Chars: 0-9, :
*/
function timeFormatMask(theBox,thename){
  if (event.keyCode != 58 && (event.keyCode < 48 || event.keyCode > 57))
	  return false;
  else
  {
	  if(theBox.length == 2){
		  if (event.keyCode != 58){
			  document.all[thename].value = theBox + ":";
			  if((event.keyCode > 53 && event.keyCode <= 57))
				  event.keyCode = 53;
		  }
	  }
	  else if(theBox.length == 3){
		  if((event.keyCode > 53 && event.keyCode <= 57))
			  event.keyCode = 53;
	  }
	  return true;
  }
}

/*
This will block invalid characters from being entered in various text fields.
Usage: <input name="DateStart" type="text" onKeypress='event.returnValue = KeyPressDate(this, 1);'>
Valid Chars: 0-9, /
*/
function KeyPressDate(oField, AutoFormat) {
  if((event.keyCode < 47 || event.keyCode > 57) && event.keyCode != 13)
    return false;
  else 
    return true;
}

/*
This will block invalid characters from being entered in various text fields.
Usage: <input type=text name=Time maxlength=5 size=5 onkeypress='event.returnValue = KeyPressTime(this,1);'>
Valid Chars: 0-9, :
*/
function KeyPressTime(oField, AutoFormat) {
  if(AutoFormat == 0) {
    if(event.keyCode < 48 || event.keyCode > 58)
      return false;
    else 
      return true;
  }
  else{
    if(event.keyCode < 48 || event.keyCode > 58)
      return false;

    var Key;
    Key = String.fromCharCode(event.keyCode)
    switch (oField.value.length){
    case 0 :
      if (event.keyCode == 58)
			  return false;
      else if(event.keyCode > 50){
        oField.value = "0" + Key + ":";
        return false;
      }
      break;
    case 1 :
      if (oField.value < 2)
			  if(event.keyCode > 57)
			    return false;
			  else {
			    oField.value = oField.value + Key + ":";
			    return false;
			  }
		  else if (oField.value == 2)
			  if(event.keyCode > 51)
			    return false;
			  else {
			    oField.value = oField.value + Key + ":";
			    return false;
			  }
			  break;
    case 2 :
      if(event.keyCode != 58)
        return false;
      break;
    case 3 :
      if(event.keyCode > 53)
        return false;
      break;
    case 4 :
      if(event.keyCode > 57)
        return false;
      break;
    case 5 :
		  if(event.keyCode < 48 || event.keyCode > 57)
			  return false;
		  break;
	  default:
      return false;
    }

    return true;
  }
}

/*
This will only normal text.
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressText1(this);'>
Valid Chars: [enter 13]  [0-9 48-57]  [A-Z 65-90]  [a-z 97-122] 
*/
function KeyPressText1(oField) {
  if( (event.keyCode == 13) || (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 65 && event.keyCode <= 90) || (event.keyCode >= 97 && event.keyCode <= 122) )
    return true;
  else
    return false;
}

/*
This will only normal text, and in also the dash, underline and ampersand.
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressLoginInfo(this);'>
Valid Chars: [enter 13]  [& 38]  [- 45]  [0-9 48-57]  [A-Z 65-90]   [_ 95]  [a-z 97-122] 
*/
function KeyPressLoginInfo(oField) {
  if( (event.keyCode == 13) || (event.keyCode == 38) || (event.keyCode == 45) || (event.keyCode == 95) || (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 65 && event.keyCode <= 90) || (event.keyCode >= 97 && event.keyCode <= 122) )
    return true;
  else
    return false;
}

/*
This will only normal text, and in also the dash, underline and ampersand.
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressLoginInfo(this);'>
Valid Chars: [enter 13]  [& 38]  [- 45] [. 46] [0-9 48-57] [@ 64]  [A-Z 65-90]  [\ 92]  [_ 95]  [a-z 97-122] 
*/
function KeyPressLDAPLoginInfo(oField) {
  if( (event.keyCode == 13) || (event.keyCode == 38) || (event.keyCode == 45) || (event.keyCode == 46) || (event.keyCode == 92) || (event.keyCode == 95) || (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 64 && event.keyCode <= 90) || (event.keyCode >= 97 && event.keyCode <= 122) )
    return true;
  else
    return false;
}

function KeyPressPayentryLoginInfo(oField) {
  if((event.keyCode == 13) || (event.keyCode >= 32 && event.keyCode <= 126 && event.keyCode != 34 && event.keyCode != 59 && event.keyCode != 92))
    return true;
  else
    return false;
}


/*
This will only normal text, and in also the dash, underline and ampersand.
Usage: CheckLoginChars(textbox);
Valid Chars: [enter 13]  [& 38]  [- 45] [. 46] [0-9 48-57] [@ 64] [A-Z 65-90] [\]  [_ 95]  [a-z 97-122] 
*/
function CheckLoginChars(oField) {
	var strText = new String(oField.value);
  for(var i=0; i<strText.length; i++) {
  	if (!((strText.charCodeAt(i) == 13) || (strText.charCodeAt(i) == 38) || (strText.charCodeAt(i) == 45) || (strText.charCodeAt(i) == 46) || (strText.charCodeAt(i) == 92) || (strText.charCodeAt(i) == 95) || (strText.charCodeAt(i) >= 48 && strText.charCodeAt(i) <= 57) || (strText.charCodeAt(i) >= 64 && strText.charCodeAt(i) <= 90) || (strText.charCodeAt(i) >= 97 && strText.charCodeAt(i) <= 122)))
			{
				alert("Invalid data was entered.");
				oField.focus();
				return false;
			}
	}
	return true;
}

/*
This will only normal text, and in also the dash, underline and ampersand.
Usage: CheckLoginChars(textbox);
Valid Chars: [enter 13] [space 32] most except [" 34] [; 59] [/ 92]
*/
function CheckPayentryLoginChars(oField) {
	var strText = new String(oField.value);
  for(var i=0; i<strText.length; i++) {
		if(!((strText.charCodeAt(i) == 13) || (strText.charCodeAt(i) >= 32 && strText.charCodeAt(i) <= 126 && strText.charCodeAt(i) != 34 && strText.charCodeAt(i) != 59 && strText.charCodeAt(i) != 92))){
				alert("Invalid data was entered.");
				oField.focus();
				return false;
			}
	}
	return true;
}

/*
This will only normal text.
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressText(this);'>
Valid Chars: 0-9, a-z, A-Z, space, dash, 
*/
function KeyPressText(oField) {
  if ((event.keyCode !=32) && (event.keyCode !=45) && (event.keyCode < 39 || event.keyCode >= 39) && (event.keyCode < 47 || event.keyCode > 57) && (event.keyCode < 65 || event.keyCode > 90) && (event.keyCode < 97 || event.keyCode > 122))
    return false;
  else
    return true;
}

/*
This will only normal text and a decimal
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressText2(this);'>
Valid Chars: 0-9, a-z, A-Z, space, dash, decimal
*/
function KeyPressText2(oField) {
  if ((event.keyCode !=32) && (event.keyCode !=45) && (event.keyCode !=46) && (event.keyCode < 38 || event.keyCode > 39) && (event.keyCode < 47 || event.keyCode > 57) && (event.keyCode < 65 || event.keyCode > 90) && (event.keyCode < 97 || event.keyCode > 122))
    return false;
  else
    return true;
}

/*
Usage: <input name='Int' type='text' onKeypress='event.returnValue = KeyPressText3(this);'>
Valid Chars: enter, 0-9, a-z, A-Z, space, &, dash, decimal, underscore, colon, semi-colon, comma, apostrophie
*/
function KeyPressText3(oField) {
  if ((event.keyCode !=13) && (event.keyCode !=32) && (event.keyCode !=38) && (event.keyCode !=39) && (event.keyCode !=45) && (event.keyCode !=46) && (event.keyCode !=44) && (event.keyCode !=59) && (event.keyCode !=58) && (event.keyCode !=95) && (event.keyCode == 38 || event.keyCode < 47 || event.keyCode > 57) && (event.keyCode < 60 || event.keyCode > 90) && (event.keyCode < 97 || event.keyCode > 122))
    return false;
  else
    return true;
}

/*
Usage: <input name='Int' type='text' onKeypress='event.returnValue = KeyPressText4(this);'>
Valid Chars: 0-9, a-z, A-Z, space, dash, decimal, pipe
*/
function KeyPressText4(oField) {
  if ((event.keyCode != 32) && (event.keyCode != 45) && (event.keyCode != 46) && (event.keyCode < 39 || event.keyCode >= 39) && (event.keyCode < 47 || event.keyCode > 57) && (event.keyCode < 65 || event.keyCode > 90) && (event.keyCode < 97 || (event.keyCode > 122 && event.keyCode != 124)))
    return false;
  else
    return true;
}

/*
Usage: <input name='Int' type='text' onKeypress='event.returnValue = KeyPressText5(this);'>
Valid Chars: enter, 0-9, a-z, A-Z, space, periods-46, comma-44, question mark-63, exclamation mark-33
*/
function KeyPressText5(oField) {
    if ((event.keyCode != 13) && (event.keyCode != 32) && (event.keyCode != 46) && (event.keyCode != 63) && (event.keyCode != 33) && (event.keyCode != 44) && (event.keyCode == 38 || event.keyCode < 47 || event.keyCode > 57) && (event.keyCode < 60 || event.keyCode > 90) && (event.keyCode < 97 || event.keyCode > 122))
        return false;
    else
        return true;
}

/*
This will make sure only an int can be entered.
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressInt(this,0);'>
Valid Chars: 0-9
*/
function KeyPressInt(oField, AllowNeg) {
  var Neg;

  if(AllowNeg == 1){
    Neg = (event.keyCode !=45);
    if((Neg == false) && /\-/.test(oField.value)){ return false; }
  }
  else
    Neg = true;

  if (Neg && (event.keyCode != 13) && (event.keyCode < 48 || event.keyCode > 57))
    return false;
  else
    return true;
}

/*
This will make sure only an int can be entered.
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressIntIP(this);'>
Valid Chars: 0-9, *
*/
function KeyPressIntIP(oField) {
  if ((event.keyCode != 42) && (event.keyCode != 13) && (event.keyCode < 48 || event.keyCode > 57 || event.keyCode == 42))
    return false;
  else
    return true;
}

/*
This will make sure only an int can be entered.
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressInt(this,0);'>
Valid Chars: 0-9
*/
function KeyPressIntPort(oField, AllowNeg) {
  var Neg;
  
  if(AllowNeg == 1){
    Neg = (event.keyCode !=45);
    if((Neg == false) && /\-/.test(oField.value)){ return false; }
  }
  else
    Neg = true;
  if (Neg && (event.keyCode != 13) && (event.keyCode < 48 || event.keyCode > 57))
    return false;
  else
    if(parseInt(oField.value + String.fromCharCode(event.keyCode)) > 65535 || parseInt(oField.value + String.fromCharCode(event.keyCode)) == 0){
	alert('Please enter a value between 1 - 65535');
	oField.value = oField.value;
	return false;
    } 
    return true;
}

/*
This will make sure only an int, space, parenthesis, comma, dash, number sign, or asterik can be entered.
Usage: <input name='MyText' type='text' onKeypress='event.returnValue = KeyPressPhone(this);'>
Valid Chars: Phone characters
*/
function KeyPressPhone(oField) {
  //allow backspace
  if (event.keyCode == 8)
	  return true;

  if ((event.keyCode == 32) || (event.keyCode == 35) || ((event.keyCode > 39) && (event.keyCode != 43) && (event.keyCode < 46)))
	  return true;
  else if ((event.keyCode > 47) && (event.keyCode < 58))
    return true;
  else
    return false;
}

/*
This will make sure only a decimal can be entered.
Usage: <input name="Decimal" type="text" onKeypress='event.returnValue = KeyPressDecimal(this,0);'>
Valid Chars: 0-9, and one period
*/
function KeyPressDecimal(oField, AllowNeg) {
  var Neg;

  if(AllowNeg == 1){
    Neg = (event.keyCode !=45);
    
    if((Neg == false) && (/\-/.test(oField.value)))
		  { 
			  return false;
		  }
  }
  else
    Neg = true;

  if (Neg && (event.keyCode !=46) && (event.keyCode < 48 || event.keyCode > 57))
    return false;
  else {
    if((event.keyCode == 46) && /\./.test(oField.value)){ return false; }

    return true;
  }
}

/*
This will make sure only a valid ip address characters can be entered.
Usage: <input name="IP" type="text" onKeypress='event.returnValue = KeyPressIP(this,0);'>
Valid Chars: 0-9, and three periods
*/
function KeyPressIP(oField, AllowNeg) {
  var Neg;

  //allow backspace
  if (event.keyCode == 8)
	  return true;

  if(AllowNeg == 1){
    Neg = (event.keyCode !=45);
    if((Neg == false) && /\-/.test(oField.value)){ return false; }
  }
  else
    Neg = true;

  if (Neg && (event.keyCode !=46) && (event.keyCode < 48 || event.keyCode > 57))
    return false;
  else {
    //if decimal pressed ensure that 3 decimals don't already exist
    var str = oField.value;
    var ary = str.match(/\./g);
    var occurrences = 0;
    if (ary != null)
		  occurrences = ary.length;
    if((event.keyCode == 46) && (occurrences==3)){ return false; }
    return true;
  }
}


function CheckEmail(oField, IsVerbose) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(oField.value))
    return (true)
  if(IsVerbose == 1)
    alert("Invalid E-mail Address! Please re-enter.")

  return (false)
}

/*
This will round a number
*/
function Round(number,X) { 
  X = (!X ? 2 : X); return Math.round(number*Math.pow(10,X))/Math.pow(10,X); 
}

function formatCurrency(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
  num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
  cents = "0" + cents; 
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
  num = num.substring(0,num.length-(4*i+3))+''+
  num.substring(num.length-(4*i+3)); 
  return (((sign)?'':'-') + "$" + num + '.' + cents);
}


/*
This function auto-formats a currency field.
Usage: <input type=text name=MySpiffyCurrency length=15 onkeypress='return(currencyFormat(this,',','.',event))'>
Original Author:  Mario Costa (mariocosta@openlink.com.br)
*/
function currencyFormat(fld, milSep, decSep, e) {
  var sep = 0;
  var key = '';
  var i = j = 0;
  var len = len2 = 0;
  var strCheck = '0123456789';
  var aux = aux2 = '';
  var whichCode = (window.Event) ? e.which : e.keyCode;

  if (whichCode == 13) return true;  // Enter
  key = String.fromCharCode(whichCode);  // Get key value from key code
  if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
  len = fld.value.length;
  for(i = 0; i < len; i++)
    if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
  aux = '';
  for(; i < len; i++)
    if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
  aux += key;
  len = aux.length;
  if (len == 0) fld.value = '';
  if (len == 1) fld.value = '0'+ decSep + '0' + aux;
  if (len == 2) fld.value = '0'+ decSep + aux;
  if (len > 2) {
    aux2 = '';
    for (j = 0, i = len - 3; i >= 0; i--) {
      if (j == 3) {
        aux2 += milSep;
        j = 0;
      }
      aux2 += aux.charAt(i);
      j++;
    }
    fld.value = '';
    len2 = aux2.length;
    for (i = len2 - 1; i >= 0; i--)
      fld.value += aux2.charAt(i);
    fld.value += decSep + aux.substr(len - 2, len);
  }
  return false;
}

function isValidTime(box){
  // Original Author: Sandeep V. Tamhankar (stamhankar@hotmail.com) -->

  // Checks if time is in HH:MM:SS format.
  // The seconds are optional.

  var timeStr = box.value;
  var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?$/;

  var matchArray = timeStr.match(timePat);
  if (matchArray == null){
    alert("Time is not in a valid format.");
    //box.focus();
    box.select();
    return false;
  }
  else{
    hour = matchArray[1];
    minute = matchArray[2];
    second = matchArray[4];

    if (second==""){
      second = null;
    }

    if (hour < 0  || hour > 23){
      alert("Hour must be between 0 and 23");
      //box.focus();
      box.select();
      return false;
    }

    else if (minute < 0 || minute > 59){
      alert ("Minute must be between 0 and 59.");
      //box.focus();
      box.select();
      return false;
    }
  }
  return true;
}

/*
This function will display a popup indcating that the page is processing.
Usage: Response.Write "<script language=""javascript""> CreateStatus() </script>" & chr(13) & chr(10)
  Response.Flush

  This should be at the top of the asp page.
  Server.ScriptTimeout = 1800
  Response.Buffer = True
  Response.Expires=0
*/
function CreateStatus(){
	statusWindow = window.open ('', 'statusWindow', 'dependent=1, directories=0, height=20, hotkeys=0, location=0, menubar=0, resizable=0, scrollbars=0, status=0, titlebar=0, toolbar=0, width=250, left='+(screen.width/2-125)+', top='+(screen.height/2.5-125));
	statusWindow.document.write('<html><head><title>Processing... Please Wait...</title></head>\n');
	statusWindow.document.write('<body><center><table width="200"><tr><td align="center"><img src="../images/animated/Processing.gif"></td></tr>\n');
	statusWindow.document.write('</table></center></body></html>\n');
}
/*
This function will close the CreateStatus popup indcating that the page is processing.
Usage: Response.Write "<script language=""javascript""> CloseStatus() </script>" & chr(13) & chr(10)
	   Response.Flush
*/
function CloseStatus(){
  statusWindow.close();
}
	
/*
This function will determine the amount of hours between two times in hh:mm format.
*/
function timeDifference(strTime1, strTime2){
  var date1 = new Date();
  var date2 = new Date();
  var diff  = new Date();
            
  var date1temp = new Date("December 30, 1998" + " " + strTime1 + ":00");

  if (strTime1 > strTime2)
    var date2temp = new Date("December 31, 1998" + " " + strTime2 + ":00");
  else
    var date2temp = new Date("December 30, 1998" + " " + strTime2 + ":00");
    	       
  date1.setTime(date1temp.getTime());
  date2.setTime(date2temp.getTime());
    	      
  diff.setTime(Math.abs(date1.getTime() - date2.getTime()));

  var timediff = diff.getTime();
            
  var hours = timediff / (1000 * 60 * 60);
  return hours;
}

/*
Creates an XMLHTTPRequest object and controls it communication.
*/
function loadXMLDoc(url){
  if (window.XMLHttpRequest){
    req = new XMLHttpRequest();
    req.onreadystatechange = processReqChange;
    req.open("GET", url, true);
    req.send(null);
  } 
  else if (window.ActiveXObject){
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req){
      req.onreadystatechange = processReqChange;
      req.open("GET", url, true);
      req.send();
    }
  }
}

/*
This function will determine the amount of day between two dates.
Accepts two Date object arguments.
*/
function days_between(date1, date2) {
  // The number of milliseconds in one day
  var ONE_DAY = 1000 * 60 * 60 * 24

  // Convert both dates to milliseconds
  var date1_ms = date1.getTime()
  var date2_ms = date2.getTime()

  // Calculate the difference in milliseconds
  var difference_ms = Math.abs(date1_ms - date2_ms)

  // Convert back to days and return
  return Math.round(difference_ms/ONE_DAY)
}

/*
This function will check or uncheck all days of the week.
*/
function CheckAllWeekDays(checkTheBoxes){
  if (checkTheBoxes == 1){
	  document.all.sunday.checked = true;
	  document.all.monday.checked = true;
	  document.all.tuesday.checked = true;
	  document.all.wednesday.checked = true;
	  document.all.thursday.checked = true;
	  document.all.friday.checked = true;
	  document.all.saturday.checked = true;
  }
  else{
	  document.all.sunday.checked = false;
	  document.all.monday.checked = false;
	  document.all.tuesday.checked = false;
	  document.all.wednesday.checked = false;
	  document.all.thursday.checked = false;
	  document.all.friday.checked = false;
	  document.all.saturday.checked = false;
  }
}

/*
This function will ensure that at lease one day of the week is checked.
*/
function ensureDayIsChecked(){
  if ((!document.all.sunday.checked) && (!document.all.monday.checked) && (!document.all.tuesday.checked) && (!document.all.wednesday.checked) 
	    && (!document.all.thursday.checked) && (!document.all.friday.checked) && (!document.all.saturday.checked)){
	  alert("You must check at least one day");
	  return false;
  }
  else
	  return true;
}

/*
This function will add days to a specific date.
*/	
function dateAdd(D1,numDays){ 
  var dt = new Date(D1);
  dt.setDate(dt.getDate()+numDays); 
  return dt;
}

/*
This function will return the number of days that are checked between a date to a number of specified days.
*/
function getDayCount(Date1,numDays){
  var j;
  var newDate;
  var dayCount = 0;
  for(j=0;j<numDays;j++){
	  newDate = dateAdd(Date1,j)
	  switch (newDate.getDay()){
	  case 0:
		  if(document.all.sunday.checked)
			  dayCount = dayCount + 1;
		  break;
	  case 1:
		  if(document.all.monday.checked)
			  dayCount = dayCount + 1;
		  break;
	  case 2:
		  if(document.all.tuesday.checked)
			  dayCount = dayCount + 1;
		  break;
	  case 3:
		  if(document.all.wednesday.checked)
			  dayCount = dayCount + 1;
		  break;
	  case 4:
		  if(document.all.thursday.checked)
			  dayCount = dayCount + 1;
		  break;
	  case 5:
		  if(document.all.friday.checked)
			  dayCount = dayCount + 1;
		  break;
	  case 6:
		  if(document.all.saturday.checked)
			  dayCount = dayCount + 1;
		  break;
	  }
  }
  return dayCount;
}

function BlinkDefaultTimer(ElementName,BlinkColor){
  var Color0 = '#ffffff'; // normal state
  var Color1 = BlinkColor; // blinking state
  var BlinkCount = 6;
  var Interval = 500; // milliseconds
  var Style = 'backgroundColor'; //Style to use
  BlinkTimer(ElementName,Color0,Color1,BlinkCount,Interval,Style);
}
function BlinkStateChange(ElementName,NewState,Style){
  document.getElementById(ElementName).style[Style] = NewState;
}
/*
State0 - Normal Color
State1 - Blink Color
Interval - Time in milliseconds
Style - style that will be used
examples: 
  window.onLoad = BlinkTimer("SpiffyElement",'#000000','#ff0000',6,500,'color');
  window.onLoad = BlinkTimer("SpiffyElement",'#ffffff','#ffff00',6,500,'backgroundColor');
  
*/
function BlinkTimer(ElementName,State0,State1,BlinkCount,Interval,Style){
  var Time = 0; var ArrState = new Array(State1,State0);
  for(var i=0; i<BlinkCount; i++) {
    setTimeout('BlinkStateChange("'+ ElementName +'","'+ ArrState[i%2] +'","'+ Style +'")',Time);
    Time += Interval;
  }
}
function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }


