// CommCheck.js

// check the number of checked checkbox
function countCheckedCheckBox(cb)
{
  var cbCount=0;
  if ((cb)&&(cb.length))
  {
    for(i=0;i<cb.length;i++)
      if (cb[i].checked)
        cbCount++;
  }else if ((cb)&&(! cb.length))
  {
      if (cb.checked) cbCount++;
  }
  
  return cbCount;
    
}

/*****************************************************************************/
// open date picker
function openCal(formName,eleName)
{
    if (document.forms[formName].elements[eleName].value=="")
        window.open('../script/calendar.html?'+formName+'&'+eleName,'Calendar','scrollbars=no, menubar=no, toolbar=no, width=250,height=300,top=50,left=50');
    else
        window.open('../script/calendar.html?'+formName+'&'+eleName+'&'+document.forms[formName].elements[eleName].value,'Calendar','scrollbars=no, menubar=no, toolbar=no, width=250,height=300,top=50,left=50');    
}
function openCal(formName,eleName,calPath)
{
    if (document.forms[formName].elements[eleName].value=="")
        window.open(calPath+'?'+formName+'&'+eleName,'Calendar','scrollbars=no, menubar=no, toolbar=no, width=250,height=300,top=50,left=50');
    else
        window.open(calPath+'?'+formName+'&'+eleName+'&'+document.forms[formName].elements[eleName].value,'Calendar','scrollbars=no, menubar=no, toolbar=no, width=250,height=300,top=50,left=50');    
}

/*****************************************************************************/
// check the form are modified
modified=0;
function setFlag(){
    modified=1;
}

function isModified(){
    return (modified==1);
}

function unsetFlag()
{modified=0;}

/****************************************************************************************/
// check date format function
function checkDateFormat(ele, fieldName, nonNull) {
    var s=changeDateFormat(ele.value.toString());
    
    var d=new Date();
    var dd=s.substr(0,2);
    var mm=s.substr(3,2);
    var yyyy="";
    if (s.length == 10) yyyy=s.substr(6,4);
    //if (s.length == 8)  yyyy=d.getFullYear();
	if (s.length == 5)  yyyy=d.getFullYear();
    if ( s=="" && nonNull ) {
        alert("Please input "+fieldName);
	      ele.select();
	      return false;
    }
    
    if ( s=="" && !nonNull ) {
        return true;
    }
    
    if ( (s.length!=10 && s.length!=5 )
        || (s.substr(2,1)!="/") 
        || ( s.length>5 && s.substr(5,1)!="/" ) ){
        alert("Please input date in either ddmmyyyy, dd/mm or dd/mm/yyyy format");
		ele.focus();
        ele.select();
	    return false;
    }
         
    if ( (!isInteger(dd)) || (dd>31) || (dd<=0) ) {
        alert(fieldName+" - Invalid Date");
        ele.select();
	      return false;
    }

    if ( (!isInteger(mm)) || (mm>12) || (mm<=0) ) {
        alert(fieldName+" - Invalid Month");
        ele.select();
	      return false;
    }

    if (!isInteger(yyyy)) {
        alert(fieldName+" - Invalid Year");
        ele.select();
	      return false;
    }

    if (mm==2) {
        if (yyyy%4 != 0){
            if (dd>28){
                alert(fieldName+" - The max.Date of that Month is 28");
                ele.select();
	            return false;
	        }
        }
        else if  (yyyy%400 == 0){
            if (dd>29){
                alert(fieldName+" - The max.Date of that Month is 29");
                ele.select();
	            return false;
	        }
        }
        else if (yyyy%100 == 0){
            if (dd>28){
                alert(fieldName+" - The max.Date of that Month is 28");
                ele.select();
	            return false;
	        }
        }
        else{
            if (dd>29){
                alert(fieldName+" - The max.Date of that Month is 28");
                ele.select();
	            return false;
	        }
        }
        
        /*        
        if (dd>=30 && yyyy%4==0) {
            alert(fieldName+" - The max.Date of that Month is 29");
            ele.select();
	          return false;
        }         
        if (dd>=29 && ( (yyyy/100)%4!=0 || yyyy%4!=0 )) {
            alert(fieldName+" - The max.Date of that Month is 28");
            ele.select();
	          return false;
        }         
        */
    }
    
    if ( (dd>=31) && (mm==2 || mm==4 || mm==6 || mm==9 || mm==11) ) {
        alert("Invalid "+fieldName+" - The max.Date of that Month is 30");
        ele.select();
	      return false;
    }
    ele.value = dd+"/"+mm+"/"+yyyy;
    return true;
}

// change date format
function changeDateFormat(s){
    if (s.length==4) s=s.substr(0,2)+"/"+s.substr(2,2);
    else if (s.length==6) s=s.substr(0,2)+"/"+s.substr(2,2)+"/"+s.substr(4,2);
    else if (s.length==8) s=s.substr(0,2)+"/"+s.substr(2,2)+"/"+s.substr(4,4);
	else {}
    return s;
}
function compareDate(inD0,inD1){
    //d0,d1 must in dd/mm/yyyy format
    //return (d0<=d1)
    var d0=new String(inD0.value);
    var d1=new String(inD1.value);
    if (d0.length!=10 || d1.length!=10) return true;
    var dd=d0.substr(0,2);
    var mm=d0.substr(3,2);
    var yyyy=d0.substr(6,4);
    var s0=yyyy+mm+dd;
    
    dd=d1.substr(0,2);
    mm=d1.substr(3,2);
    yyyy=d1.substr(6,4);
    var s1=yyyy+mm+dd;
    return (s0<=s1);
}

/****************************************************************************************/
// check time code function
function checkTimeCode(ele) {
    var str=new String(ele.value.toString());
    
    if (str.length != 11)
    {
        alert("Wrong Time format (\"hh:mm:ss:ms\")");
        return false;
    }
    var hh = str.substr(0,2);
    var mm = str.substr(3,2);
    var ss = str.substr(6,2);
    var ms = str.substr(9,2);
    
    if ((!isInteger(hh)) || hh>23 || hh <00){
        ele.select();
        alert("Wrong Number for hour");
	return false;
    }
    if ((!isInteger(mm)) || mm>59 || mm <00){
        ele.select();
        alert("Wrong Number for minute");
	return false;
    }
    if ((!isInteger(ss)) || ss>59 || ss <00){
        ele.select();
        alert("Wrong Number for second");
	return false;
    }
    if ((!isInteger(ms)) || ms>99 || ms <00){
        ele.select();
        alert("Wrong Number for mini-second");
	return false;
    }

    return true;
}

/****************************************************************************************/
// check null
function checkEmpty(ele,fname){
    var v=trim(ele.value);
    if (v.length==0){
        alert("Please input "+fname);
        ele.focus();
    }
    return (v.length>0);
}

function displayConfirmMessage(message) {
	return (confirm(message));

}

function copyEleValue(fromEle, toEleName){
    if (fromEle.form.elements[toEleName].value==""){
        fromEle.form.elements[toEleName].value=fromEle.value;
    }
}

function autoformat(intime){
 
    var timetmp = intime.value;

    if (timetmp.length == 6){
        if (timetmp.indexOf(":") == -1) {
            var hhtmp = timetmp.substr(0,2);
            var mmtmp = timetmp.substr(2,2);
            var sstmp = timetmp.substr(4,2);
            //var mstmp = timetmp.substr(6,2);
            //intime.value = hhtmp+":"+mmtmp+":"+sstmp+":"+mstmp;
            intime.value = hhtmp+":"+mmtmp+":"+sstmp;
        }
    }

}

function isEarlierThan(ds1,ds2){
    var d1=new String(ds1);
    var d2=new String(ds2);
    var s1=d1.substr(6,4)+d1.substr(3,2)+d1.substr(0,2);
    var s2=d2.substr(6,4)+d2.substr(3,2)+d2.substr(0,2);
    return (s1<s2);
}

function isSameDate(ds1,ds2){
    return (ds1==ds2);
}

function isToday(ds1){
    return (ds1==getStringByDate(new Date()));
}

function laterThanToday(ds1){
    var today=getStringByDate(new Date());
    return isSameDate(ds1,today) || !isEarlierThan(ds1,today);
}

function getDateByString(s){
    var ds=new String(s);
    var y=parseInt(ds.substr(6,4),10);
    var m=parseInt(ds.substr(3,2),10);
    var d=parseInt(ds.substr(0,2),10);
    return new Date(y,m-1,d);
}

function getDateTimeByString(date_s,time_s){
    var ds=new String(date_s);
    var ts=new String(time_s);
    var y=parseInt(ds.substr(6,4),10);
    var m=parseInt(ds.substr(3,2),10);
    var d=parseInt(ds.substr(0,2),10);

    var mm=parseInt(ts.substr(3,2),10);
    var hh=parseInt(ts.substr(0,2),10);

    return new Date(y,m-1,d,hh,mm,0,0);
}


function getStringByDate(d){
    var dd=d.getDate();
    var mm=d.getMonth()+1;
    var yyyy=d.getYear();
    var ds=(dd<10?"0"+dd:dd);
    var ms=(mm<10?"0"+mm:mm);
    return ds+"/"+ms+"/"+yyyy;
}

function checkSpecialChar(s, specialChars){
    var testString=new String(trim(s));
    for(var i=0;i<testString.length;i++){
        if (isSpecialChar(testString.charAt(i),specialChars)){
            return false;
        }
    }
    return true;
}

function isSpecialChar(s,specialChars){
    var sc = new String(specialChars);
    for(var i=0;i<sc.length;i++){
        if (s==sc.charAt(i)){
            return true;
        }
    }
    return false;
}

function unloadWindow(ele)
{
  if (ele.value!="N")
  {
    ele.value="N";
  }
}


function checkTimeCodeHHMMSS(ele) {
    var str=new String(ele.value.toString());
    
    if (str.length != 8 || str.substr(2,1) != ":" || str.substr(5,1) != ":")
    {
        alert("Wrong Time format (\"hh:mm:ss\")");
        return false;
    }
    var hh = str.substr(0,2);
    var mm = str.substr(3,2);
    var ss = str.substr(6,2);
    
    if ((!isInteger(hh)) || hh>23 || hh <00){
        ele.select();
        alert("Wrong Number for hour");
	return false;
    }
    if ((!isInteger(mm)) || mm>59 || mm <00){
        ele.select();
        alert("Wrong Number for minute");
	return false;
    }
    if ((!isInteger(ss)) || ss>59 || ss <00){
        ele.select();
        alert("Wrong Number for second");
	return false;
    }

    return true;
}

function getCheckedValue(ele){
	if(ele.value){
		return ele.value;
	}

	for(var i=0;i<ele.length;i++){
		if(ele[i].checked){
			return ele[i].value;
		}
	}
	return "";
}
