﻿function RanDim(Min,Max)
{
	var minNum=parseInt(Min);
	var maxNum=parseInt(Max);
	var TempNum=Math.random()*(maxNum-minNum+1)+minNum;
	var ArrNum=TempNum.toString().split(".");
	return ArrNum[0];
}
function GetRandImageNum()
{
	return RanDim(1,20);
}	


//中文版跟英文版互换
function Change_EN_TC()
{
	var url=location.href.toLowerCase();
	var domain,ToUrl;
	if(url.indexOf("//") >= 0)
	{
		domain = url.split("//")[1].split("/")[0];
	}
	else
	{
		domain = url.split("/")[0];
	}
	if(url.indexOf(domain + "/en/") >= 0)
	{
		ToUrl = url.replace(domain + "/en/" , domain + "/cn/");
	}
	else
	{
		ToUrl = url.replace(domain + "/cn/" , domain + "/en/");
	}
	window.location.href = ToUrl;
}


//add by ivy on 3/7
var IsNS = document.layers;
var IsIE = document.all;
var IsNS6 = document.getElementById;

function findObj(n, d) { //v4.0
/*
this function can find the obj by name and return the obj.
now, it is work in NS4, IE, NS4+
*/	
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}

	function MM_findObj(n, d) { //v4.0
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && document.getElementById) x=document.getElementById(n); return x;
	}

	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}

	function MM_jumpMenu(targ,selObj,restore){ //v3.0
		eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
		if (restore) selObj.selectedIndex=0;
	}
	

function js_w(jText){
/*	Simplified document.writeln
*/		
	document.writeln(jText);
}	

function js_swapImg(jOrgImgName, jNewImgPath){
/*	swap the image object to new image. If want to use this function, please set the
		image name in the image object first.
*/		
  var funObj = findObj(jOrgImgName);
	if (funObj != null){
		if (!js_isNum(funObj.length))
			funObj.src=jNewImgPath;
		else{
			for (funJ=0;funJ<funObj.length;funJ++){
				funObj[funJ].src=jNewImgPath;
			}
		}
	}
}

function js_isNum(jVal){
	if (isNaN(parseInt(jVal)))
		return false;
	else
		return true;
}

function js_isInt(jVal){
  var funStr = jVal + "";
  if (funStr.length==0) return false;
    for (var i = 0 ;i < funStr.length;i++){
      if (funStr.charAt(i) <"0" || funStr.charAt(i) > "9") return false;
    }
  return true;
}

function js_isDollar(jVal){
  var funStr = jVal + "";
  var funDotCount = 0;
  if (funStr.length==0) return false;
    for (var i = 0 ;i < funStr.length;i++){
			if (funStr.charAt(i) == "."){
				funDotCount++;
				if (funDotCount >= 2) return false;
			}
			else{
				if (funStr.charAt(i) <"0" || funStr.charAt(i) > "9") return false;
			}
    }
  return true;
}

function IsEmpty(jVal){
/*
	Check is the string has val, but the function still not prefect.
	if val is tab or enter, it also return true		
*/
  var valstr = jVal+"";
//  valstr = valstr.replace(' ', '');
	valstr = LTrim(valstr);
  if (valstr.length == 0) return true;
    else return false;
}

function LTrim(jStr){
	var funRtnStr = ''
	if (jStr.length >= 1){
		if (jStr.substring(0,1) == ' '){
			funRtnStr = LTrim(jStr.substring(1,jStr.length))
		}
		else
			funRtnStr = jStr
	}
	return funRtnStr
}

function RTrim(jStr){
	var funRtnStr = ''
	if (jStr.length >= 1){
		if (jStr.substring(jStr.length-1,jStr.length) == ' '){
			funRtnStr = RTrim(jStr.substring(0, jStr.length-1))
		}
		else
			funRtnStr = jStr
	}
	return funRtnStr
}
	
function js_trim(jStr){
	var funRtnStr = LTrim(jStr);
	funRtnStr = RTrim(funRtnStr)
	return funRtnStr
}

	function js_refreshDiv(jDivID, jText){
		if (IsNS || IsIE){
			funObj = findObj(jDivID)
			if (typeof(funObj) != 'undefined'){
				if (IsNS){
					funObj.document.write(jText);
					funObj.document.close();
				}
				else
					funObj.innerHTML=jText;
			}
		}
		else{
			if (IsNS6)
				document.getElementById(jDivID).innerHTML=jText;
		}
	}

function js_drawDiv(jDivID, jTop, jLeft, jHeight, jWidth, jIsAbsolutePosition, jIsVisible, jZIndex, jMoreStyle, jMoreScript, jContent){
	js_openDiv(jDivID, jTop, jLeft, jHeight, jWidth, jIsAbsolutePosition, jIsVisible, jZIndex, jMoreStyle, jMoreScript);
	js_w(jContent);
	js_closeDiv();
}	

function js_openDiv(jDivID, jTop, jLeft, jHeight, jWidth, jIsAbsolutePosition, jIsVisible, jZIndex, jMoreStyle, jMoreScript){
	var funTemp='';
	funTemp += '<span id="' + jDivID + '"'
	if (jIsAbsolutePosition)
		funTemp += ' style="POSITION: absolute;'
	else
		funTemp += ' style="POSITION: relative;'
	funTemp += ' TOP: ' + jTop + 'px;'
	funTemp += ' Height: ' + jHeight + ';'
	funTemp += ' LEFT : ' + jLeft + 'px;'
	funTemp += ' WIDTH: ' + jWidth + ';'
	funTemp += ' visibility: '
	if (jIsVisible){
		if (IsNS)
			funTemp += 'show;';
		else
			funTemp += 'visible;';
	}		
	else{
		if (IsNS)
			funTemp += 'hide;';
		else
			funTemp += 'hidden;';
	}
		
	funTemp += ' z-index:' + jZIndex
	if (!IsEmpty(jMoreStyle))
		funTemp += ';' + jMoreStyle
	funTemp +=  '"'
	if (!IsEmpty(jMoreScript))
		funTemp +=  ' ' + jMoreScript
	funTemp +=  '>'
	js_w(funTemp);
}

function js_closeDiv(){
	var funTemp='';
	funTemp += '</span>'
	js_w(funTemp);
}

function js_changeDivVisible(jDivName, jIsVisible){
	var funObj = findObj(jDivName);
	if (js_isObject(funObj)){
		var funTemp = '';
		if (jIsVisible){
			if (IsNS)
				funTemp += 'show';
			else
				funTemp += 'visible';
		}		
		else{
			if (IsNS)
				funTemp += 'hide';
			else
				funTemp += 'hidden';
		}
	
		funObj.style.visibility = funTemp;
	}
}

function js_rtnJSDateObj(jDate){
/*
jDate format must be dd-mm-yyyy, and use this function will return Obj
mmmm dd, yyyy , this format special for JS to read,
because it is obj, so it can use date.getDay() these method
if the jDate is not Valid then will return NaN
*/
	funTemp = js_rtnJSDate(jDate);
	return new Date(funTemp);
}
	
function js_rtnJSDate(jDate){
/*
if the date format is dd-mm-yyyy, use this function will return
mmm dd, yyyy , this format special for JS to read
*/
	funArrDate = jDate.split("-")
	if (funArrDate.length == 3){
		funMonth = funArrDate[1]*1;
		funTemp = js_ConvertNumToSMonth(funMonth + '') + ' ' + (funArrDate[0]*1) + ', ' + (funArrDate[2]*1)
		return funTemp;
	}
	else
		return '';
}

function js_dayOfMonth(jYear, jMonth){
	var funArr_month = new Array(13);
	var fun_year = jYear * 1;
	var fun_month = jMonth * 1;
	funArr_month[1] = 31;
	if (IsDigit(fun_year/4))
		if (IsDigit(fun_year/400))
			funArr_month[2] = 29;
		else
			if (IsDigit(fun_year/100))
				funArr_month[2] = 28;
			else
				funArr_month[2] = 29;
	else
		funArr_month[2] = 28;
	funArr_month[3] = 31;
	funArr_month[4] = 30;
	funArr_month[5] = 31;
	funArr_month[6] = 30;
	funArr_month[7] = 31;
	funArr_month[8] = 31;
	funArr_month[9] = 30;
	funArr_month[10] = 31;
	funArr_month[11] = 30;
	funArr_month[12] = 31;
	return funArr_month[jMonth];
}

function js_isDate(jDate){
	var funTemp = false;

	funArrDate = jDate.split("/")

	if (funArrDate.length == 3){		
		var funArr_month = new Array(13);
		var fun_year = funArrDate[2] * 1;
		var fun_month = funArrDate[1] * 1
		var fun_day = funArrDate[0] * 1;
		if (IsDigit(fun_year) && IsDigit(fun_month) && IsDigit(fun_day)){
			if (fun_year >= 1800 & fun_year <= 2100){
				funArr_month[1] = 31;
				if (IsDigit(fun_year/4))
					if (IsDigit(fun_year/400))
						funArr_month[2] = 29;
					else
						if (IsDigit(fun_year/100))
							funArr_month[2] = 28;
						else
							funArr_month[2] = 29;
				else
					funArr_month[2] = 28;
				funArr_month[3] = 31;
				funArr_month[4] = 30;
				funArr_month[5] = 31;
				funArr_month[6] = 30;
				funArr_month[7] = 31;
				funArr_month[8] = 31;
				funArr_month[9] = 30;
				funArr_month[10] = 31;
				funArr_month[11] = 30;
				funArr_month[12] = 31;
				if (funArr_month[fun_month] >= fun_day)
					funTemp = true;
			}
		}
	}
	return funTemp;
}

function js_swapDiv(jOrgDivName, jNewDivName){
	var funOrgDiv = findObj(jOrgDivName);
	var funNewDiv = findObj(jNewDivName);
	if (funOrgDiv != null)
		js_changeDivVisible(jOrgDivName, false)
	if (funNewDiv != null)
		js_changeDivVisible(jNewDivName, true)
}

function js_moveDiv(jDivName, jX, jY){
	var funObj = findObj(jDivName);
	if (js_isObject(funObj)){
		funObj.style.top = jY;
		funObj.style.left = jX;
	}
}

function js_resizeDiv(jDivName, jWidth, jHeight){
/*
Dunno is it work at netscape
but if want it work at IE, it must need to set when the div overflow handler, set it to scroll or auto
*/
	var funObj = findObj(jDivName);
	if (js_isObject(funObj)){
		if (!IsEmpty(jHeight))
			funObj.style.height = jHeight;
		if (!IsEmpty(jWidth))
			funObj.style.width = jWidth;
	}
}

function js_isObject(jObj){
	if (jObj != null){
		return true;
	}
	else{
		return false;
	}
}

function js_divScroll(jDivName, jTop, jLeft){
/*
Can use program to control the scroll bar of DIV
*/
	var funObj = findObj(jDivName);
	if (js_isObject(funObj)){
		if (!IsEmpty(jTop))
			funObj.scrollTop = jTop;
		if (!IsEmpty(jLeft))
			funObj.scrollLeft = jLeft;
	}
}

function js_changeDivOverflow(jDivName, jOverflowEnum){
/*
jOverflowEnum
1 = ''
2 = 'visible'
3 = 'hidden'
4 = 'scroll'
5 = 'auto'
*/
	var funObj = findObj(jDivName);
	if (js_isObject(funObj)){
		var funOverflow = '';
		switch (jOverflowEnum+''){	
			case '1':
				funOverflow = '';
				break;
			case '2':
				funOverflow = 'visible';
				break;
			case '3':
				funOverflow = 'hidden';
				break;
			case '4':
				funOverflow = 'scroll';
				break;
			case '5':
				funOverflow = 'auto';
				break;
		}
		funObj.style.overflow = funOverflow;
	}
}

function js_ConvertNumToSMonth(jNumMonth){
	switch (jNumMonth+'') {
		case '1':
			return 'Jan';
			break;
		case '2':
			return 'Feb';
			break;
		case '3':
			return 'Mar';
			break;
		case '4':
			return 'Apr';
			break;
		case '5':
			return 'May';
			break;
		case '6':
			return 'Jun';
			break;
		case '7':
			return 'Jul';
			break;
		case '8':
			return 'Aug';
			break;
		case '9':
			return 'Sep';
			break;
		case '10':
			return 'Oct';
			break;
		case '11':
			return 'Nov';
			break;
		case '12':
			return 'Dec';
			break;
	}
}
				

function IsDigit(jVal){
/*
if the jVal contain any none numeric like "." or other char then will return false
*/
  var funValStr = jVal + "";
  if (funValStr.length==0) return false;
    for (var i = 0 ;i < funValStr.length;i++){
      if (funValStr.charAt(i) <"0" || funValStr.charAt(i) > "9") return false;
    }
  return true;
}

function js_isChecked(jObj){
/*
check the checkbox or radiobox is checked or not
*/
	var funTemp = false;
	try{
		funTemp = jObj.checked;
		if (!funTemp){
			for (var i=0;i<jObj.length;i++){
				if (jObj[i].checked){
					funTemp = true;
					i = jObj.length
				}
			}
		}
	}
	catch(e){
//		alert(e)
	}
	return funTemp;		
}	

function js_isPressEnter(e){
	if (e.keyCode == 13)
		return true;
	else
		return false;
}

function js_checkedNo(jObj){
/*
return how many check box is checked
*/
	var funTemp = false;
	var funChecked = 0;
	try{
		funTemp = jObj.checked;
		if (!funTemp){
			for (var i=0;i<jObj.length;i++){
				if (jObj[i].checked){
					funChecked++;
				}
			}
		}
	}
	catch(e){
//		alert(e)
	}
	return funChecked;
}	


function js_isDateObj(jObj){
	var funTemp = true;
	js_normalObjColor(jObj);

	if (!js_isDate(jObj.value)){
		js_errObjColor(jObj);
		funTemp = false;
		jObj.focus();
	}
	return funTemp;
}

function js_isEmptyObj(jObj){
/*
check the Object is empty or not, if yes, check the backgroud color to yellow
*/
	var funTemp = false;
	js_normalObjColor(jObj);	

	if (IsEmpty(jObj.value)){
		js_errObjColor(jObj);
		funTemp = true;
		jObj.focus();
	}
	return funTemp;
}

function js_normalObjColor(jObj){
	jObj.style.background = 'white';	
}

function js_errObjColor(jObj){
	jObj.style.background = 'yellow';
}

function js_checkAllBox(jCheckBoxNameObj, jChecked){
/*	
Common function, use it when you can to have a check box that after click will click all other check box
Remember the other box name must same, given the box obj, for example document.fr.checkbox,
and you want to check it or not
*/
	if (jCheckBoxNameObj != null){
		var funLength = jCheckBoxNameObj.length;
		if (funLength == undefined)
			jCheckBoxNameObj.checked = jChecked;
		else{
			for (var i=0;i<funLength;i++){
			  jCheckBoxNameObj[i].checked = jChecked;
			}
		}
	}
}

function js_isEmail(jVal){
  var valstr = jVal+"";
  if (valstr.indexOf("@") != 0 &&valstr.indexOf("@") != "-1" && valstr.indexOf(".",valstr.indexOf("@")) != "-1" && jVal != "" && valstr.indexOf(".",valstr.indexOf("@"))!=valstr.indexOf("@") + 1 &&valstr.indexOf(".",valstr.indexOf("@"))!=valstr.length-1 ) return true; 
  else return false;
}

function js_isEmailObj(jObj){
	var funTemp = true;
	js_normalObjColor(jObj);

	if (!js_isEmail(jObj.value)){
		js_errObjColor(jObj);
		funTemp = false;
		jObj.focus();
	}
	return funTemp;
}

function js_convertPX2Num(jPxNum){
	var funTemp = jPxNum
	if (!IsEmpty(jPxNum)){
		funTemp = funTemp.toLowerCase();
		funTemp = funTemp.replace('px', '');
		funTemp = funTemp * 1;
	}
	return funTemp;
}

	function onClickActionRadio() {
		var value = "";
		for (var i = 0; i < document.theform.actionPerformed.length; i++) {
			if(document.theform.actionPerformed[i].checked == "1") {
				value = document.theform.actionPerformed[i].value;
			}
		}
		if(value == "approve" || value == "reject") {
			showActionRemark();
		} else if (value == "assignTo") {
			showAssignTo();
		} else {
			showNothing();
		}
	}

	function showNothing() {
		document.all.divActionRemark.style.visibility = "hidden";
		document.all.divActionRemark.style.height = "1";
		document.all.divAssignTo.style.visibility = "hidden";
		document.all.divAssignTo.style.height = "1"
	}
	
	function showActionRemark() {
		document.all.divActionRemark.style.visibility = "visible";
		document.all.divActionRemark.style.height = "130";
		document.all.divAssignTo.style.visibility = "hidden";
		document.all.divAssignTo.style.height = "1"
	}

	function showAssignTo() {
		document.all.divActionRemark.style.visibility = "hidden";
		document.all.divActionRemark.style.height = "1";
		document.all.divAssignTo.style.visibility = "visible";
		document.all.divAssignTo.style.height = "150"
	}

	function js_request_login()
	{
		location.href = '../login/default.aspx?url=' + window.location + '&popup=http%3A%2F%2Fwww%2Ecp1897%2Ecom%2Ehk%2Fcgi%2Dbin%2Fal%5Fshoplog%2Ecgi%3Fshopid%3D52%26d%5Furl%3Dhttp%3A%2F%2Fwww%2Ecp1897%2Ecom%2Ehk%2Falliance%2Fbupa%2Fbooklist%2Ehtml';
	}	

//*** By Ray Wong on 2003-11-06
function checkDate4Control(source, arguments)
{
	if(arguments.Value == "")
	{
		arguments.IsValid = true;
		return;	
	}
	arguments.IsValid = checkDate(arguments.Value, "dmy", "-", "2049/12/31", "1900/1/1");
}

function checkDate(txt, format, separator, max, min){
	var arrTmp = txt.split(separator);
	if(arrTmp.length != 3)return false;
	for(var i = 0; i < 3; i++)
	{
		if(isNaN(arrTmp[i] = parseInt(arrTmp[i], 10)))return false;
	}
	var dateTmp = new Date("2004/1/1");
	var arrFormat = format.toLowerCase().split("");
	for(var i = 0; i < arrFormat.length; i++){
		if(arrFormat[i] == "d"){
			dateTmp.setDate(arrTmp[i]);
		}else if(arrFormat[i] == "m"){
			dateTmp.setMonth(arrTmp[i] - 1);
		}else if(arrFormat[i] == "y"){
			// Set year range
			// if(arrTmp[i] < 1950 || arrTmp[i] > 2050)return false;
			dateTmp.setYear(arrTmp[i]);
		}
	}
	for(var i = 0; i < arrFormat.length; i++){
		if(arrFormat[i] == "d"){
			if(arrTmp[i] != parseInt(dateTmp.getDate()))return false;
		}else if(arrFormat[i] == "m"){
			if(arrTmp[i] - 1 != parseInt(dateTmp.getMonth()))return false;
		}else if(arrFormat[i] == "y"){
			if(arrTmp[i] < 2000)
			{
				if(arrTmp[i] != 1900 + parseInt(dateTmp.getYear()))return false;
			}
			else
			{
				if(arrTmp[i] != parseInt(dateTmp.getYear()))return false;
			}
		}
	}	
	if(max != "")
	{
		var maxD = new Date(max);
		if(dateTmp > maxD)
			return false;
	}
	if(min != "")
	{
		var minD = new Date(min);
//		alert(dateTmp + "[]" + minD + "[]" + (dateTmp < minD))
		if(dateTmp < minD)
			return false;
	}
	
	return true;
}

	function js_construct_querystring()
	{
		var myQueryString = "";
		
		for (var i=0; i < document.forms[0].elements.length; i++)
		{
			if (!IsEmpty(document.forms[0].elements[i].id))
			{
				var myIdString = new String();
				
					
				myIdString = document.forms[0].elements[i].id.toString();
				myIdString = myIdString.replace(mSearch_Form_Client_ID + "_", "");
					
				if (myIdString.substring(0,4) == "rdo_") 
				{
					if (document.forms[0].elements[i].checked)
						myQueryString += "&" + escape(myIdString.substring(0, myIdString.lastIndexOf ("_"))) + "=" + escape(document.forms[0].elements[i].value);
				}
				else 
				{
					myQueryString += "&" + escape(myIdString) + "=" + escape(document.forms[0].elements[i].value);
				}
				
			}
		}
		
		if (!IsEmpty(myQueryString))
			myQueryString = myQueryString.substring (1);
			
		return myQueryString;	
	}
	
	function js_get_key_in_querystring(jQuerystring, jKey)
	{
		if (!IsEmpty(jKey))
		{
			var myArrQS = jQuerystring.split("&");
			for (var i=0; i < myArrQS.length; i++)
			{
				if (myArrQS[i].indexOf("=") != -1)
				{
					var myQS_Key = myArrQS[i].substring(0, myArrQS[i].indexOf("="));
					
					if (myQS_Key == js_trim(jKey.toLowerCase()))
					{
						if (myArrQS[i].indexOf("=") < myArrQS[i].length)
						
						var myQS_Value = myArrQS[i].substring(myArrQS[i].indexOf("=") + 1);
						
						if (myQS_Value.indexOf("#") >= 0)
							myQS_Value = myQS_Value.substring(myQS_Value.indexOf("="));
						
						return myQS_Value;
					}
				}
			}
		}
		return "";
	}
	
	function js_get_querystring(jKey)
	{
		var myPath = location.href.toLowerCase();
		var myQueryString = "";
		
		if (myPath.indexOf("?") != -1)
		{
			if (myPath.indexOf("?") < myPath.length)
				myQueryString = myPath.substring(myPath.indexOf("?") + 1);
		}

		if (!IsEmpty(jKey))
			return js_get_key_in_querystring(myQueryString, jKey);
		
		return myQueryString;
	}
	
	function js_search()
	{
		var myPath = location.pathname;
		location.href = myPath + "?" + js_construct_querystring();
	}

	function js_edit(jEdit_Form_Path, jID, jAction)
	{
		
		var myPath = jEdit_Form_Path;
		
		if (IsEmpty(jEdit_Form_Path))
		{
			myPath = js_Get_Module_Name() + "_edit.aspx";
		}
		
		var myQS = '';

		if (!IsEmpty(jID))
			myQS += "&id=" + jID;
		
		if (!IsEmpty(jAction))
			myQS += "&action=" + jAction;
			
		location.href = myPath + js_Get_Back_Link() + myQS;
	}
	
	function js_change_page(jPN_Combo_ClientID)
	{
		var myQS = js_remove_key_from_querystring(js_get_querystring(""), jPN_Combo_ClientID + "_pn");

		if (IsEmpty(myQS))
			myQS = "?";
		else
			myQS = "?" + myQS + "&";
			
		myQS += jPN_Combo_ClientID + "_pn=" + document.forms[0].elements[jPN_Combo_ClientID + "_pn"].value;
		
		location.href = location.pathname + myQS;
	}

	function js_remove_key_from_querystring(jQueryString, jKey)
	{
		if (!IsEmpty(jKey))
		{
			var myArrQS = jQueryString.split("&");
			jQueryString = "";
			
			for (var i=0; i < myArrQS.length; i++)
			{
				if (myArrQS[i].indexOf("=") != -1)
				{
					var myQS_Key = myArrQS[i].substring(0, myArrQS[i].indexOf("="));

					if (myQS_Key.toLowerCase() != js_trim(jKey.toLowerCase()))
						jQueryString += "&" + myArrQS[i];
				}
			}
			
			if (jQueryString.length >= 1)
				jQueryString = jQueryString.substring(1);
		}
		
		return jQueryString;
		
	}
	
	function js_del_one_record(jID, jData_Name, jForm_ID, jButton_Name)
	{
		if (confirm('Are you sure delete data "' + jData_Name + '"?'))
		{
			document.forms[0]["del_id"].value = jID;
			document.forms[0]["data_name"].value = jData_Name;
			__doPostBack(jForm_ID + "$" + jButton_Name, '');
		}
	}

	function js_delete_one_record(jDel_ID, jData_Name, jDelete_Form)
	{
		if (confirm('Are you sure delete data "' + jData_Name + '"?'))
		{
			if (IsEmpty(jDelete_Form))
				jDelete_Form = js_Get_Module_Name() + "_Delete.aspx";
			
			var myQS = js_Get_Back_Link();
			myQS += "&del_id=" + escape(jDel_ID);
			myQS += "&data_name=" + escape(jData_Name);
			location.href = jDelete_Form + myQS;
		}
	}

	function js_delete_record_at_edit_form(jDel_ID, jData_Name, jDelete_Form)
	{
		if (confirm('Are you sure delete data "' + jData_Name + '"?'))
		{
			if (IsEmpty(jDelete_Form))
				jDelete_Form = js_Get_Module_Name() + "_Delete.aspx";
			
			var myQS = "?back_link=" + js_get_querystring('back_link');
			myQS += "&del_id=" + escape(jDel_ID);
			myQS += "&data_name=" + escape(jData_Name);
			location.href = jDelete_Form + myQS;
		}
	}
	
	
	function js_Get_Back_Link()
	{
		var myQS = js_get_querystring('');
		
		if (!IsEmpty(myQS))
			myQS = escape("?" + myQS);

		return "?back_link=" + escape(location.pathname) + myQS;
	}
	
	function js_Get_Module_Name()
	{
		var myScript_Name = location.pathname;
		
		if (myScript_Name.lastIndexOf("/") != -1)
			if (myScript_Name.lastIndexOf("/") < myScript_Name.length)
				myScript_Name = myScript_Name.substring(myScript_Name.lastIndexOf("/") + 1);
		
		if (myScript_Name.lastIndexOf("_") != -1)
			if (myScript_Name.lastIndexOf("_") < myScript_Name.length)
				myScript_Name = myScript_Name.substring(0, myScript_Name.lastIndexOf("_"));

		return myScript_Name;
	}
	
	function js_back()
	{
		var myLocation = unescape(js_get_querystring('back_link'));
		if (IsEmpty(myLocation))
			myLocation = location.pathname.toLowerCase().replace('_edit.aspx', '_list.aspx');
		
		location.href = myLocation;
	}

	function js_edit_form()
	{
		location.href = location.pathname + "?" + js_remove_key_from_querystring(js_get_querystring(''), "action") + "&action=edit";
	}
	
	function js_edit_tab(jEdit_Action)
	{
		location.href = location.pathname + "?" + js_remove_key_from_querystring(js_get_querystring(''), "action") + "&action=" + escape(jEdit_Action);
	}
	
	function js_cancel_edit()
	{
		// back to data list if id is empty
		if (IsEmpty(js_get_querystring('id')))
		{
			var myLocation = unescape(js_get_querystring('back_link'));
			if (IsEmpty(myLocation))
				myLocation = location.pathname.toLowerCase().replace('_edit.aspx', '_list.aspx');
			
			location.href = myLocation;
		}
		else
		{
			//back to data view
			location.href = location.pathname + "?action=view&" + js_remove_key_from_querystring(js_get_querystring(''), "action");
		}
	}

	function js_check_date_input_date(source, arguments)
	{
		if (!IsEmpty(arguments.Value))
		{
//			arguments.IsValid = js_check_date(arguments.Value, "d/m/y", "/");
			arguments.IsValid = js_isDate(arguments.Value);
		}
	}

	// format = date format, d/m/y is normal use
	function js_check_date(jDate, format, separator)
	{
		
		var arrTmp = jDate.split(separator);
		if(arrTmp.length != 3)return false;
		for(var i = 0; i < 3; i++)
			if(isNaN(arrTmp[i] = parseInt(arrTmp[i],10)))return false;
			//if(isNaN(arrTmp[i]))return false;
			
		var dateTmp = new Date();
		var arrFormat = format.toLowerCase().split(separator);
		dateTmp.setYear(2004);		// This line must not be removed
		for(var i = 0; i < arrFormat.length; i++){
			if(arrFormat[i] == "d"){
				dateTmp.setDate(arrTmp[i]);
			}else if(arrFormat[i] == "m"){
				dateTmp.setMonth(arrTmp[i] - 1);
			}else if(arrFormat[i] == "y"){
				// Set year range
				if(arrTmp[i] < 1950 || arrTmp[i] > 2050)return false;
				dateTmp.setYear(arrTmp[i]);
			}
		}

		for(var i = 0; i < arrFormat.length; i++){
			if(arrFormat[i] == "d"){
				if(arrTmp[i] != parseInt(dateTmp.getDate()))return false;
			}else if(arrFormat[i] == "m"){
				if(arrTmp[i] - 1 != parseInt(dateTmp.getMonth()))return false;
			}else if(arrFormat[i] == "y"){
				if(arrTmp[i] != parseInt(dateTmp.getYear()))return false;
			}
		}
		
		return true;
	}

	function js_get_radio_selectedIndex(jRadio_Name)
	{
		myRadio = document.forms[0][jRadio_Name];
		if (js_isObject(myRadio))
		{
			for (var i=0; i< myRadio.length; i++)
			{
				if (myRadio[i].checked)
					return i;
			}
		}
		return -1;
	}

	function js_Sorting_Listbox(jAction, jObj_Name)
	{
		if(document.forms.length < 1)return;
		if(document.forms[0].elements.length < 1)return;
		var obj = document.forms[0].elements["lst_" + jObj_Name];
		if(obj == undefined)return;
		if(obj.options == undefined)return;
		var obj2 = document.forms[0].elements["rtn_" + jObj_Name];
		if(obj2 == undefined)return;
		if(obj2.value == undefined)return;
		if(obj.options.length < 1)return;
		for(var i=0; i<obj.options.length; i++)
			if(obj.options[i].selected)
			{
				var dest = i;
				switch(jAction)
				{
					case 1:
						if(i == 0)return;
						dest = 0;
						break;
					case 2:
						if(i == 0)return;
						dest = i - 1;
						break;
					case 3:
						if(i == obj.options.length - 1)return;
						dest = i + 1;
						break;
					case 4:
						if(i == obj.options.length - 1)return;
						dest = obj.options.length - 1;
						break;
					default:
						return;
				}
		
				var j = i, k = i; 
				var l=0;
				
				var temp = obj.options[i].value, temp2 =obj.options[i].text;
				if(i < dest)
					for(l=i; l<dest; l++)
					{
						obj.options[l].value = obj.options[l+1].value;
						obj.options[l].text = obj.options[l+1].text;
					}
				else
					for(l=i; l>dest; l--)
					{
						obj.options[l].value = obj.options[l-1].value;
						obj.options[l].text = obj.options[l-1].text;
					}
				obj.options[l].value = temp;
				obj.options[l].text = temp2;
				obj.options[dest].selected = true;
				break;
			}
		if(i==obj.options.length)
			return;
		obj2.value = "";
		for(var i=0; i<obj.options.length; i++)
			obj2.value += "," + obj.options[i].value;
		obj2.value = obj2.value.substring(1);
		
	}

if (IsIE)
	if(document.onmousemove == null)
		document.onmousemove = function (e) {
			if (document.all)
			{
				xMousePos = window.event.x + window.screenLeft + document.body.clientLeft;
				yMousePos = window.event.y + window.screenTop + document.body.clientTop;
			}
		}

function openWindow(url, target, attribute, width, height)
{
	var left = xMousePos, top = yMousePos;
	
	if(left > screen.width - width)left = screen.width - width;
	if(top > screen.height - height)top = screen.height - height;
	var temp = "width=" + width + ",height=" + height + ",left=" + left + ",top=" + top;
	if(attribute == "")
		attribute = temp;
	else
		attribute = temp + "," + attribute;
	var ow = window.open(url, target, attribute);
	if(ow != undefined)
		if(ow != null)
		{
			ow.moveTo(left, top);
			ow.window.focus();
		}
}
