function getServerResponse(uri)
{
   var responseText = "";
   var url = window.location.protocol + "//" + window.location.host + uri;
   var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   try
   {   	 
	   xmlhttp.Open("POST", url, false);
	   xmlhttp.Send("");
	   responseText = xmlhttp.responseText;
   }
   catch (e)
   {
   }
   finally
   {
       delete xmlhttp;
   }
   
   return responseText;
}

function getServerResponse_xml(uri)
{      
   var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   try
   {
	   xmlhttp.Open("POST", uri, false);
	   xmlhttp.Send("");
	   return   xmlhttp.responseText;
   }
   catch (e)
   {
   }
   finally
   {
       delete xmlhttp;
   }
  
}

function processException(e){
	switch (typeof(e)){
		case "string":{
			if (e!="abort"){
				if (e)
					alert(e);
				else
					alert(constErrUnknown);
			}
			break;
		}

		case "object":{
			alert(e.description+"\n"+constErrType+":"+(e.number & 0xFFFF));
			break;
		}
	}
}

function trimStr(str){
	str=getValidStr(str);
	if (!str) return "";
	for(var i=str.length-1; i>=0; i--){
		if (str.charCodeAt(i, 10)!=32) break;
	}
	return str.substr(0, i+1);
}

function getValidStr(str) {
	str+="";
	if (str=="undefined" || str=="null")
		return "";
	else
		return str;
}

function cutString(strIn,len) {
	
	var intLen=strIn.length;

	var strOut="";
	var strTemp;
	var cutLen = 0 ;

	for(var i=0; i<intLen; i++)
	{
		if (cutLen > len ) 
		{
			strOut = strOut + "..." ;
			return strOut;
		}
		strTemp=strIn.charCodeAt(i);
		
		if (strTemp>255)
		{
			cutLen = cutLen + 2 ;
		}
		else 
		{
			cutLen = cutLen + 1 ;
		}
		strOut = strOut + strIn.charAt(i) ;
	}
	
	return strOut ;
}

function encode(strIn)
{
	
	var intLen=strIn.length;
	var strOut="";
	var strTemp;
	//alert("strIn = " + strIn);
	for(var i=0; i<intLen; i++)
	{
		strTemp=strIn.charCodeAt(i);
		
		if (strTemp>255)
		{
			//alert("strTemp = " + strTemp);
			tmp = strTemp.toString(16);
			//alert("Tem = " + tmp);
			for(var j=tmp.length; j<4; j++) tmp = "0"+tmp;
			strOut = strOut+"^"+tmp;
		}
		else
		{
			if (strTemp < 48 || (strTemp > 57 && strTemp < 65) || (strTemp > 90 && strTemp < 97) || strTemp > 122)
			{
				tmp = strTemp.toString(16);
				for(var j=tmp.length; j<2; j++) tmp = "0"+tmp;
				strOut = strOut+"~"+tmp;
			}
			else
			{
				strOut=strOut+strIn.charAt(i);
			}
		}
	}

	return (strOut);
}

function decode(strIn)
{


	var intLen = strIn.length;
	var strOut = "";
	var strTemp;

	for(var i=0; i<intLen; i++)
	{
		strTemp = strIn.charAt(i);
		switch (strTemp)
		{
			case "~":{
				strTemp = strIn.substring(i+1, i+3);
				//alert(strTemp);
				strTemp = parseInt(strTemp, 16);
				//alert(strTemp);
				strTemp = String.fromCharCode(strTemp);
				//alert(strTemp);
				strOut = strOut+strTemp;
				i += 2;
				break;
			}
			case "^":{
				strTemp = strIn.substring(i+1, i+5);
				//alert(strTemp);
				strTemp = parseInt(strTemp,16);
				//alert(strTemp);
				strTemp = String.fromCharCode(strTemp);
				//alert(strTemp);
				strOut = strOut+strTemp;
				i += 4;
				break;
			}
			default:{
				strOut = strOut+strTemp;
				break;
			}
		}

	}

	return (strOut);
}

function getEncodeStr(str) {
	return encode(getValidStr(str));
}

function getDecodeStr(str) {
	return ((str)?decode(getValidStr(str)):"");
}

function compareText(str1, str2){
	str1=getValidStr(str1);
	str2=getValidStr(str2);
	if (str1==str2) return true;
	if (str1=="" || str2=="") return false;
	return (str1.toLowerCase()==str2.toLowerCase());
}

function isTrue(value){
	return (value==true || (typeof(value)=="number" && value!=0) ||
		compareText(value, "true") || compareText(value, "T") ||
		compareText(value, "yes") || compareText(value, "on"));
}

function getStringValue(value){
	if (typeof(value)=="string" || typeof(value)=="object")
		return "\""+getValidStr(value)+"\"";
	else if (typeof(value)=="date")
		return "\""+(new Date(value))+"\"";
	else if (getValidStr(value)=="")
		return "\"\"";
	else
		return value;
}

function getInt(value){
	var result=parseInt(value,10);
	if (isNaN(result)) result=0;
	return result;
}

function getFloat(value){
	var result=parseFloat(value,10);
	if (isNaN(result)) result=0;
	return result;
}

function formatFloat(value, decimalLength){
	var text=getValidStr(Math.round(getFloat(value)*Math.pow(10, decimalLength)));
	var len=text.length;
	return text.substr(0, len-decimalLength)+"."+text.substr(len-decimalLength, decimalLength);
}

function formatDateTime(date, mode){
	function getDateString(date){
		var years=date.getFullYear();
		var months=date.getMonth()+1;
		var days=date.getDate();

		if (months<10) months="0"+months;
		if (days<10) days="0"+days;

		return years+"-"+months+"-"+days;
	}

	function getTimeString(date){
		var hours=date.getHours();
		var minutes=date.getMinutes();
		var seconds=date.getSeconds();

		if (hours<10) hours="0"+hours;
		if (minutes<10) minutes="0"+minutes;
		if (seconds<10) seconds="0"+seconds;

		return hours+":"+minutes+":"+seconds;
	}

	if (typeof(date)=="object" && !isNaN(date)){
		if (!mode) mode="datetime";
		switch (mode){
			case "date":{
				return getDateString(date);
				break;
			}
			case "time":{
				return getTimeString(date);
				break;
			}
			case "datetime":{
				return getDateString(date)+" "+getTimeString(date);
				break;
			}
			default:{
				return getDateString(date);
				break;
			}
		}
	}
	else
		return "";
}

function getTypedValue(value, dataType){
	var result="";
	switch (dataType){
		case "float":{
			result=parseFloat(value);
			break;
		}
		case "int":{
			result=Math.round(parseFloat(value));
			break;
		}
		case "date":;
		case "datetime":;
		case "time":{
			value=getValidStr(value);
			result=new Date(value.replace(/-/g, "/"));
			break;
		}
		case "bool":{
			result=isTrue(value);
			break;
		}
		default:{
			result=getValidStr(value);
			break;
		}
	}
	return result;
}

function pArray(){
	this.firstUnit=null;
	this.lastUnit=null;
	this.length=0;
}

function pArray_clear(pArray){
	var unit=pArray.firstUnit;
	var _unit;
	while (unit){
		_unit=unit;
		unit=unit.nextUnit;
		if (_unit.data) delete _unit.data;
		delete _unit;
	}
	pArray.firstUnit=null;
	pArray.lastUnit=null;
	pArray.length=0;
}

function pArray_insert(pArray, mode, unit, newUnit){
	var u1, u2;
	switch (mode){
		case "begin":{
			u1=null;
			u2=pArray.firstUnit;
			break;
		}
		case "before":{
			u1=(unit)?unit.prevUnit:null;
			u2=unit;
			break;
		}
		case "after":{
			u1=unit;
			u2=(unit)?unit.nextUnit:null;
			break;
		}
		default:{
			u1=pArray.lastUnit;
			u2=null;
			break;
		}
	}

	newUnit.prevUnit=u1;
	newUnit.nextUnit=u2;
	if (u1) u1.nextUnit=newUnit; else pArray.firstUnit=newUnit;
	if (u2) u2.prevUnit=newUnit; else pArray.lastUnit=newUnit;
	pArray.length++;
}

function pArray_insertArray(pArray, mode, unit, subArray){
	if (!subArray || !subArray.firstUnit) return;

	var u1, u2;
	switch (mode){
		case "begin":{
			u1=null;
			u2=pArray.firstUnit;
			break;
		}
		case "before":{
			u1=(unit)?unit.prevUnit:null;
			u2=unit;
			break;
		}
		case "after":{
			u1=unit;
			u2=(unit)?unit.nextUnit:null;
			break;
		}
		default:{
			u1=pArray.lastUnit;
			u2=null;
			break;
		}
	}

	subArray.firstUnit.prevUnit=u1;
	subArray.lastUnit.nextUnit=u2;
	if (u1) u1.nextUnit=subArray.firstUnit; else pArray.firstUnit=subArray.firstUnit;
	if (u2) u2.prevUnit=subArray.lastUnit; else pArray.lastUnit=subArray.lastUnit;
	pArray.length+=subArray.length;
}

function pArray_delete(pArray, unit){
	var u1, u2;
	u1=unit.prevUnit;
	u2=unit.nextUnit;
	if (u1) u1.nextUnit=u2; else pArray.firstUnit=u2;
	if (u2) u2.prevUnit=u1; else pArray.lastUnit=u1;
	delete unit;
	pArray.length--;
}

function pArray_ex_insert(pArray, data){
	var found=false;
	var _unit=pArray.firstUnit;
	while (_unit){
		if (_unit.data==data){
			found=true;
			break;
		}
		_unit=_unit.nextUnit;
	}

	var newUnit=new Object();
	newUnit.data=data;
	if (!found) pArray_insert(pArray, "end", null, newUnit);
}

function pArray_ex_delete(pArray, data){
	var _unit=pArray.firstUnit;
	while (_unit){
		if (_unit.data==data){
			pArray_delete(pArray, _unit);
			break;
		}
		_unit=_unit.nextUnit;
	}
}

/* add Code -- create Table PrimaryKey */
function createPKId(){
	var today = new Date();
	var years = today.getFullYear();
	var newyears = new String(years).substring(0);
	var months=today.getMonth()+1;
	var days=today.getDate();
	if (months<10) months="0"+months;
	if (days<10) days="0"+days;

	var hours=today.getHours();
	
	var minutes=today.getMinutes();
	var seconds=today.getSeconds();
	if (hours<10) hours="0"+hours;
	if (minutes<10) minutes="0"+minutes;
	if (seconds<10) seconds="0"+seconds;
	var milliseconds=today.getMilliseconds();

	var returnValue=newyears + months + days + hours + minutes + seconds + milliseconds;
	return returnValue;	
}

function createDate(){
	var today = new Date();
	var years = today.getFullYear();
	var newyears = new String(years).substring(0);
	var months=today.getMonth()+1;
	var days=today.getDate();
	if (months<10) months="0"+months;
	if (days<10) days="0"+days;	

	var returnValue=newyears+"-" + months+"-" + days;
	return returnValue;	
}

//取得当前天是本年的第几周
function getWeekOfYear(inputDate){
	var input_year = inputDate.substring(0,4);//得到本年
    first_day = new Date(input_year,0,1);//本年度的第一天
	var i_day = (new Date(inputDate.substring(0,4),parseInt(inputDate.substring(5,7))-1,inputDate.substring(8,10)) - first_day)/(86400000)+1; //所选择的日期是今年的第几天
	
	var i_week = first_day.getDay(); //得到本年的第一天是星期几
	
	var i_weeks = parseInt((i_day - (7-i_week))/7) ; 
	
	if (i_day == (i_weeks*7+(7-i_week))) 
		returnWeek = i_weeks + 1 ;
	else 
		returnWeek = i_weeks + 2 ;
	
	return returnWeek ;   //返回本年的第几周
}

//取得某周的开始日期
function getStartDateOfWeek(inputDate){
	var input_date = new Date(inputDate.substring(0,4),parseInt(inputDate.substring(5,7))-1,inputDate.substring(8,10));
	var i_week = input_date.getDay() ; //得到此天是星期几
	var first_day =  input_date - i_week*86400000 ;
	
	return formatDateTime(first_day,"date");
}

//取得某周的结束日期
function getEndDateOfWeek(inputDate){
	var input_date = new Date(inputDate.substring(0,4),parseInt(inputDate.substring(5,7))-1,inputDate.substring(8,10));
	var i_week = input_date.getDay() ; //得到此天是星期几
	var end_day =  input_date + (6-i_week)*86400000 ;
	
	return formatDateTime(end_day,"date");
}


//enabled  	LXL 2005.6.2
function of_enableButton(as_button_id, ab_enabled) {
  document.getElementById(as_button_id).disabled = !ab_enabled;
}

//VISIBLE  	LXL 2005.6.17
function of_visibleButton(as_button_id, ab_enabled) {
  document.getElementById(as_button_id).style.visibility = (ab_enabled?'visible':'hidden');
}
