//---------------------------
//    Java Mask Control
//
// v 1.0 awi 29/05/2006
//
//*** 1. HTML Control must have name,id and have to fix maxlength (maxlength=all of character)
//*** 2. Fill style="text-align:right" if you wish to use right to left style
//*** 3. for like currency control please use textbox.defaultValue to calulate NOT use textbox.value
//***    then use function _SetCurrencyValue(textbox,iValue) to set it.
//*** 4. for more mask sign, please use '|' for seperate each mask sign.
//*** 5. for currency mask style if you want thousand deliminator, just  add true value in kilo parameter
//------------------------------------------------------
//For Bank acount, Date ,Time and Percent ....etc
//icheck parameter available with
// - 'ibank'
// - 'idate'
// - 'itime'
// - 'ipercent'  //SPA Request valid value 0% - 100%
// - 'iMultiple' //MTR request on Sep5,2006 for fullfill value format
// - ...
//------------------------------------------------------
//You have to put at least 3 event with 
//1.onpaste
//2.onkeypress
//3.onkeyup
//OPTIONAL onblur
//------------------------------------------------------
//By example with Bank account Control:  *_mask function
//------------------------------------------------------
//<input type = "text" name ="bank1" id ="bank1" onkeyup="javascript:return _mask(this,'4,12','-',event);" 
//onkeypress ="javascript:return _keypressed(event,this);" onpaste="javascript:return _bpaste(event)" 
//onblur="javascript:return _CheckLost(this,'ibank','-','Invalid Bank Account');" maxlength="14" size="13">[###-#######-##]
//1. onkeyup="javascript:return _mask(this,'4,12','-',event);" call function _mask(textbox,loc,delim,e,icheck) So
//	 - textbox = this (HTML control)
//	 - loc = '4,12' (position of deliminators seperate by ',' for more one)
//	 - delim = '-' (deliminator sign seperate by '|' for more one)
//	 - e = event (windows event) 
//	 - icheck = blank (is OPTIONAL parameter for check value is valid or not when press anykey)
//2. onkeypress="javascript:return _keypressed(event,this);" call function _keypressed(e,textbox,Currency)
//	 - e = event (windows event) 
//	 - textbox = this (HTML control)
//	 - Currency = blank (is OPTIONAL parameter for check some key use in currency)
//3. onpaste="javascript:return _bpaste(event)" call function _bpaste(event)
//	 - event = event (windows event) 
//4. onblur="javascript:return _CheckLost(this,'ibank','-','Invalid Bank Account');" call function _CheckLost(textbox,icheck,delim,message)
//**** is OPTIONAL event
//	 - textbox = this (HTML control)
//	 - icheck = 'ibank' (check value is valid for bank account)
//	 - delim = '-' (deliminator sign seperate by '|' for more one)
//	 - message = 'Invalid Bank Account' (your message to show when it's invalid value.) IS OPTIONAL parameter
//------------------------------------------------------
//By example with Currency control:	*_maskDigit function
//------------------------------------------------------
//<input type = "text" name ="Curr1" id ="Curr1" onkeyup="javascript:return _maskDigit(this,'2',',',event,true);" 
//onkeypress ="javascript:return _keypressed(event,this,true);" onpaste="javascript:return _bpaste(event)" 
//maxlength="10" size="13" style="text-align:right">[#######,##]
//1. onkeyup="javascript:return _maskDigit(this,'2',',',event,true);" call function _maskDigit(textbox,detail,delim,e,kilo)
//	 - textbox = this (HTML control)
//	 - detail = '2' (digit number after deliminator sign)
//	 - delim = ',' (deliminator sign can be ',' or '.' or etc..)
//	 - e = event (windows event) 
//   - kilo = true (want thousand deliminator)  IS OPTIONAL parameter
//2. onkeypress ="javascript:return _keypressed(event,this,true);" call function _keypressed(e,textbox,Currency)
//	 - e = event (windows event) 
//	 - textbox = this (HTML control)
//	 - Currency = true (is OPTIONAL parameter for check some key use in currency)
//3. onpaste="javascript:return _bpaste(event)"  call function _bpaste(event)
//	 - event = event (windows event) 
//**** if have >> onblur="javascript:return _CheckLost(this,'ipercent','.','Invalid Percent');"
//4. onblur="javascript:return _CheckLost(this,'ipercent','.','Invalid Percent');" call function _CheckLost(textbox,icheck,delim,message)
//**** is OPTIONAL event
//	 - textbox = this (HTML control)
//	 - icheck = 'ipercent' (check value is valid for percent)
//	 - delim = '.' (deliminator sign seperate by '|' for more one)
//	 - message = 'Invalid Percent' (your message to show when it's invalid value.) IS OPTIONAL parameter
//------------------------------------------------------
//------Key Button ----------
//------------------------------------------------------
//    8  backsp 46 Delete 45(-)
//    16 Shift 17 Ctrl 18 Alt
//    9 TAB 20 Cap lock   
//	  35 End 36 Home
//	  37 Left 39 Right
//    38 Up 40 Down
//	  (,) 44 or 188 ???
//	  (.) 110,192 and 46 ; for 46 why same as Delete
//------------------------------------------------------

var oValue
function _CheckLost(textbox,icheck,delim,message,mfunc)
{	
      var _funceval = ''
      if (mfunc != null) _funceval = mfunc
        
      if(textbox.value=='') return;
	  if(icheck=='idate')
	  {
		if(_datecheck(textbox,delim)=='1') return;
	  }
	  else if(icheck=='itime')
	  {
		if(_timecheck(textbox,delim)=='1') return;
	  }
	  else if(icheck=='ibank')
	  {	
		if(_ValidateBankControl(textbox,delim) == '1' ) 
		  {
			textbox.defaultValue = _replaceIt(textbox.value,"-","")
			return;
		  }
	  }
	  else if(icheck=='ipercent')
	  {
		if(_percentcheck(textbox,delim) == '1' ) return;
	  }
	  else if(icheck=='iMultiple') 
	  {
		var str = textbox.value
		var det = parseFloat(message)
		if (det ==0) return;
		if (!(str.indexOf(delim) > -1)) str = str + delim
		var i = str.indexOf(delim)		 
		var detail = ''
			for (var j=0; j<det ;j++ )
			{
				detail += '0'
			}
			str = str + detail
			str = str.substring(0,i+1) + str.substring(i+1,i+1+det)
			textbox.value = str
		return;
	  }
	  else
	  {	
	    if (_funceval == ''){
	        alert('please check your validate setting?')
	    }else{
	        try{
	        eval(_funceval+'("please check your validate setting?")')
	        }catch(e){
	        }
	    }
		return;
	  }
	if(message!='') {
	   if (_funceval == ''){
	       alert(message)
	   }else{
	       try{
	       eval(_funceval+'("'+message+'");')
	       }catch(e){
	       }
	   }
	}
	if (mfunc == ''){
	    try{
	        eval(textbox).focus()
	    }catch(e){
	    }
	}
}
function _bpaste(event)
{
	return false; 
}
function _onkeydowned(e)
{
	var TmpKey;
	if (window.event){TmpKey = e.keyCode;}//IE
	else {TmpKey = e.which;} //Firefox		
}
function _keypressed(e,textbox,Currency)
{	oValue = textbox.value
	var TmpKey;					
	if (window.event){TmpKey = e.keyCode;}//IE
	else {TmpKey = e.which;} //Firefox		
	//Currency: 43 is '+', 44 is ',', 45 is '-', 46 is '.'
	if(Currency && (parseFloat(TmpKey) > 42 && parseFloat(TmpKey) < 47))	return; 
	if (((parseFloat(TmpKey) < 48) || (parseFloat(TmpKey) > 57)) && (parseFloat(TmpKey) != 13) && (parseFloat(TmpKey)  != 8) && (parseFloat(TmpKey)  != 0) )
	{ 
		return false; 
	}
}
function _maskDigit(textbox,detail,delim,e,kilo)
{	
	detail = parseFloat(detail)
	var TmpKey;
	if (window.event){TmpKey = e.keyCode;}		//IE
	else {TmpKey = e.which;}									//Firefox
	if (parseFloat(TmpKey)==9) return false;		//for multiple control move
	if (parseFloat(TmpKey) != 20 && !(parseFloat(TmpKey) > 15 && parseFloat(TmpKey) < 19) && !(parseFloat(TmpKey) > 34 && parseFloat(TmpKey) < 41))
	{
		var CurPos = _getCurPos(e,textbox)			
		var str = textbox.value
		var i,k
		//### First,add delim if key is "," or "." then remove kilo sign,
		//-------
		if((parseFloat(TmpKey)==188) || (parseFloat(TmpKey)==110) || (parseFloat(TmpKey)==190)) //is "," and "." and "."
		{
			//var iEnd = str.length
			//if (str.indexOf(delim) > -1) iEnd = str.indexOf(delim)
			if(detail!= 0)
			{
				str = str.substring(0,CurPos-1) + delim + str.substring(CurPos,str.length)
			}				
			else
			{
				str = str.substring(0,CurPos-1) + str.substring(CurPos,str.length)
			}
			//str = str.substring(0,str.length) + delim
		}
		else if(parseFloat(TmpKey)==109 || parseFloat(TmpKey)==189) //is "-" key
		{
			var minus = ''
			if (str.substring(0,1) == '-') minus = '-'
			str = minus + str.replace(/-/g,'')
		}	
		else if(parseFloat(TmpKey)==107 || parseFloat(TmpKey)==187) //is "+" key
		{	
			var plus = ''
			if (str.substring(0,1) == '+')  plus = '+'			
			str = plus + str.replace(/\+/g,'')
		}	
		//-------remove kilo sign but use --> var str = textbox.defaultValue --> !! why it doesn't work?
		if (kilo)
		{
			if (delim == ',') str = _replaceIt(str,'.','')
			if (delim == '.') str = _replaceIt(str,',','')
		}
		//### Second check delim have one or more, check detail after delim
		if (str.indexOf(delim) > -1)					//exist (,) at least one
		{
			if((parseFloat(TmpKey)==188) || (parseFloat(TmpKey)==110) || (parseFloat(TmpKey)==190))
			{
				i = str.indexOf(delim)
				if((str.indexOf(delim,i+1) > -1) )	 //second point(,) 
				{
					str = str.substring(0,CurPos-1) + str.substring(CurPos,str.length)
				}
			}
			else
			{
				if((str.length - (str.indexOf(delim)+1)) > detail)
				{			
					str = str.substring(0,str.length-1)
					//str = oValue //not overwrite old value
				}
			}
		}	
		else
		{	
			k = textbox.maxLength - str.length
			if(k < detail+1)
			{
				if ((k == detail) && (detail!= 0)) str = str.substring(0,str.length-1) + delim + str.substring(str.length-1,str.length)
			}
		}
		//### Finally to show:set thousand, set cursor, return valid value
		var head,tail,kilo_sign,i_length,IsAdd_kilo,str_kilo		
		if (kilo)
		{	i = 0; head = ''; str_kilo = str; 
			if (str.indexOf(delim) > -1) 
				{i_length = str.indexOf(delim); tail = str.substring(i_length,str.length)}
			else 
				{i_length = str.length; tail=''	}
			if (delim == ',') kilo_sign = '.'
			if (delim == '.') kilo_sign = ','
			for (k = i_length; k > 0; k--)	
				{	i = i+1
					if ((i % 3 == 0) && (i != i_length)) 
					{ 
						head = kilo_sign + str.substring(k-1, k) + head	; 
						IsAdd_kilo = true
					}
					else 
					{	head = str.substring(k-1, k) + head }
				}
			str = head + tail
		}
		//----fix in IE for maxlength
		textbox.value = str.substring(0,textbox.maxLength)  
		//----correct the position of cursor 
		if ( parseFloat(TmpKey) != 8 && parseFloat(TmpKey) !=46 && (str.substring(CurPos-1,CurPos)==delim || IsAdd_kilo) ) 
		{
			if(str.substring(CurPos-1,CurPos)==delim)
			{
				if (!(str.length - (str.indexOf(delim)+1)>=detail)) CurPos=CurPos+1
			}
			else {CurPos=CurPos+1}
		}
		_setCurPos(e,CurPos)
		//### Return valid value to defaultValue property
		if (kilo) {textbox.defaultValue = str_kilo.replace(',','.') }
		else{textbox.defaultValue = str.replace(',','.')  }		
		//Curr3.value = (textbox.defaultValue)
	}		
}
function _masknopos(textbox,delim,e)
{	
  var CurPos = _getCurPos(e,textbox)
  var str = textbox.value  
  var TmpKey;
  if (window.event){TmpKey = e.keyCode;}	//IE
  else {TmpKey = e.which;}					//Firefox
  if (parseFloat(TmpKey)==9) return false;	//for multiple control move
  if (parseFloat(TmpKey) != 20 && !(parseFloat(TmpKey) > 15 && parseFloat(TmpKey) < 19) && !(parseFloat(TmpKey) > 34 && parseFloat(TmpKey) < 41))
  { 
	var i,k
	var delims = delim.split('|');
    var delimx=false
    for (k=0;k <= str.length -1;k++){
        delimx = false 
        for (i = 0; i <= delims.length-1; i++)  
        {          
          if (str.substring(k,k+1) == delims[i]){
              delimx = true;            
              break;
          }
        }
        if (!delimx) str = str.substring(0,k) + ' '+ str.substring(k+1,str.length)
     }
     textbox.value = _replaceIt(str,' ','')
     _setCurPos(e,CurPos)
  }
}
function _mask(textbox,loc,delim,e,icheck)
{	
  var CurPos = _getCurPos(e,textbox)
  var str = textbox.value  
  var TmpKey;
  if (window.event){TmpKey = e.keyCode;}	//IE
  else {TmpKey = e.which;}					//Firefox
  if (parseFloat(TmpKey)==9) return false;	//for multiple control move
  if (parseFloat(TmpKey) != 20 && !(parseFloat(TmpKey) > 15 && parseFloat(TmpKey) < 19) && !(parseFloat(TmpKey) > 34 && parseFloat(TmpKey) < 41))
  { 
	var i,k
	var locs = loc.split(',');					//--> to each position
	var delims = delim.split('|');
	var delimx
	//----to remove all delim before
	//str = str.replace(/delim/g, '')			// --> '/g' not work for input parameter(delim)
	for (i = 0; i <= delims.length-1; i++)  
	  {
		 str = _replaceIt(str,delims[i],'')
	  }	
	//----group by ','
	for (i = 0; i <= locs.length-1; i++)  
		{
		if(delims.length < i+1){delimx = delimx} 
		else {delimx = delims[i] }
		for (k = 0; k <= str.length; k++)	// remove -1 because for check next string 
			{					
			if (k == locs[i]-1)
				{
				if (str.substring(k, k+1) != delimx)
					{
						str = str.substring(0,k) + delimx + str.substring(k,str.length)
						break;
					}
				}
			}

		}
	//----fix in IE for maxlength
	textbox.value = str.substring(0,textbox.maxLength)  
	//----correct the position of cursor 
	if ( parseFloat(TmpKey) != 8 && parseFloat(TmpKey) !=46) 
	{
		for (i = 0; i <= delims.length-1; i++)  
		  {
			 if (str.substring(CurPos,CurPos+1)==delims[i]) CurPos=CurPos+1 			 
		  }	
	}
	//---------------- optional check
	  if(icheck=='idate')
	  {
		if(_datecheck(textbox,delims[0])=='-1') textbox.value = oValue 
	  }
	  if(icheck=='itime')
	  {
		if(_timecheck(textbox,delims[0])=='-1') textbox.value = oValue 
	  }
	  if(icheck=='ibank')
	  {
		if(_ValidateBankControl(textbox,delims[0]) == '-1' ) 
		  {
			textbox.value = oValue
		  }
		else
		  {
     		textbox.defaultValue = _replaceIt(textbox.value,"-","")
		  }
	  }
	_setCurPos(e,CurPos)
  } 
}
//Return value from Validation check
// -2 : invalid length
// -1 : invalid format
//  1 : ok 
function _datecheck(textbox,delim) //*** FORMAT IS DD/MM/YYYY
{
	var i
	var str = textbox.value  
	var locs = str.split(delim);	
	var bdate,bmonth,byear
	for (i = 0; i <= locs.length-1; i++)  
	{
		if(i==0)
		{	
			if(locs[i].length!=2) return -2;
			bdate = parseFloat(locs[i])	
			if(bdate > 31 || bdate < 1) return -1;
		}
		else if(i==1)
		{
			if(locs[i].length!=2) return -2;
			bmonth = parseFloat(locs[i])	
			if(bmonth > 12 || bmonth < 1) return -1;
		}
		else if(i==2)
		{
			if(locs[i].length!=4) return -2;
			byear = parseFloat(locs[i])	
			if(byear < 1900) return -1;
		}
	}
	if (bmonth==4 || bmonth==6 || bmonth==9 || bmonth==11)
	{	
		if (bdate==31) return -1;
	}
	if (bmonth==2)
	{
		var g=parseInt(byear/4)
		if (isNaN(g)) return -1;
		if (bdate>29) return -1;
		if (bdate==29 && ((byear/4)!=parseInt(byear/4))) return -1;
	}
	return 1;
}
function _timecheck(textbox,delim) //*** FORMAT IS HH:MM
{
	var i
	var str = textbox.value  
	var locs = str.split(delim);	
	var bhour,bminute
	for (i = 0; i <= locs.length-1; i++)  
	{
		if(i==0)
		{	
			if(locs[i].length!=2) return -2;
			bhour = parseFloat(locs[i])	
			if(bhour > 23) return -1;
		}
		else if(i==1)
		{
			if(locs[i].length!=2) return -2;
			bminute = parseFloat(locs[i])	
			if(bminute > 59) return -1;
		}
	}
	return 1;
}
function _percentcheck(textbox,delim) //*** valid value is 0% - 100%
{
	var str = textbox.defaultValue
		if (parseFloat(str) > 100 || parseFloat(str) < 0 ) return -1;
	return 1;
}
function _ValidateBankControl(textbox,delim)
{	//ok 000-1314640-96       
	var mBank = textbox.value
    var st_temp
    var i_del=0
    var i_index
		if((mBank!= "")&&(mBank!=null)){
			st_temp = new String(mBank)
			//remove dash
			i_index = st_temp.indexOf(delim)
			while (i_index > 0)
			{
			  st_temp = st_temp.substring(0,i_index) + st_temp.substring(i_index+1,st_temp.length)
       	      i_index = st_temp.indexOf(delim)
			}
			st_temp1 = new String(st_temp)
			if((st_temp1 != null) && (st_temp1 != "")){
				if(st_temp1.length == 12){
					st_temp1 = st_temp1.substring(0,3)+st_temp1.substring(3,10)
					i_2 = parseFloat(st_temp1)
					i_2 = i_2 % 97
					if (i_2 == 0)
					{
						i_2 = 97
					}
					st_temp1 = st_temp.substring(10,12);
					if (i_2 != parseFloat(st_temp1)){
					    return -1
					}
					else{
					    return 1
					}
				}else{
					return -2
				}
			}
		}
}
function _getCurPos(evtt,dBox)
{
  var pos = 0
  if (window.event) //IE
  {
		var ev = evtt
		ev = window.event
		tr = document.activeElement.createTextRange()
		while (document.selection.createRange().compareEndPoints("StartToStart", tr) > 0) 
		{
			tr.moveStart("character", 1)
			pos++
		}
  }
  else				//Firefox
  {
		pos = dBox.selectionStart
  } 
	return pos;
}
function _setCurPos(ev,curPos)
{
  if (window.event) //IE
  {
	var obj = document.activeElement
	if (obj)
	{
		var tr = obj.createTextRange(curPos)
		if (obj && tr)
		{
			tr.moveStart("character", curPos)
			tr.collapse()
			tr.select()
		}
	}
  }
  else				//Firefox
  {
	var obj = ev.target
	obj.setSelectionRange(curPos,curPos)
  }
}
function _replaceIt(sString, sReplaceThis, sWithThis) 
{ 
	if (sReplaceThis != "" && sReplaceThis != sWithThis) 
	{ 
		var counter = 0; 
		var start = 0; 
		var before = ""; 
		var after = ""; 
		while (counter<sString.length) 
		{ 
			start = sString.indexOf(sReplaceThis, counter); 
			if (start == -1) 
			{ 
				break; 
			} 
			else 
			{ 
				before = sString.substr(0, start); 
				after = sString.substr(start + sReplaceThis.length, sString.length); 
				sString = before + sWithThis + after; 
				counter = before.length + sWithThis.length; 
			} 
		} 
	} 
	return sString; 
} 
function _SetCurrencyValue(textbox,iValue)
{	
	var str = new String(iValue)
	textbox.defaultValue = str.replace(',','.') 
	textbox.value = str.replace('.',',')  //->if not euro style?
	
}
//------------------------
//Create by age 10/07/2009
//input _SetCurrencyValue2(120000, 2)
//output 1,200.00 
function _SetCurrencyValue2(num, decplaces) {
 num = parseFloat(num);
 if (!isNaN(num)) {
  var str = "" + Math.round (eval(num) * Math.pow(10,decplaces));
  if (str.indexOf("e") != -1) {
   return "Out of Range";
  }
  
  while (str.length <= decplaces) {
   str = "0" + str;
  }
  
  var decpoint = str.length - decplaces;
  var tmpNum = str.substring(0,decpoint);
  //---------------Add Commas--------------------------
  var numRet = tmpNum.toString();
  var re = /(-?\d+)(\d{3})/;
  while (re.test(numRet)) {
   numRet = numRet.replace(re, "$1,$2");
  }
  return numRet + "." + str.substring(decpoint,str.length);
 } else {
  return "0.00";
 }
} 

//Thanks to http://www.w3schools.com/jsref/jsref_indexOf.asp
//May06
//IE6 Browser: onactivate onafterupdate onbeforeactivate onbeforecopy onbeforecut onbeforedeactivate onbeforeeditfocus onbeforepaste onbeforeupdate onblur onchange onclick oncontextmenu oncontrolselect oncopy oncut ondatabinding ondblclick ondeactivate ondisposed ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop onerrorupdate onfilterchange onfocus onfocusin onfocusout onhelp oninit onkeydown onkeypress onkeyup onload onlosecapture onmousedown onmouseenter onmouseleave onmousemove onmouseout onmouseover onmouseup onmousewheel onmove onmoveend onmovestart onpaste onprerender onpropertychange onreadystatechange onresize onresizeend onresizestart onselect onselectstart onserverchange onunload

//SPA 24/04/2007 ADD function for format nn.nnn.nnn,nn
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)
}

function _dovalidate_date(textboxname)
{
    try{
        if (document.getElementById(textboxname).value == '') return true
        return (_datecheck(document.getElementById(textboxname),'/') =='1')
    }catch(e){
        return true
    }
}
function _dovalidate_time(textboxname)
{
    try{
        if (document.getElementById(textboxname).value == '') return true
        return (_timecheck(document.getElementById(textboxname),':') =='1')
    }catch(e){
        return true
    }
}

//----------
//age 27/05/2009
// Check ValidTime
function isValidTime(value) {
    var colonCount = 0;
    var hasMeridian = false;
    for (var i = 0; i < value.length; i++) {
        var ch = value.substring(i, i + 1);
        if ((ch < '0') || (ch > '9')) {
            if ((ch != ':') && (ch != ' ') && (ch != 'a') && (ch != 'A') && (ch != 'p') && (ch != 'P') && (ch != 'm') && (ch != 'M')) {
                return false;
            }
        }
        if (ch == ':') { colonCount++; }
        if ((ch == 'p') || (ch == 'P') || (ch == 'a') || (ch == 'A')) { hasMeridian = true; }
    }
    if ((colonCount < 1) || (colonCount > 2)) { return false; }
    var hh = value.substring(0, value.indexOf(":"));
    if ((parseFloat(hh) < 0) || (parseFloat(hh) > 23)) { return false; }
    if (hasMeridian) {
        if ((parseFloat(hh) < 1) || (parseFloat(hh) > 12)) { return false; }
    }
    if (colonCount == 2) {
        var mm = value.substring(value.indexOf(":") + 1, value.lastIndexOf(":"));
    } else {
        var mm = value.substring(value.indexOf(":") + 1, value.length);
    }
    if ((parseFloat(mm) < 0) || (parseFloat(mm) > 59)) { return false; }
    if (colonCount == 2) {
        var ss = value.substring(value.lastIndexOf(":") + 1, value.length);
    } else {
        var ss = "00";
    }
    if ((parseFloat(ss) < 0) || (parseFloat(ss) > 59)) { return false; }
    return true;
}

//----------------
// Checks for the following valid date formats:
//  DD/MM/YYYY 
// Also separates date into month, day, and year variables
//aeg 29/05/2009
//
function isValidDate(dateStr) {

var datePat = /^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/;
if(dateStr.length<10)return false ;
var matchArray = dateStr.match(datePat); // is the format ok?
if (matchArray == null) {
alert("Date is not in a valid format.")
return false;
}
month = matchArray[3];  // parse date into variables
day =  matchArray[1];
year = matchArray[4];
if (month < 1 || month > 12) { // check month range
alert("Month must be between 1 and 12.");
return false;
}
if (day < 1 || day > 31) {
alert("Day must be between 1 and 31.");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Month "+month+" doesn't have 31 days!")
return false
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("February " + year + " doesn't have " + day + " days!");
return false;
}
}
return true;  // date is valid



}

//----------------------------------------------------------
//dateStr : DD/MM/YYYY conver to : YYYYMMDD
//age 29/05/2009
//
function converdate(dateStr) {
    var Mdata = '';
    var Strs = '';
    var Mreturn;
    Mdata = dateStr;
 Strs = Mdata.split('/')
    mreturn = Strs[2]+Strs[1]+Strs[0];
    return mreturn;
}




