/**
*  Branch Tag  : BMS 1.1
*  Branch Time : 2002-04-19
*  
*  Change History :
*  
*     changed by    : xjma
*     change time   : 2002.06.07
*     change reason :	1.support yyyy-MM-dd-hh-mm-ss formart 
*						2.check whether the split char is '-'
*     change action : change the function isDate
**/


/**
 *	New a error message localizer in jsp file here.
 *	So the variable "errorLocalizer" is system reserved.
 */

//	client side validation code
function getErrormessage( errormsg )
{
	//	should define a suffix filter array
	var suffix = "<br>";
	var index = errormsg.lastIndexOf(suffix);
	
	if (index!=-1)
		return errormsg.substring(0,index);
	else
		return errormsg;
}

function isBeforeDateByDay(date1,day)
{

		var nowDate = new Date();
		var year = date1.substring(0,4);
		var month = date1.substring(5,7);
		var day = date1.substring(8,10);
		var hour = date1.substring(11,13);
		var mints = date1.substring(14,16);
		var ms = date1.substring(17,19);
		var date2 = new Date(year,(month-1),day,hour,mints,ms);
		var _date2 = parseInt(date2.getTime());
		var _nowDate = parseInt(nowDate.getTime());
		var _day = 100*60*60*24*parseInt(day);


		if((_date2-_nowDate)<_day)
		{
			return true;
		}
		else
		{	
		}

		return false;
}	
	
function	isEmail ( js_value )
{
	var	pos ;
	var	re ;
	re = /^\s*$/ ;

	if ( js_value.match(re) )
	{
		return true ;
	}

	pos = js_value.indexOf( '@',0 ) ;
	if ( js_value.length <= 5 ) return false ;
	if ( pos==-1 || pos==0 || pos==(js_value.length-1) ) return false ;

	pos = js_value.indexOf( '.',0 ) ;
	if ( pos<=0 || pos==(js_value.length-1) ) return false ;

	return true ;
}

function	isPhone (js_value)
{
		var	re = /^[0-9\*\-( )]*$/;

		if (js_value.match (re))
				return	true;
		return	false;
	
}

function isMobilephone(js_value)
{
		var	re = /^[0-9\s]*$/;

		if (js_value.match (re))
			return	true;
		return	false;
}

function isPostcode(js_value)
{
		var	re ;
		re = /^\s*$/ ;
	
		if ( js_value.match(re) )
		{
			return true ;
		}
		if ( !is_natural(js_value) || js_value.length!=6 )
		{
			return false ;
		}
		return true ;
}

//	used by isPostCode
function	is_natural ( js_value )
{
		var	re ;
		re = /^\s*$/ ;
	
		if ( js_value.match(re) )
		{
			return true ;
		}
	
		re = /^\+{0,1}[0-9]*$/ ;
		if ( !js_value.match(re) ) return false ;
		return true ;
}
	
	function isSame(str1,str2){
    if(str1==str2)
       return true;
    else
       return false;
}

function isURL(js_value)
{
			
		var pos, posdot ;
		var	re ;
		re = /^\s*$/ ;
	
		if ( js_value.match(re) )
		{
			return true ;
		}
	
		pos = js_value.indexOf('://',0) ;
		if ( pos<0 ) return false ;
		posdot = js_value.lastIndexOf('.') ;
		if ( posdot<pos ) return false ;
		if ( posdot == js_value.length-1 ) return false ;
		return true ;
}

function isNumber(js_value)
{
	
	var	re ;
	re = /^\s*$/ ;

	if ( js_value.match(re) )
	{
		return true ;
	}
	if ( isNaN(js_value) || js_value.indexOf('.',0) >= 0 )	
	{
		return false ;
	}
	return true ;
		
}

function isDouble(js_value)
{
		var re;
		re = /^\s*$/;
		if( js_value.match(re))
		{
				return true;
		}
		
		if(isNaN(js_value))
				return false;
		return true;
}

function isPositive(js_value)
{
	if	(isDouble(js_value)&&js_value>0)
		return	true;
}

function isPositiveDouble(js_value, containsZero)
{
	if	(isDouble(js_value)&&((containsZero && js_value==0) || js_value>0))
		return	true;
}

function isPositiveNumber(js_value, containsZero)
{
	if	(isNumber(js_value) && ((containsZero && js_value==0) || js_value>0))
		return	true;
}

/**
 * 
 * modify by xjma, 2002.06.07,
 *	1.support yyyy-MM-dd-hh-mm-ss formart
 *	2.check whether the split char is '-'
 * modify by xjma, 2002.06.11,
 *	1.support yyyy-MM-dd/hh:mm formart
 *	2.support yyyy-MM-dd/hh formart
 *	3.support yyyy-MM-dd/hh:mm:ss formart
 */
function isDate(date, format)
{
	if (null==format || format == '')
		format = 'yyyy-MM-dd';
	
	if (date.length != format.length)
		return false;
	
	if ((date.length!=10 && date.length!=13 && date.length!=16 && date.length!=19) || date==null)
		return false;
	if (date.substring (4,5)!='-' || date.substring (7,8)!='-')
		return	false;
	if (date.length>=13 && date.substring (10,11)!='/')
		return	false;
	if (date.length>=16 && date.substring (13,14)!=':')
		return	false;
	if (date.length>=19 && date.substring (16,17)!=':')
		return	false;
		
	var year = parseInt(date.substring(0,4));
	var month = parseInt(date.substring(5,7));
	var day = parseInt(date.substring(8,10));
	if (date.length >= 13)
		var hour = parseInt(date.substring(11,13));
	if (date.length >= 16)
		var minute = parseInt(date.substring(14,16));
	if (date.length >= 19)
		var second = parseInt(date.substring(17,19));
	
	//by lixinqian, to deal with date format such as 200K-0M-03
	var ymd = date.substring(0,4) + date.substring(5,7) + date.substring(8,10);
	if(!(ymd > 19000000))//if ymd = 200k0m03, then return false
		return false;	
	//by lixinqian, to deal with date format such as 2000-18-32	
	month1 = parseInt("1" + date.substring(5,7));//01,02,...,11,12 => 101,102,...,111,112
	day1 = parseInt("1" + date.substring(8,10));//01,02,...,30,31 => 101,102,...,130,131		
	if( month1 < 101 || month1 > 112 || day1 < 101 || day1 > 131)
		return false;

	//	return when some date field not specify
	if (isNaN(year) || isNaN(month) || isNaN(day))
		return false;

	if (date.length >= 13)
	{
		hour1 = parseInt("1" + date.substring(11,13));//00,01,...,23 => 100,101,...,123
		if (hour1 < 100 || hour1 > 123)
			return false;
		if (isNaN (hour))
			return false;
	}

	if (date.length >= 16)
	{
		minute1 = parseInt("1" + date.substring(14,16));//00,01,...,59 => 100,101,...,159
		if (minute1 < 100 || minute1 > 159)
			return false;
		if (isNaN (minute))
			return false;
	}

	if (date.length >= 19)
	{
		second1 = parseInt("1" + date.substring(17,19));//00,01,...,59 => 100,101,...,159
		if (second1 < 100 || second1 > 159)
			return false;
		if (isNaN (second))
			return false;
	}
		
	//	validate the month only has 30 days
	if (month==4||month==6||
		month==9||month==11)
	{
		if (day>30) return false;
		
		return true;
	}
	
	//	validate the February
	if (month==2)
	{
		//	if the year is leap year
		if ((year%400==0)||
			((year%100!=0)&&(year%4==0)))
		{
			if (day>29)	return false;
		}
		else
		{
			if (day>28)	return false;
		}
		
		return true;
	}
	
	if (day>31) return false;
	
	return true;
}

function	isLoginname (js_value)
{
	if (isEmpty (js_value))
		return	true;
	if(js_value.length < 6)
		return true;
	var re = '[A-Za-z]+[A-Za-z0-9_]*';
	return	!regmatch (js_value, re)
}

function	isCode (js_value)
{
	if (isEmpty (js_value))
		return	true;
	
	var re = '[A-Za-z0-9_]*';
	return	regmatch (js_value, re)
}

function	isPassword (js_value)
{
	if (isEmpty (js_value))
		return	true;
	if(js_value.length < 6)
		return true;
	var re = '[A-Za-z0-9_]*';
	return	!regmatch (js_value, re)
}

function	isPrice (js_value)
{
	return	isDouble (js_value);
}

function	isEmpty (js_value)
{
	var re;
	re = /^\s*$/;
	if(js_value.match (re))
	{
		return true;
	}
	return	false;
}

function contains(s1,s2)
{
	var s = s1.lastIndexOf(s2);
	if (s!=-1)
		return true;
	return false;
}

function regmatch (s1, s2)
{
//	eval ("re = /^" + s2 + "$/");
	re = new RegExp ('^' + s2 + '$')
	return s1.match (re);
//	return s1.match (s2);
}

function strlength(s1,minsize,maxsize)
{
	if (minsize == Number.MAX_VALUE)
		minsize = 0;
	
	var len = s1.length;
	if (len>=minsize && len <= maxsize )
		return true;
	else
		return false;
}

function arraysize(aArray,minsize,maxsize)
{
	if (minsize == Number.MAX_VALUE)
		minsize = 0;
	
	var size = aArray.length;
	if(size >=minsize && size <= maxsize )
		return true;
	else
		return false;
}

function date_compare(date1, date2)
{
	var  date1_time = date1.getTime();
	var  date2_time = date2.getTime();
	
	if (date1_time > date2_time)
			return 1;
	if (date1_time == date2_time)
			return 0;
	return -1;
}

function string_compare(str1, str2)
{
	var len1 = str1.length;
	var len2 = str2.length;
	
	var n;
	if (len1 > len2) n = len2;
		else n = len1;
	
	var i = 0;
	var j = 0;

	while (n-- != 0) 
	{
	    var c1 = str1.charCodeAt(i++);
	    var c2 = str2.charCodeAt(j++);
	    if (c1 != c2) 
	    {
			return c1 - c2;
	    }
	}
	
	return len1 - len2;
    
}

function validate_date(year, month, day)
{
	if (null==year||
		null==month||
		null==day) 
		return;
	
	var year_sel	= year.selectedIndex;
	var month_sel	= month.selectedIndex;
	var day_sel		= day.selectedIndex;
	
	var year_num	= parseInt(year.options[year_sel].value);
	if (isNaN(year_num))
		year_num	= parseInt(year.options[year_sel].text);
		
	var month_num	= parseInt(month.options[month_sel].value);
	if (isNaN(month_num))
		month_num	= parseInt(month.options[month_sel].text);
		
	var day_num		= parseInt(day.options[day_sel].value);
	if (isNaN(day_num))
		day_num		= parseInt(day.options[day_sel].text);
	
	//	return when some date field not specify
	if (isNaN(year_num) || isNaN(month_num) || isNaN(day_num))
	{
		return;
	}
	
	var alert_str = year_num + "\u5e74" + month_num + "\u6708\u6ca1\u6709" + day_num + "\u5929\uff01";
	
	//	validate the month only has 30 days
	if (month_num==4||month_num==6||
		month_num==9||month_num==11)
	{
		if (day_num>30)	alert(alert_str);
		return;
	}
	
	//	validate the February
	if (month_num==2)
	{
		//	if the year is leap year
		if ((year_num%400==0)||
			((year_num%100!=0)&&(year_num%4==0)))
		{
			if (day_num>29)	alert(alert_str);
		}
		else
		{
			if (day_num>28)	alert(alert_str);
		}
		
		return;
	}
}

function	getValue (js_obj)
{
	if (null == js_obj)
		return	null;

	var	re, i;
	re = /^\s*$/ ;

  	if (js_obj.length)
  	{
		if (js_obj[0].type == "checkbox")
		{
			for (i=0; i<js_obj.length; i++)
				if (js_obj[i].checked == true)
					return	js_obj[i].value;
//			return	null;
			return	'';
		}
		else if (js_obj[0].type == "radio")
		{
			for (i=0; i<js_obj.length; i++)
				if (js_obj[i].checked == true)
					return	js_obj[i].value;
//			return	null;
			return	'';
		}
  	}
 	else
  	{
		if (js_obj.type == "select-multiple")
		{
			if (js_obj.selectedIndex < 0)
			{
				return	'';
//				return	null;
			}
			else
				return	js_obj[js_obj.selectedIndex].value;
		}
		else if (js_obj.type == "select-one")
		{
			if (js_obj.selectedIndex < 0)
			{
				return	'';
//				return	null;
			}
			else
				return	js_obj[js_obj.selectedIndex].value;
		}
		else if (js_obj.type == "text")
		{
		}
		else if (js_obj.type == "checkbox") 
		{
			if (js_obj.checked == false)
			{
				return	'';
//				return	null;
			}
		}
		else if (js_obj.type == "radio")
		{
			if (js_obj.checked == false)
			{
				return	'';
//				return	null;
			}
		}

		return	js_obj.value;
  	}

	return	js_obj.value;
}

function	objSelect (js_obj)
{
	try
	{
		var	obj;

		if (null == js_obj)
			return;
	
		var	re, i;
		re = /^\s*$/ ;
	
	  	if (js_obj.length)
	  	{
			obj = js_obj[0];
	  	}
	 	else
	  	{
			if (js_obj.type == "select-multiple")
				obj = js_obj[0];
			else if (js_obj.type == "select-one")
				obj = js_obj[0];
			else
				obj = js_obj;
	  	}

		obj.select ();
	}
	catch (e)
	{}
}

function	objFocus (js_obj)
{
	try
	{
		var	obj;

		if (null == js_obj)
			return;
	
		var	re, i;
		re = /^\s*$/ ;
	
	  	if (js_obj.length)
	  	{
			obj = js_obj[0];
	  	}
	 	else
	  	{
			if (js_obj.type == "select-multiple")
				obj = js_obj[0];
			else if (js_obj.type == "select-one")
				obj = js_obj[0];
			else
				obj = js_obj;
	  	}

		obj.focus ();
	}
	catch (e)
	{}
}
