var sDateFormat = "mm/dd/yyyy";
var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);

function addOption(theSel, theText, theValue){
  var newOpt = new Option(theText, theValue);
  var selLength = theSel.length;
  theSel.options[selLength] = newOpt;
}

function deleteOption(theSel, theIndex){ 
  var selLength = theSel.length;
  if(selLength>0)
  {
    theSel.options[theIndex] = null;
  }
}

function moveOptions(theSelFrom, theSelTo){
  
  var selLength = theSelFrom.length;
  var selectedText = new Array();
  var selectedValues = new Array();
  var selectedCount = 0;
  
  var i;
  
  // Find the selected Options in reverse order
  // and delete them from the 'from' Select.
  for(i=selLength-1; i>=0; i--)  {
    if(theSelFrom.options[i].selected)    {
      selectedText[selectedCount] = theSelFrom.options[i].text;
      selectedValues[selectedCount] = theSelFrom.options[i].value;
      deleteOption(theSelFrom, i);
      selectedCount++;
    }
  }
  
  // Add the selected text/values in reverse order.
  // This will add the Options to the 'to' Select
  // in the same order as they were in the 'from' Select.
  for(i=selectedCount-1; i>=0; i--)  {
    addOption(theSelTo, selectedText[i], selectedValues[i]);
  }
  
  if(NS4) history.go(0);
}

function pop_err(fieldname,err_msg){
	fieldname.focus();
	alert(err_msg);
}

function trim(st){
	index = 0;
	for (var i = 0; i < st.length; i++)
	{
		ch = st.charAt(i);
		if (ch == ' ')
			index++;
		else 
			break;
	}
	st = st.substring(index, st.length);
	index = st.length;
	for (i = index-1; i > 0; i--)
	{
		ch = st.charAt(i);
		if (ch==' ')
			index--;
		else
			break;
	}
	st = st.substring(0, index);
	return st;
}

//check Integer
function isInteger(num){
	var re = /^[0-9]*$/;
	var pos = num.search(re);
	if(pos == -1){
		return false;
	}else{
		return true;
	}
}

/* checkDate: Confirm date entered is of the correct format
 *   oDate = date string
 *   sDateFormat = date format string 
 *     acceptable formats: "yy-mm-dd" , "yyyy-mm-dd" , "yy-mmm-dd" , "yyyy-mmm-dd" ,
 *                                   "mm-dd-yy" , "mm-dd-yyyy" , "mmm-dd-yy" , "mmm-dd-yyyy" ,
 *                                   "dd-mm-yy" , "dd-mm-yyyy" , "dd-mmm-yy" , "dd-mmm-yyyy" 
 * Return 0: date is valid, 1: if date is invalid, 2: if dd is greater than days in month
 */
function isDate(sDate, sDateFormat) {
  var yr, mn, dy;
  
  var bError = 0;
  if( arguments.length < 2 ) 
    sDateFormat = "yyyy/mm/dd";

  if( sDate != "" ) {
    src = sDate.split('/');
    format = sDateFormat.split('/');
    
    for ( i = 0; i < src.length; i++ ) {
      tmp = format[i];
      val = src[i];
      if ( tmp == "dd" ){
				dy = val;
				if(val.length < 2)
					dy = "0" + val;
			}
      else if ( tmp == "mm" ){
        mn = val;
				if(val.length < 2)
					mn = "0" + val;
			}
      else if ( tmp == "mmm" )
        mn = changeMonthToMM(val);
      else if ( tmp == "yy" )
        yr = "20" + val;
      else if ( tmp == "yyyy" )
        yr = val;
    }
   	
		if( sDate.length > 10 ) { bError = 1; }
    else if( isNaN(mn) || isNaN(dy) || isNaN(yr) ) { bError = 1; }
    else if( dy.length != 2 || mn.length != 2 || yr.length != 4 ) { bError = 1;}
    else {
			if( yr <= 9999 && mn <= 12 && mn > 0 && yr >= 1900 && dy > 0) { 
        if( mn == 2 ) {
          if ( (yr % 4 == 0 && (yr % 100 != 0 || yr % 400 == 0)) ) { // nam nhuan
            if (dy > 29) bError = 2;
          }
          else if ( dy > 28 ) {bError = 2;}
        }
        else {
          if ( mn == 4 || mn == 6 || mn == 9 || mn == 11 ) {
            if ( dy > 30 ) bError = 2;
          }
          else {
            if ( dy > 31 ) bError = 2;
          }
        }
      }
      else 
        bError = 1;
    }
  } 
	return bError;
}

function isStartDateSmaller(sDate, eDate, sDateFormat){
  var sMn, sDy, sYr;
  var eMn, eDy, eYr;
  var isOlder = true;
  // We made an example that sDate, eDate is correct format now.
  if( arguments.length < 3 )
    sDateFormat = "yyyy-mm-dd";

  if( sDateFormat == "mm/dd/yyyy" || sDateFormat == "mm-dd-yyyy" ) {
    // date format (mm/dd/yyyy)
    sMn = sDate.substring(0,2);
    sDy = sDate.substring(3,5);
    sYr = sDate.substring(6);
    eMn = eDate.substring(0,2);
    eDy = eDate.substring(3,5);
    eYr = eDate.substring(6);
  }
  else if( sDateFormat == "dd/mm/yyyy" ||  sDateFormat == "dd-mm-yyyy" ) {
    // date format (dd/mn/yyyy)
    sDy = sDate.substring(0,2);
    sMn = sDate.substring(3,5);
    sYr = sDate.substring(6);
    eDy = eDate.substring(0,2);
    eMn = eDate.substring(3,5);
    eYr = eDate.substring(6);
  }
  else if( sDateFormat == "yyyy/mm/dd" || sDateFormat == "yyyy-mm-dd" ) {
    // date format (yyyy/mm/dd)
    sYr = sDate.substring(0,4);
    sMn = sDate.substring(5,7);
    sDy = sDate.substring(8);
    eYr = eDate.substring(0,4);
    eMn = eDate.substring(5,7);
    eDy = eDate.substring(8);
  }
  else {
    return false;
  }
  // comparing
  if ( sYr <= eYr ) {
      if ( sYr == eYr ) {// case the start year equals the end year, we should go on
          if ( sMn <= eMn ) {
              if ( sMn == eMn ) {       // the start month equals the end month (in the case: start year=end year) . 
                                        // we should go on
									if ( sDy < eDy ) {   // this case start year = end year
                                        // start month = end month
										return true;
                  }
                  else {
										return false;
                  }
              }
              else {// the start month smaller than the end month (in the case: start year=end year) . 
                  // So always return false
							 return true;  
              }
          }
          else {// the start month larger than the end month (in the case: start year=end year) . So always return false
					 return false;
          }
      }
      else {// the start year smaller than the end year. So always return true
			 return true;
      }
  }
  else {// the start year larger than the end year. So always return false
	 return false;
  }
}

function getCurrentDate(sDateFormat) {
  today = new Date();
  yyyy = today.getFullYear();
  mm = today.getMonth() + 1;
  if( mm < 10 ){
    mm = "0" + mm; 
  }
  dd = today.getDate();
  if( dd < 10 ){
    dd = "0" + dd; 
  }
//  hh = today.getHours();
//  mu = today.getMinutes();
//  ss = today.getSeconds();
// return yyyy + "-" + mm + "-" + dd + " " + hh + ":" + mu + ":" + ss;

	if(sDateFormat == 'dd/mm/yyyy' ) {
		return dd + "/" + mm + "/" + yyyy;
	}else if(sDateFormat == 'mm/dd/yyyy' ) {
		return mm + "/" + dd + "/" + yyyy;
	}
}

Date.prototype.add = function (sInterval, iNum){
	var dTemp = this;
	if (!sInterval || iNum == 0) return dTemp;
	switch (sInterval.toLowerCase()){
		case "ms":
			dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
			break;
		case "s":
			dTemp.setSeconds(dTemp.getSeconds() + iNum);
			break;
		case "mi":
			dTemp.setMinutes(dTemp.getMinutes() + iNum);
			break;
		case "h":
			dTemp.setHours(dTemp.getHours() + iNum);
			break;
		case "d":
			dTemp.setDate(dTemp.getDate() + iNum);
			break;
		case "mo":
			dTemp.setMonth(dTemp.getMonth() + iNum);
			break;
		case "y":
			dTemp.setFullYear(dTemp.getFullYear() + iNum);
			break;
	}
	return dTemp;
}

function validEmail(field) {
 // var field = form.email;  
  var str = field.value;
  
  if (window.RegExp) {
    var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
    var reg2str =
"^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
    var reg1 = new RegExp(reg1str);
    var reg2 = new RegExp(reg2str);
    if (!reg1.test(str) && reg2.test(str)) {
      return true;
    }
    field.focus();
    field.select();
    return false;
  } else {
    if(str.indexOf("@") >= 0)
      return true;
    field.focus();
    field.select();
    return false;
  }
}

function openWindow(url) {
  win =window.open(url,"windowName","status,menubar,scrollbars,resizable,copyhistory,height=420,width=500");
}

function convert_to_decimal(number){
	
	if(number != 0){
		var temp_value = number + '';
		if(temp_value.indexOf(".") != -1){
			var point_position = temp_value.indexOf(".");
			//Ex: 19.995 --> 20,   19.9948966 --> 19.99
			if(temp_value.substr(point_position).length > 3){
				last_number = temp_value.substr(point_position+3,1);
				if(last_number >= 5){
					number = parseFloat(number) + 0.01;
					var temp_value = number + '';
					number = temp_value.substr(0, point_position+3);
				}
			}
			
			if(temp_value.substr(point_position).length < 3){
				number = String(number) + "0";
			} else {
				number = temp_value.substr(0,point_position) + "." + temp_value.substr(point_position+1,2);//number = temp_value.substr(
			}
			return number;
		}else{
			return number;
		}
	}else{
		return 0.00;
	}
}
