
//  Written by Tan Ling wee
//  on 19 June 2005
//  email :  info@sparrowscripts.com
//    url : www.sparrowscripts.com

  var imagePath='Image/';
  var ie=document.all;
  var dom=document.getElementById;
  var ns4=document.layers;
 
  var textCtl;
//******validate time format

function IsValidTime(timeStr) 
{
    // Checks if time is in HH:MM:SS AM/PM format.
    // The seconds and AM/PM are optional.

    var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

    var matchArray = timeStr.match(timePat);

    if (matchArray == null) 
    {
        alert("Time is not in a valid format.");
        return false;
    }
    
    hour = matchArray[1];
    minute = matchArray[2];

    if (hour < 0  || hour > 24) 
    {
        alert("Hour must be between 0 and 24");
        return false;
    }
    
    if (minute<0 || minute > 59) 
    {
        alert ("Minute must be between 0 and 59.");
        return false;
    }
}

//****validate time format
function TimeFormat(vDateName, vDateValue) 
{
    
    if(vDateValue== "N/A") 
    {
        return true; 
    }
    
    if (vDateValue.length <=5) 
    {
        var strSeperator=":"
        var mm = vDateName.value.substr(2,2);
        var hh = vDateName.value.substr(0,2);
        
        if (vDateValue.length == 2)
        {        
            vDateName.value = hh+strSeperator+mm;
        }
        
        if (vDateValue.length ==5)
        {           
           var Result=IsValidTime(vDateName.value);
          
           if (Result== false)
           {          
                vDateName.value = "";
                vDateName.focus();
                vDateName.select();
           }
            
        }  
     //Create a temporary variable for storing the DateType and change
    //the DateType to a 1 for validation.
    }
    else 
    {
        alert("Invalid Time Format\nPlease Re-Enter");
        vDateName.value = "";
        vDateName.focus();
        vDateName.select();
        return false;
    }
    
}//**format time

function setTimePicker(t) 
  {
    textCtl.value=t;
    closeTimePicker();
  }

function refreshTimePicker(mode) 
{    
    if (mode==0)
    { 
        suffix=""; 
    }

    sHTML = "<table><tr><td><table cellpadding=1 cellspacing=0 bgcolor='#FFFAFA' style='border-width:1px;border-style:solid;border-color:#E0EEEE'>";
    for (i=0;i<=23;i++) 
    {
      sHTML+="<tr align=right style='font-family:verdana;font-size:9px;color:#000000;'>";

      if (i==0) 
      {
        hr = 0;
      }
      else 
      {
        hr=i;
      }  

      for (j=0;j<4;j++) 
      {
        sHTML+="<td width=40 style='cursor:hand' onmouseover='this.style.backgroundColor=\"#66CCFF\"' onmouseout='this.style.backgroundColor=\"\"' onclick='setTimePicker(\""+ hr + ":" + padZero(j*15) + "\")'><a style='text-decoration:none;color:#000000' href='javascript:setTimePicker(\""+ hr + ":" + padZero(j*15) +"\")'>" + hr + ":"+padZero(j*15) + "<font color=\"#808080\">" + "</font></a></td>";
      }

      sHTML+="</tr>";
    }
    sHTML += "</table></td></tr></table>";
    
    document.getElementById("timePickerContent").innerHTML = sHTML;
}

  if (dom)
  {
    document.write ("<div id='timepicker' style='z-index:+999;visibility:hidden;position:absolute'><table style='border-width:1px;border-style:solid;border-color:#E0EEEE' bgcolor='#ffffff' cellpadding=0><tr bgcolor='#0033AA'><td>"+
    "<table cellpadding=0 cellspacing=0 width='100%'  background='" + imagePath + "titleback.gif'><tr valign=bottom height=21><td style='font-family:verdana;font-size:11px;color:#4F94CD;padding:1px' valign=center><B>&nbsp;&nbsp;&nbsp;&nbsp;Select a Time</B></td><td align=right valign=center>&nbsp;<img onclick='closeTimePicker()' src='" + imagePath + "close2.gif'  STYLE='cursor:hand'>&nbsp;</td></tr></table></td></tr><tr><td colspan=2><span id='timePickerContent' style='z-index:+999'></span></td></tr></table></div>");
    refreshTimePicker(0);
    
    refreshTimePicker(0);
  }

  var crossobj=(dom)?document.getElementById("timepicker").style : ie? document.all.timepicker : document.timepicker;
  var currentCtl
  
function selectTime(ctl,ctl2) 
{
    var crossobj_temp=(domm)?document.getElementById("calendar").style : iee? document.all.calendar : document.calendar
    if(crossobj_temp.visibility == "visible") 
    {
        hideCalendar();
    }  
        
    hideElement( 'SELECT', document.getElementById("timepicker1") );
    hideElement( 'APPLET', document.getElementById("timepicker1") );
    
    var leftpos=20
    var toppos=-150

    textCtl=ctl2;
    currentCtl = ctl
    currentCtl.src=imagePath + "alarmclock.gif";

    aTag = ctl
    do 
    {
      aTag = aTag.offsetParent;
      leftpos  += aTag.offsetLeft;
      toppos += aTag.offsetTop;
    } while(aTag.tagName!="BODY");           
    crossobj.left =  ctl.offsetLeft + leftpos
    crossobj.top = ctl.offsetTop + toppos + ctl.offsetHeight + 2
    crossobj.visibility=(dom||ie)? "visible" : "show"
    
    bShow = true; 
}

  // hides <select> and <applet> objects (for IE only)
function hideElement( elmID, overDiv )
{
    if( ie )
    {    
      if (document.getElementById("ddlHOW3")) 
      {    
          document.getElementById("ddlHOW3").style.visibility = "hidden";
          document.getElementById("ddlHOW4").style.visibility = "hidden";
          document.getElementById("ddlHOW8").style.visibility = "hidden";
          document.getElementById("ddlHOW9").style.visibility = "hidden";
      }
      if (document.getElementById("ddlDEPT")) 
      { 
          document.getElementById("ddlDEPT").style.visibility = "hidden"; 
      }
      
      /*
      for( i = 0; i < document.all.tags( elmID ).length; i++ ){
        alert(i) ;
        obj = document.all.tags( elmID )[i];
        if( !obj || !obj.offsetParent ){
            continue;
        }
          // Find the element's offsetTop and offsetLeft relative to the BODY tag.
          objLeft   = obj.offsetLeft;
          objTop    = obj.offsetTop;
          objParent = obj.offsetParent;
          while( objParent.tagName.toUpperCase() != "BODY" )
          {
          objLeft  += objParent.offsetLeft;
          objTop   += objParent.offsetTop;
          objParent = objParent.offsetParent;
          }
          objHeight = obj.offsetHeight;
          objWidth = obj.offsetWidth;
          if(( overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );
          else if(( overDiv.offsetTop + overDiv.offsetHeight ) <= objTop );
          else if( overDiv.offsetTop >= ( objTop + objHeight + obj.height ));
          else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
          else
          {
          alert("**" + i) ;
          obj.style.visibility = "hidden";
          }
      }
      */
    }
}
     
  //unhides <select> and <applet> objects (for IE only)
function showElement( elmID )
{
    if( ie )
    {
      for( i = 0; i < document.all.tags( elmID ).length; i++ )
      {
        obj = document.all.tags( elmID )[i];
        if( !obj || !obj.offsetParent )
        {
            continue;
        }
        obj.style.visibility = "";
      }
    }
}

function closeTimePicker() 
{
    crossobj.visibility="hidden"   
    showElement( 'SELECT' );
    showElement( 'APPLET' );
    currentCtl.src=imagePath + "alarmclock.gif"
}
/*
  document.onkeypress = function hideTimePicker1 () 
  { 
    if (event.keyCode==27)
    {
      if (!bShow)
      {
        closeTimePicker();
      }
    }
  }
*/

function isDigit(c) 
{    
    return ((c=='0')||(c=='1')||(c=='2')||(c=='3')||(c=='4')||(c=='5')||(c=='6')||(c=='7')||(c=='8')||(c=='9'))
}

function isNumeric(n) 
{
    num = parseInt(n,10);
    return !isNaN(num);
}

function padZero(n) 
{
    v="";
    if (n<10)
    { 
      return ('0'+n);
    }
    else
    {
      return n;
    }
}

function validateDatePicker(ctl) 
{
    t=ctl.value.toLowerCase();
    t=t.replace(" ","");
    t=t.replace(".",":");
    t=t.replace("-","");

    if ((isNumeric(t))&&(t.length==4))
    {
      t=t.charAt(0)+t.charAt(1)+":"+t.charAt(2)+t.charAt(3);
    }

    var t=new String(t);
    tl=t.length;

    if (tl==1 ) 
    {
          if (isDigit(t)) 
          {
            ctl.value=t+":00 ";
          }
          else 
          {
            return false;
          }
    }
    else if (tl==2) 
    {
      if (isNumeric(t)) 
      {
        if (parseInt(t,10)<13)
        {
          if (t.charAt(1)!=":") 
          {
            ctl.value= t + ':00 ';
          } 
          else 
          {
            ctl.value= t + '00';
          }
        }
        else if (parseInt(t,10)==24) 
        {
          ctl.value= "0:00";
        }
        else if (parseInt(t,10)<24) 
        {
          if (t.charAt(1)!=":") 
          {
            ctl.value= (t-12) + ':00 ';
          } 
          else 
          {
            ctl.value= (t-12) + '00';
          }
        }
        else if (parseInt(t,10)<=60) 
        {
          ctl.value= '0:'+padZero(t)+'';
        }
        else 
        {
          ctl.value= '1:'+padZero(t%60)+'';
        }
      }
      else
      {
        if ((t.charAt(0)==":")&&(isDigit(t.charAt(1)))) 
        {
          ctl.value = "0:" + padZero(parseInt(t.charAt(1),10)) + "";
        }
        else 
        {
          return false;
        }
      }
    }
    else if (tl>=3) 
    {
      var arr = t.split(":");
      if (t.indexOf(":") > 0)
      {
        hr=parseInt(arr[0],10);
        mn=parseInt(arr[1],10);

        if (t.indexOf("pm")>0) 
        {
         // mode="pm";
        }
        else 
        {
          //mode="am";
        }

        if (isNaN(hr)) 
        {
          hr=0;
        } else 
        {
          if (hr>24) 
          {
            return false;
          }
          else if (hr==24) 
          {
           // mode="am";
            hr=0;
          }
//                  else if (hr>12) {
//                    //mode="pm";
//                    hr=12;
//                  }
        }
      
            if (isNaN(mn)) 
            {
              mn=0;
            }
            else 
            {
              if (mn>60) 
              {
                mn=mn%60;
                hr+=1;
              }
            }
    } 
    else 
    {

        hr=parseInt(arr[0],10);

        if (isNaN(hr)) 
        {
          hr=0;
        } 
        else 
        {
          if (hr>24) 
          {
            return false;
          }
          else if (hr==24) 
          {
            //mode="am";
            hr=0;
          }
          else if (hr>12) 
          {
           // mode="pm";
            hr=12;
          }
        }

        mn = 0;
      }
      
      if (hr==24) 
      {
        hr=0;
      }
      ctl.value=hr+":"+padZero(mn);
    }
}
