﻿
//********************************************************
// Remarks: this file should be in UTF-8 characters
//          Function: replaceDomainCharacters
//********************************************************

// Redirect to another page immediately
function GoPage(page) {
    self.location.href= page;
}

function trim(str) {
    // We don't want to trim JUST spaces, but also tabs,
    // line feeds, etc.  Add anything else you want to
    // "trim" here in Whitespace
    var whitespace = new String(" \t\n\r");
    var s = new String(str);

    if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
        var i = s.length - 1;       // Get length of string
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
            i--;
        s = s.substring(0, i+1);
    }
    return s;
}

//var emailPattern = /^\w+((-\w+)|(\.\w+)|(\/\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
var emailPattern = /^[A-Za-z0-9]([A-Za-z0-9_\.\-]*)\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
var datePattern = /^\d\d\d\d\/\d\d\/\d\d?$/
var dobPattern1 = /^\d\d\/\d\d\d\d?$/
var dobPattern2 = /^\d\d\d\d?$/


function checkEmail(value) {
    return checkPattern(value, emailPattern);
}

function checkPattern(value, pattern) {
    if ( value.search(pattern) != -1 )
	return true;
    else
	return false;
}

function sameStr (InString1, InString2) {
    for (i = 0; i < InString1.length; i++) {
	if (InString1.charAt(i) != InString2.charAt(i))
	    return false;
    }
    return true;
}
function checkBoD(value) {
    var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    var status = checkPattern(value, datePattern);
	var status1 = checkPattern(value, dobPattern1);
	var status2 = checkPattern(value, dobPattern2);
    var iDay = 0;
	var iMonth = 0;
	var iYear = 0;
	if (!status && !status1 && !status2)
	return false;


    if(status){
		iDay = parseInt(value.substr(0, 2), 10);
	    iMonth = parseInt(value.substr(3, 2), 10);
		iYear = parseInt(value.substr(6, 4), 10);
	}
	if(status1){
		iMonth = parseInt(value.substr(0,2),10);
		iYear = parseInt(value.substr(3,4),10);
	}
	if(status2){
		iYear = parseInt(value.substr(0,4),10);
	}

	if (iYear > 2000)
		return false;

    if(iMonth != 0 ){
	    if (iMonth < 1 || iMonth > 12)
			return false;
	}
	if(iDay != 0){
	    var maxDay = iMonth != 2 ? daysInMonth[iMonth - 1] :
		((iYear % 4 == 0 && iYear % 100 != 0 || iYear % 400 == 0) ? 29 : 28);

		if(iDay < 0 || iDay > maxDay)
			return false;
	}
    
   return true;
}

function isValidDate( dd, mm, yyyy) {
	  var myDate = "";

	  if ( mm.length == 1) {
		  mm = "0" + mm;
	  }
	  if ( dd.length == 1) {
		  dd = "0" + dd;
	  }

	  myDate = yyyy + "/" + mm + "/" + dd;

	  return checkDate( myDate );
}
function checkDate(value) {
    var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	var status = checkPattern(value, datePattern);

	if (!status)
		return false;

	var iYear = parseInt(value.substr(0, 4), 10);
    var iMonth = parseInt(value.substr(5, 2), 10);
    var iDay = parseInt(value.substr(8, 2), 10);

    if (iYear < 1900)
	return false;

    if (iMonth < 1 || iMonth > 12)
	return false;

    var maxDay = iMonth != 2 ? daysInMonth[iMonth - 1] :
	((iYear % 4 == 0 && iYear % 100 != 0 || iYear % 400 == 0) ? 29 : 28);
    
    if (iDay > 0 && iDay <= maxDay)
	return true;
    
    return false;
}
function checkDateDiff(date1, date2){

	var day1 = date1.substr(0, 2);
    var month1 = date1.substr(3, 2);
    var year1 = date1.substr(6, 4);
	
	var fromDate = year1+month1+day1;

	var day2 = date2.substr(0, 2);
    var month2 = date2.substr(3, 2);
    var year2 = date2.substr(6, 4);
	var toDate = year2+month2+day2;

	var diff = parseInt(toDate,10) - parseInt(fromDate,10);

	if(diff >0)
		return true;
	if(diff <0)
		return false;

}
function checkTime(time) {

	var timePat = /^(\d{1,2}):(\d{2})?$/;
	var matchArray = time.match(timePat);
	if (matchArray == null) {
		alert("Time is not in a valid format.");
		return false;
	}
	var hour = matchArray[1];
	var minute = matchArray[2];

	if (hour < 0  || hour > 23) {
		alert("Hour must be between 1 and 23.");
		return false;
	}
	if (minute<0 || minute > 59) {
		alert ("Minute must be between 0 and 59.");
		return false;
	}
	return true;
}
function checkDouble(charge){
	var feePat = /^(\d{1,8}).?(\d{1,2})?$/;

	var matchArray = charge.match(feePat);
	if (matchArray == null) {
  
		return false;
	}
	return true;

}
function checkNumber(number){
	var numberPat = /\d/;

	var matchArray = number.match(numberPat);
	if (matchArray == null) {
  
		return false;
	}
	return true;

}


function showCalendar(field, format, context, month, year) {
    if (eval("document." + field).disabled != true) {
        eval("document." + field).focus();
        if ( month==null || month<=0)
            month=(new Date()).getMonth() + 1;
        if ( year==null )
            year=(new Date()).getFullYear();
        if ( context == null ) {
            context = "../..";
        } //if

        //need to change the calendar path
        var calHtml = context + "/common/html/Calendar.html";
        var url = calHtml + "?field=" + field + "&m=" + month + "&y=" + year;
        url = url + ((format==null) ? "" : ("&format=" + format));
  
        var calWin = window.open(url,"calendar","width=270,height=205,left=300,top=300,resizable=0,status=0,menubar=0,scrollbars=0,fullscreen=0");
        calWin.focus();
    }
}

function checkVolunteerDate(value) {
	var status1 = checkPattern(value, dobPattern1);
	var status2 = checkPattern(value, dobPattern2);

	var iMonth = 0;
	var iYear = 0;
	if (!status1 && !status2)
		return false;

	if(status1){
		iMonth = parseInt(value.substr(0,2),10);
		iYear = parseInt(value.substr(3,4),10);
	}
	if(status2){
		iYear = parseInt(value.substr(0,4),10);
	}

    if(iMonth != 0 ){
	    if (iMonth < 1 || iMonth > 12)
			return false;
	}
	return true;
}

// this function return TRUE if a radio button has been clicked
function isRadioChecked( obj )
{
    if( obj.length + "" != "undefined" ) {
        for( var index =0; index < obj.length; index++ )
            if( obj[index].checked )
                return true
    } else {
        if( obj.checked )
            return true
    }
    return false
}

function getRadioCheckedIndex(obj)
{
    for (var index =0; index < obj.length; index++)
        if (obj[index].checked)
            return index
    return (-1)
}

function checkDate2(y,m,da)
{
	if (isNaN(y) || isNaN(m) || isNaN(da))
		return false;
	m--;
	var d = new Date(y,m,da);
	return ( (d.getYear()==y || d.getYear()==y-1900) && d.getMonth()==m && d.getDate()==da);
}

function cmp_date(y1,m1,d1,y2,m2,d2)
{	var yd1 = y1 * 10000 + m1 * 100 + d1, yd2 = y2 * 10000 + m2 * 100 + d2;

	return (yd1 - yd2);
}


// Correct to 2 decimal place
function displayFloatingPointValue(aValue)
{
	var tempValue = Math.round(aValue * 100);
	addZero = 0;
	if((tempValue%100)==0)
		addZero = '.00';
	else if((tempValue%10)==0)
		addZero = '0';

	tempValue = Math.round(aValue*100)/100 + addZero;

	return tempValue;
}


	//start added for Input validation for domain name
	function checkValidDomainSuffix( myStr ) {
		//return checkPattern( myStr, "^(\\.[a-z-]+)+$" );
		return checkPattern( myStr, "^(\\..+)+$" );
	}

	function checkDomainWithSuffix( myStr, myPattern ) {
		myPattern = myPattern.replace( /\./g, "\\." );
		//myPattern = "^\.[a-z]+$" + myPattern;
		//myPattern = "^[a-z-]+" + myPattern + "$";
		//return checkPattern( myStr, myPattern );
		if ( myStr.search( myPattern ) > 0 ) {
			return true;
		} else {
			return false;
		}
	}

	function replaceDomainCharacters( myStr ) {
		var tmpStr = myStr;

		// UTF-8 characters
		tmpStr = tmpStr.replace( / /g, "" );
		tmpStr = tmpStr.replace( / /g, "" );
		tmpStr = tmpStr.replace( /　/g, "" );
		tmpStr = tmpStr.replace( /	/g, "" );
		tmpStr = tmpStr.replace( /．/g, "." );
		tmpStr = tmpStr.replace( /─/g, "-" );
		tmpStr = tmpStr.replace( /－/g, "-" );

		return tmpStr;
	}
	//end added for Input validation for domain name

