// ------------------ General untility functions ------------------- 
// Convention:
//   public functions : use "gen_" prefix 
//   private functions: use "_gen_" prefix
// Dependency:
//   none
// ------------------------------------------------------------ 

// -------------- constants -------------- 
MEDIA_TYPE_GIF = "image/gif"
MEDIA_TYPE_JPG = "image/jpg"
MEDIA_TYPE_SWF = "application/x-shockwave-flash"
MEDIA_TYPE_UNKNOWN ="unknown"

// -------------------- open win functions -------------------- 
function gen_open_win(url, win_name, width, height, feature) {	
	if (!feature) {		
		feature = 'toolbar='		+ 'yes'
		+ ',width=' 				+ width
		+ ',height=' 				+ height
		+ ',scrollbars='			+ 'yes'
		+ ',resizable='				+ 'yes'
		+ ',screenX='				+ '10'
		+ ',screenY='				+ '10'
		+ ',status='				+ 'yes'
		if(document.all){
			feature += ',top='		+ '10'
			feature += ',left='		+ '10'
		}
	}

	var win = window.open(url, win_name, feature);		
	win.focus();
	return win;
}

// -------------------- image swap functions -------------------- 
function gen_img_act(imgName) {
	imgOn = eval(imgName + "on.src");
	document[imgName].src = imgOn;
}

function gen_img_inact(imgName) {
	imgOff = eval(imgName + "off.src");
	document[imgName].src = imgOff;
}

//----------------iLayer/layer image swap function ----------
function gen_layer_img_act(imgName) {
	if (document.all){
	imgOn = eval(imgName + "on.src");
	document[imgName].src = imgOn;
	}
}

function gen_layer_img_inact(imgName) {
if (document.all){
	imgOff = eval(imgName + "off.src");
	document[imgName].src = imgOff;}
}

// -------------------- banner rotation -------------------- 
function gen_rotational_banner(img_name, freq_min) {
	// properties
	this.img_name = img_name

	if (freq_min) {
		this.freq_ms = freq_min * 60000
	} else {
		this.freq_ms = 2 * 3600000 //DEFAULT
	}

	this.curr_idx = 0
	this.img_urls = new Array()	
	this.lnk_urls = new Array()	

	// methods
	this.get_next_idx = _gen_rb_get_next_idx
	this.set_curr_idx = _gen_rb_set_curr_idx

	this.add = _gen_rb_add
	this.rotate = _gen_rb_rotate
	this.start = _gen_rb_start
	this.get_curr_lnk_url = _gen_rb_get_curr_lnk_url
	this.get_curr_img_url = _gen_rb_get_curr_img_url
}

function _gen_rb_get_next_idx() {
	var n = this.img_urls.length;
	this.curr_idx = this.curr_idx + 1;

	if (this.curr_idx == n) this.curr_idx = 0;	
	return this.curr_idx
}

function _gen_rb_set_curr_idx(idx) {
	this.curr_idx = idx;
}

function _gen_rb_add(url_img, url_lnk) {
	var n = this.img_urls.length;
	this.img_urls[n] = url_img;
	
	if (url_lnk && url_lnk != '') {
		this.lnk_urls[n] = url_lnk;
	} else {
		this.lnk_urls[n] = '#';
	}
}

function _gen_rb_rotate() {
	var i = this.get_next_idx();
	document[this.img_name].src = this.img_urls[i];
}

function _gen_rb_start() {
	_rb = this
	setInterval('_rb.rotate()', this.freq_ms)
}
	
function _gen_rb_get_curr_lnk_url() {
	return this.lnk_urls[this.curr_idx];
}

function _gen_rb_get_curr_img_url() {
	return this.img_urls[this.curr_idx];
}

// -------------------- numeric functions -------------------- 
function gen_get_random_num(n) {
	return Math.floor(Math.random() * n)	
}

function gen_is_float(strValue) {
	floatValue = parseFloat(strValue);
	newStrValue = String(floatValue);
	if (strValue == newStrValue) {
		return true;
	}
	else {
		return false;
	}
}

function gen_is_int(strValue) {
	intValue = parseInt(strValue);
	newStrValue = String(intValue);
	if (strValue == newStrValue) {
		return true;
	}
	else {
		return false;
	}
}

function gen_trim_float(in_val, pos){
	var out_val, float_val, round_up, round_up_val, i, str
	str = ''	
	if (isNaN(in_val) != true) {in_val = in_val.toString();}
	if (in_val.indexOf('.')==-1)
		float_val = ''
	else
		float_val = in_val.substring(in_val.indexOf(".")+1, in_val.length)
	//alert("["+float_val+"]");
	out_val = in_val.substring(0, in_val.length-(float_val.length-pos))
	//alert("["+out_val+"]");
	if (float_val.length > pos){
		if (parseInt(in_val.substring(in_val.length-(float_val.length-pos),in_val.length-(float_val.length-pos)+1)) >= 5){
			round_up = true;
		}else{
			round_up = false;
		}
		
		if (round_up == true){
			str = '0.'
			for(i = 0; i < pos-1; i++) {str += '0'}
			round_up_val = parseFloat(str+1)
			out_val = parseFloat(out_val) + round_up_val			
			return out_val;
		}else{
			return out_val;
		}
		
	}else if(float_val.length < pos){
		out_val = in_val
		if(out_val.indexOf('.')==-1){out_val += "."}
		for(i = 0; i < (pos-float_val.length); i++){out_val += '0';}
		return out_val;
	}else{
		return out_val;
	}
}

// -------------------- string functions -------------------- 
function gen_validate_usr_id(fld_usr_id,lang,checkCase) {

	if ((checkCase==null||checkCase)&&fld_usr_id.value.toLowerCase() != fld_usr_id.value) {
		if ( lang == ''|| lang == 'en' )
			alert('Please enter only lower case characters for the "Login ID"');
		else if ( lang == 'gb' )
			alert('请以小写英文字母输入"用户名"')
		else if (lang == 'ch' )
			alert('叫糶璣ゅダ块"祅腹"')
		return false;
	}
	
	if (fld_usr_id.value.search(/[^A-Za-z0-9_\-]/) != -1) {		
		
		
		if ( lang == ''|| lang == 'en' )
			alert('Please enter only English characters, numbers and the underscore in the "Login ID"');
		else if ( lang == 'gb' )
			alert('请以英文字母,数字或底线输入"用户名"')
		else if (lang == 'ch' )
			alert('叫璣ゅダ,计┪┏絬块"祅腹"')
			
		fld_usr_id.focus();
		return false;
	}

	if (fld_usr_id.value.length == 0) {
		if ( lang == ''|| lang == 'en' )
			alert('Please enter the "Login ID"');
		else if ( lang == 'gb' )
			alert('请输入"用户名"')
		else if (lang == 'ch' )
			alert('叫块"祅腹"')			
		
		fld_usr_id.focus();
		return false;
	}

	return true;
}


function gen_validate_usr_pwd(fld_usr_pwd,lang) {
	_MIN_FIELD_LEN = 1

	if (fld_usr_pwd.value.length < _MIN_FIELD_LEN && _MIN_FIELD_LEN == 1) {
		if ( lang == ''|| lang == 'en' )
			alert('Please enter the "Password"');
		else if ( lang == 'gb' )
			alert('请输入"密码"')
		else if (lang == 'ch' )
			alert('叫块"盞絏"')		
					
		fld_usr_pwd.focus();
		return false;	
	} else if (fld_usr_pwd.value.length < _MIN_FIELD_LEN) {
		if ( lang == ''|| lang == 'en' )
			alert('Please enter at least ' + _MIN_FIELD_LEN + ' characters for the "Password"');
		else if ( lang == 'gb' )
			alert('请输入不少于' + _MIN_FIELD_LEN + ' 个字的密码')
		else if (lang == 'ch' )
			alert('叫块ぃぶ' + _MIN_FIELD_LEN + ' 盞絏')		
		
		fld_usr_pwd.focus();
		return false;
	}

	return true;
}

function gen_validate_email(fld_email,lang) {

	if (fld_email.value.search(/^[^@]+@[^\.]+/) == -1 || fld_email.value.search(/\s/) != -1) {
		if ( lang == ''|| lang == 'en' )
			alert('Please enter a valid "Email address"');
		else if ( lang == 'gb' )
			alert('请正确输入电子邮件地址')
		else if (lang == 'ch' )
			alert('叫块タ絋"筿秎"')		
		
		fld_email.focus();
		return false;
	}

	if (fld_email.value.search(/[^A-Za-z0-9_\-@.&!\/]/) != -1) {		
		if ( lang == ''|| lang == 'en' )
			alert('Please enter a valid "Email address"');
		else if ( lang == 'gb' )
			alert('请正确输入电子邮件地址')
		else if (lang == 'ch' )
			alert('叫块タ絋"筿秎"')	
		fld_email.focus();
		return false;
	}
	return true;
}

function gen_validate_integer(fld, txtFldName,lang) {
	var valPass = true
	val = gen_trim_string(fld.value)
	
	if ((fld.value.indexOf('.') == 0) || (fld.value.lastIndexOf('.') == fld.value.length-1)){
		valPass = false;		
	}else if (val.length == 0 || val.search(/[^0-9]/) != -1  ) {		
		if ( isNaN(Number(val)) ) {valPass = false;}
	}
	
	if (valPass == false){
		if ( lang == ''|| lang == 'en' ) {alert('Please enter integer in the "' + txtFldName + '"');}
		else if ( lang == 'gb' ) {alert('请输入整数於' + '"' + txtFldName + '"' );}
		else if (lang == 'ch' ) {alert('叫块俱计' + '"' + txtFldName + '"' );}
		fld.focus();
		return false;
	}else {return true;}
}

function gen_validate_float(fld, txtFldName, lang) {
	var val = gen_trim_string(fld.value);
	if ( (val.search(/^\d{1,9}$/) == -1 && val.search(/^\d{1,9}\.\d{1,2}$/) == -1)) {
		if ( lang == ''|| lang == 'en' )
			alert('Please enter a value less than 999999999.99 in the "' + txtFldName + '" (correct to 2 decimal places)');
		else if ( lang == 'gb' )
			alert('请输入一个小数小於 999999999.99 在' + '"' + txtFldName + '" (准至两位小数)')
		else if (lang == 'ch' )
			alert('叫块计 999999999.99 ' + '"' + txtFldName + '" (非ㄢ计)')	
		
		fld.focus();
		return false;
	} 
	return true;
}


function gen_validate_pencentage(fld, txtFldName,lang) {
	val = gen_trim_string(fld.value); 

	if (val.search(/[0-9]/) == -1) {
		if ( lang == ''|| lang == 'en' )
			alert('Please enter integer in the "' + txtFldName + '"');
		else if ( lang == 'gb' )
			alert('请在' + '"' + txtFldName + '"' + '里输入整数')
		else if (lang == 'ch' )
			alert('叫' + '"' + txtFldName + '"' + '柑块俱计')	
		
		fld.focus();
		return false;
	}else if (fld.value > 100 ){
		if ( lang == ''|| lang == 'en' )
			alert('Please enter 0~100 in the "' + txtFldName + '"');
		else if ( lang == 'gb' )
			alert('请在' + '"' + txtFldName + '"' + '里输入0~100 的整数')
		else if (lang == 'ch' )
			alert('叫' + '"' + txtFldName + '"' + '柑块0~100 俱计')	
		
		fld.focus();
		return false;
	}
	else if(fld.value < 0 ){
		if ( lang == ''|| lang == 'en' )
			alert('Please enter 0~100 in the "' + txtFldName + '"');
		else if ( lang == 'gb' )
			alert('请在' + '"' + txtFldName + '"' + '里输入0~100 的整数')
		else if (lang == 'ch' )
			alert('叫' + '"' + txtFldName + '"' + '柑块0~100 俱计')	
		
		fld.focus();
		return false;
	}

	return true;
}


function gen_validate_positive_integer(fld,txtFldName,lang){
	
	val = gen_trim_string(fld.value)
	
	if ( val.search(/[^0-9]/) != -1 ){
		if ( lang == ''|| lang == 'en' )
			alert('Please enter a positive integer in the "' + txtFldName + '"');
		else if ( lang == 'gb' )
			alert('请输入一个正整数在' + '"' + txtFldName + '"' )
		else if (lang == 'ch' )
			alert('叫块タ俱计' + '"' + txtFldName + '"' )	
		
		fld.focus();
		return false;
	
	}
	if (val > Math.pow(2,31) ){
		if ( lang == ''|| lang == 'en' )
			alert(txtFldName + ' is too large. Please enter a smaller number in the "'+ txtFldName + '"');
		else if ( lang == 'gb' )
			alert('"' + txtFldName + '"' +  '的数值过大,请输入一个较小的数目')
		else if (lang == 'ch' )
			alert('"' + txtFldName + '"' +  '计筁,叫块耕计ヘ')	
		
		fld.focus();
		return false;
	
	}
	return true;
}


function gen_validate_negative_integer(fld,txtFldName,lang){
	


	if ( Number(fld.value) < Number(-Math.pow(2,31))  ){
		if ( lang == ''|| lang == 'en' )
			alert(txtFldName + ' is too small. Please enter a larger number in the "'+ txtFldName + '"');
		else if ( lang == 'gb' )
			alert('"' + txtFldName + '"' +'的数值过小,请输入一个较大的数目')
		else if (lang == 'ch' )
			alert('"' + txtFldName + '"' +'计筁,叫块耕计ヘ')	
		
		fld.focus();
		return false;
	
	}
	return true;
}

function gen_validate_empty_field(fld, txtFldName,lang) {
	
	if (fld.type.toLowerCase().indexOf('select') != -1) {		
		val = fld.options[fld.selectedIndex].value
	} else {
		val = fld.value
	}

	if (val.length == 0 || val.search(/^\s+$/) != -1) {
		if ( lang == ''|| lang == 'en' )
			alert('Please specify a value in the ' + txtFldName);
		else if ( lang == 'gb' )
			alert('请输入' + txtFldName)
		else if (lang == 'ch' )
			alert('叫块' + txtFldName)	
		if(fld.type=='textarea' || fld.type=="text")
			fld.focus();
		return false;
	}

	return true;
}

function gen_Leap(y) {
	return ((y % 400 == 0) || (y % 100 != 0 && y % 4 == 0));
}

function gen_Month_Length(month, year) {
	if(month == 2)
		return 28 + gen_Leap(year);
	else if(month == 4 || month == 6 || month == 9 || month == 11)
	   return 30;
	else
		return 31;
}


function gen_validate_date(fldName,txtFldName,lang) {
// form name should be "frmXml"	

// validate year
		fld = fldName + '_yy'
		
		eval(fld).value = gen_trim_string(eval(fld).value)
		
		if ( eval(fld).value.length != 4  || Number(eval(fld).value) < 1800  ){
		
			if ( lang == ''|| lang == 'en' )
				alert('Please enter a valid year in the "' + txtFldName + '"');
			else if ( lang == 'gb' )
				alert('请在 "'+ txtFldName + '" 里输入一个正确年份')
			else if (lang == 'ch' )
				alert('叫 "'+ txtFldName + '" 柑块タ絋')
							
			eval(fld).focus();
			return false;
		}
		
		if (!gen_validate_integer(eval(fld),txtFldName,lang))
			return false;
			
		// validate month	
		fld = fldName + '_mm'		
		eval(fld).value = gen_trim_string(eval(fld).value)
		if ( Number(eval(fld).value) < 10  && eval(fld).value.length == 1  ){
			eval(fld).value = '0' + eval(fld).value					
		}	
		
		if ( eval(fld).value.length != 2  || eval(fld).value > 12 || eval(fld).value < 1 ){
			
		if ( lang == ''|| lang == 'en' )
			alert('Please enter a valid month in the "' + txtFldName + '"');
		else if ( lang == 'gb' )
			alert('请在 "'+ txtFldName + '" 里输入一个正确月份')
		else if (lang == 'ch' )
			alert('叫 "'+ txtFldName + '" 柑块タ絋る')
									
		eval(fld).focus();
		return false;
		}		

		if (!gen_validate_integer(eval(fld),txtFldName,lang))
			return false;
			
						
		// validate day
		
		fld = fldName + '_dd'

		eval(fld).value = gen_trim_string(eval(fld).value)
		if ( Number(eval(fld).value) < 10 && eval(fld).value.length == 1  ){
			eval(fld).value = '0' + eval(fld).value					
		}
		
		
		if ( eval(fld).value.length != 2 || eval(fld).value > gen_Month_Length(Number(eval(fldName+'_mm.value')), eval(fldName+'_yy.value')) || eval(fld).value < 1){
		
		if ( lang == ''|| lang == 'en' )
			alert('Please enter a valid day in the "' + txtFldName + '"');
		else if ( lang == 'gb' )
			alert('请在 "'+ txtFldName + '"里输入一个正确日期')
		else if (lang == 'ch' )
			alert('叫 "'+ txtFldName + '"柑块タ絋ら戳')	
		
			eval(fld).focus();
			return false;
		}

		if (!gen_validate_integer(eval(fld),txtFldName,lang))
			return false;			
						
	return true;
}

function gen_validate_date_compare(frm, start_obj, end_obj, start_nm, end_nm, lang, focus_obj){
	
	var _start_date, _end_date	
	
	_start_date = new Date(eval("frm." + start_obj + "_yy.value"), Number(eval("frm." + start_obj + "_mm.value"))-1, Number(eval("frm." + start_obj + "_dd.value")), Number(eval("frm." + start_obj + "_hour.value")), Number(eval("frm." + start_obj + "_min.value")))
	_end_date = new Date(eval("frm." + end_obj + "_yy.value"), Number(eval("frm." + end_obj + "_mm.value"))-1, Number(eval("frm." + end_obj + "_dd.value")), Number(eval("frm." + end_obj + "_hour.value")), Number(eval("frm." + end_obj + "_min.value")))
	
	if (focus_obj == null || focus_obj == '') {focus_obj = start_obj;}	
	if(_start_date >= _end_date){
		if ( lang == ''|| lang == 'en' )
			alert('"' + end_nm + '" ' + 'cannot be earlier than' + ' "' + start_nm + '"');
		else if (lang == 'ch')
			alert('"' + start_nm + '" ' + 'ぃΝ' + ' "' + end_nm + '"');
		else if (lang == 'gb')
			alert('"' + start_nm + '" ' + '不能早于' + ' "' + end_nm + '"');
		eval("frm." + focus_obj + "_yy.focus()")
		return false;
	}
	return true;	
}

function gen_validate_date_compare_larger(frm, start_obj, end_obj, start_nm, end_nm, lang, focus_obj){
	
	var _start_date, _end_date	
	
	_start_date = new Date(eval("frm." + start_obj + "_yy.value"), Number(eval("frm." + start_obj + "_mm.value"))-1, Number(eval("frm." + start_obj + "_dd.value")), Number(eval("frm." + start_obj + "_hour.value")), Number(eval("frm." + start_obj + "_min.value")))
	_end_date = new Date(eval("frm." + end_obj + "_yy.value"), Number(eval("frm." + end_obj + "_mm.value"))-1, Number(eval("frm." + end_obj + "_dd.value")), Number(eval("frm." + end_obj + "_hour.value")), Number(eval("frm." + end_obj + "_min.value")))
	
	if (focus_obj == null || focus_obj == '') {focus_obj = start_obj;}	
	if(_start_date > _end_date){
		if ( lang == ''|| lang == 'en' )
			alert('"' + end_nm + '" ' + 'cannot be earlier than' + ' "' + start_nm + '"');
		else if (lang == 'ch')
			alert('"' + start_nm + '" ' + 'ぃΝ' + ' "' + end_nm + '"');
		else if (lang == 'gb')
			alert('"' + start_nm + '" ' + '不能早于' + ' "' + end_nm + '"');
		eval("frm." + focus_obj + "_yy.focus()")
		return false;
	}
	return true;	
}

function gen_validate_time(fldName,txtFldName,lang) {
// form name should be "frmXml"
		
		// validate hour
		fld = fldName + '_hour'		
		eval(fld).value = gen_trim_string(eval(fld).value)
		
		if ( Number(eval(fld).value) < 10  && eval(fld).value.length == 1  ){
			eval(fld).value = '0' + eval(fld).value					
		}
		
		
			
		if ( eval(fld).value.length != 2  || eval(fld).value > 23 || eval(fld).value < 0 ){
		
		if ( lang == ''|| lang == 'en' )
			alert('Please enter a valid hour in the "' + txtFldName + '"');
		else if ( lang == 'gb' )
			alert('请在 "'+ txtFldName + '" 里输入一个正确小时')
		else if (lang == 'ch' )
			alert('叫 "'+ txtFldName + '" 柑块タ絋')	
			eval(fld).focus();
			return false;
		}

		
		if (!gen_validate_integer(eval(fld),txtFldName,lang))
			return false;
		// validate minute
		fld = fldName + '_min'		

		eval(fld).value = gen_trim_string(eval(fld).value)
		
		if ( Number(eval(fld).value) < 10  && eval(fld).value.length == 1  ){
			eval(fld).value = '0' + eval(fld).value					
		}
		
		
		
		if ( eval(fld).value.length != 2  || eval(fld).value > 60 || eval(fld).value < 0 ){
		
		if ( lang == ''|| lang == 'en' )
			alert('Please enter a valid minute in the "' + txtFldName + '"');
		else if ( lang == 'gb' )
			alert('请在 "'+ txtFldName + '" 里输入一个正确分钟')
		else if (lang == 'ch' )
			alert('叫 "'+ txtFldName + '" 柑块タ絋だ牧')	
			
			eval(fld).focus();
			return false;
		}
		
		if (!gen_validate_integer(eval(fld),txtFldName,lang))
			return false;

	return true;
}


function gen_validate_cur_time(fldName,txtFldName,lang){
	var now_date, fldName_date
	
	now_date = new Date()
	fldName_date = new Date(eval(fldName + "_yy.value"), Number(eval(fldName + "_mm.value"))-1, Number(eval(fldName + "_dd.value")))
	alert(now_date+' & '+fldName_date)
	if (fldName_date < now_date){
		if ( lang == ''|| lang == 'en' ){
			alert('The date in \"' + txtFldName + '\" cannot be earlier than the present date.')
		}else if (lang == 'ch'){
			alert('\"' + txtFldName + '\" 不可早于现在时间')
		}else if (lang == 'gb'){
			alert('\"' + txtFldName + '\" ぃΝ瞷丁')
		}
		return false;
	}
	return true;
}

function gen_trim_string(str) {
	str =  str.replace(/\s+$/, "")
	str =  str.replace(/^\s+/, "")
	return str
}



//--------------------- Netscape CSS Layer Fix------------------
function WQ_netscapeCssFix() {
  if (document.WQ.WQ_netscapeCssFix.initWindowWidth != window.innerWidth || document.WQ.WQ_netscapeCssFix.initWindowHeight != window.innerHeight) {
    document.location = document.location;
  }
}

function WQ_netscapeCssFixCheckIn() {
  if ((navigator.appName == 'Netscape') && (parseInt(navigator.appVersion) == 4)) {
    if (typeof document.WQ == 'undefined'){
      document.WQ = new Object;
    }
    if (typeof document.WQ.WQ_scaleFont == 'undefined') {
      document.WQ.WQ_netscapeCssFix = new Object;
      document.WQ.WQ_netscapeCssFix.initWindowWidth = window.innerWidth;
      document.WQ.WQ_netscapeCssFix.initWindowHeight = window.innerHeight;
    }
    window.onresize = WQ_netscapeCssFix;
  }
}

// -------------------- cookie functions -------------------- 

//_GEN_COOKIE_DELIMITER = "\f\n~\t\r"
//_GEN_COOKIE_DELIMITER_ESCAPED = "\\f\\n~\\t\\r"
_GEN_COOKIE_DELIMITER = "\f"
_GEN_COOKIE_DELIMITER_ESCAPED = "\\f"


function gen_get_cookie(name) {
    var start = document.cookie.indexOf(name+"=");
    
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length))) return "";
   
    if (start == -1) return "";
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}

function gen_set_cookie(name,value,expires,path,domain,secure) {
    document.cookie = name + "=" +escape(value) +
        ( (expires) ? ";expires=" + expires.toGMTString() : "") +
        ( (path) ? ";path=" + path : ";path=/") + 
        ( (domain) ? ";domain=" + domain : "") +
        ( (secure) ? ";secure" : "");
		
		
}

function gen_del_cookie(name,path,domain) {
    if (gen_get_cookie(name)) document.cookie = name + "=" +
        ( (path) ? ";path=" + path : ";path=/") +
        ( (domain) ? ";domain=" + domain : "") +
        ";expires=Thu, 01-Jan-70 00:00:01 GMT";
}

function gen_get_expiry_date(howmanyyear) {
	day = new Date();
	yr = day.getFullYear() + howmanyyear;
	day.setFullYear(yr);
	
	return day;
}

function gen_set_cookie_token(cookie_nm, token_nm, token_val, expires) {

	var re = new RegExp(_GEN_COOKIE_DELIMITER_ESCAPED + token_nm + "=" + "[^" + _GEN_COOKIE_DELIMITER_ESCAPED + "]*" + _GEN_COOKIE_DELIMITER_ESCAPED);		
	var cookie_val = gen_get_cookie(cookie_nm)	
	var token = token_nm + "=" + token_val;

	if (cookie_val.search(re) != -1) {
		cookie_val = cookie_val.replace(re, _GEN_COOKIE_DELIMITER + token + _GEN_COOKIE_DELIMITER);
	} else {
		cookie_val = cookie_val +  _GEN_COOKIE_DELIMITER + token + _GEN_COOKIE_DELIMITER;
	}	
	if (expires)
		gen_set_cookie(cookie_nm, cookie_val, expires)
	else
		gen_set_cookie(cookie_nm, cookie_val)
}

function gen_get_cookie_token(cookie_nm, token_nm) {

	var re = new RegExp(_GEN_COOKIE_DELIMITER_ESCAPED + token_nm + "=" + "[^" + _GEN_COOKIE_DELIMITER_ESCAPED + "]*" + _GEN_COOKIE_DELIMITER_ESCAPED);
	var re = new RegExp(_GEN_COOKIE_DELIMITER_ESCAPED + token_nm + "=" + "[^" + _GEN_COOKIE_DELIMITER_ESCAPED + "]*" + _GEN_COOKIE_DELIMITER_ESCAPED);		
	var cookie_val = gen_get_cookie(cookie_nm)	
	var token_val	
	if (cookie_val.search(re) != -1) {
		var token = cookie_val.match(re)[0]
		token_val = token.substring(token_nm.length + 2, token.length-1)
	} else {
		token_val = ""
	}
	
	return token_val;
}

function gen_del_cookie_token(cookie_nm, token_nm){
}

// -------------------- url parameter functions -------------------- 
function gen_get_url_param(name) {
	var strParam = window.location.search
	
	idx1 = strParam.indexOf(name + "=")
	if (idx1 == -1)	return ""

	idx1 = idx1 + name.length + 1
	idx2 = strParam.indexOf("&", idx1)

	if (idx2 != -1)
		len = idx2 - idx1
	else
		len = strParam.length

	return unescape(strParam.substr(idx1, len))
}	

function gen_set_url_param(name, value, url) {

	if (url) {
		idx0 = url.indexOf('?')
		if (idx0 == -1) {
			strParam = ""
		} else {
			strParam = url.substr(idx0,url.length)
		}
	} else {
		strParam = window.location.search
	}
		
	idx1 = strParam.indexOf(name + "=")
	if (idx1 == -1)	{
		if (strParam == "") {
			strParam = "?" + name + "=" + value
		} else {
			strParam = strParam + "&" + name + "=" + value
		}
	} else {
		idx1 = idx1 + name.length + 1
		idx2 = strParam.indexOf("&", idx1)
		if (idx2 == -1) {
			strParam = strParam.substr(0,idx1) + value
		} else {
			suffx = strParam.substr(idx2, strParam.length)
			strParam = strParam.substr(0,idx1) + value + suffx
		}
	}
	
	if (url) {
		if (idx0 == -1) {
			return url + strParam
		} else {
			return url.substr(0, idx0) + strParam
		}			
	} else {
		return window.location.pathname + strParam
	}	
}

//--------------------- Netscape CSS Layer Fix------------------
function WQ_netscapeCssFix() {
  if (document.WQ.WQ_netscapeCssFix.initWindowWidth != window.innerWidth || document.WQ.WQ_netscapeCssFix.initWindowHeight != window.innerHeight) {
    document.location = document.location;
  }
}

function WQ_netscapeCssFixCheckIn() {
  if ((navigator.appName == 'Netscape') && (parseInt(navigator.appVersion) == 4)) {
    if (typeof document.WQ == 'undefined'){
      document.WQ = new Object;
    }
    if (typeof document.WQ.WQ_scaleFont == 'undefined') {
      document.WQ.WQ_netscapeCssFix = new Object;
      document.WQ.WQ_netscapeCssFix.initWindowWidth = window.innerWidth;
      document.WQ.WQ_netscapeCssFix.initWindowHeight = window.innerHeight;
    }
    window.onresize = WQ_netscapeCssFix;
  }
}

// -------------- file name -------------- 

function getFilename(pathname) {
	s = pathname.lastIndexOf("\\")
	if (s == -1) {
		s = pathname.lastIndexOf("/")
	}
	if (s == -1) {
		return pathname
	}

	l = pathname.length - s
	return pathname.substr(s+1,l)
}

function getMediaType(filename) {	

	s = filename.lastIndexOf(".")
	if (s == -1)
		return MEDIA_TYPE_UNKNOWN

	l = filename.length
	suffx = filename.substr(s+1,l)

	if (suffx == "gif")
		return MEDIA_TYPE_GIF
	else if (suffx == "jpg" || suffx == "jpeg")
		return MEDIA_TYPE_JPG
	else if (suffx == "swf")
		return MEDIA_TYPE_SWF
	else
		return MEDIA_TYPE_UNKNOWN
}


// -------------- auto foucs for date field --------------
function auto_focus_field(org_field,length,focus_field){

	if ( event.keyCode != 9 && event.keyCode != 16 ){
		if ( org_field.value.length == length )
			focus_field.select()								
	}

} 

// --------------- form select all checkbox ------------------
function gen_frm_sel_all_checkbox(frm,trigger_checkbox,ele_nm){
	
	var i, n, ele
	n = frm.elements.length
	for (i = 0; i < n; i++){
		ele = frm.elements[i]
		
		if (ele_nm != null && ele_nm != ''){
			if (ele.type == "checkbox"  && ele.name == ele_nm)
				
				if (trigger_checkbox.type == 'checkbox'){
					if (trigger_checkbox.checked == true)
						ele.checked = true;
					else
						ele.checked = false;
				}else if (trigger_checkbox.type == 'hidden'){
					if (trigger_checkbox.value == 'true'){
						ele.checked = false;						
					}else{
						ele.checked = true;						
					}					
				}				
		}else{			
			if (ele.type == "checkbox")
				
				if (trigger_checkbox.type == 'checkbox'){
					if (trigger_checkbox.checked == true)
						ele.checked = true;
					else
						ele.checked = false;
				}else if (trigger_checkbox.type == 'hidden'){
					if (trigger_checkbox.value == 'true'){
						ele.checked = false;	
					}else{
						ele.checked = true;						
					}					
				}
		}		
	}
	
	if (trigger_checkbox.type == 'hidden'){
		if (trigger_checkbox.value == 'true')
			trigger_checkbox.value = 'false';
		else
			trigger_checkbox.value = 'true';
	}
}

// --------------- DHTML functions ------------------
function gen_dhtml_change_class(src, newClassName){
	if (document.all){src.className = newClassName;};
}
