// 取得目前列的索引值
//function rowClick()
//{
//alert(window.event.srcElement.parentElement.parentElement.rowIndex);
//}




// JavaScript Document

// 符合W3C標準，取得特定元素
function $(id)
{
	return document.getElementById(id);	
}

// 使用DOM元素的innerHTML屬性為特定元素指定任意內容(當作HTML)
function echo(obj,html)
{
	$(obj).innerHTML=html;
}

// 使用DOM節點的"style關聯陣列"對特定元素設定樣式 
//==========================================
// 讓特定元素顯示
function fopen(obj)
{
	$(obj).style.display="";
}
// 讓特定元素隱藏
function fclose(obj)
{
	$(obj).style.display="none"; //隱藏後不會佔據網頁空間
	//$(obj).style.visibility="hidden"; //隱藏後仍會佔據網頁空間
}
//==========================================


//去掉字串兩邊的空格
//==========================================
//去掉字串左邊的空格
function lTrim(str)
{
  if (str.charAt(0) == " ")
  {
    //如果字串左邊第一個字符為空格
    str = str.slice(1);//將空格從字串中去掉
    //這一句也可改成 str = str.substring(1, str.length);
    str = lTrim(str);    //遞歸調用
  }
  return str;
}
//去掉字串右邊的空格
function rTrim(str)
{
  var iLength;
  
  iLength = str.length;
  if (str.charAt(iLength - 1) == " ")
  {
    //如果字串右邊第一個字符為空格
    str = str.slice(0, iLength - 1);//將空格從字串中去掉
    //這一句也可改成 str = str.substring(0, iLength - 1);
    str = rTrim(str);    //遞歸調用
  }
  return str;
}
//去掉字串兩邊的空格
function trim(str)
{
  return lTrim(rTrim(str));
}
//==========================================



// 將換行用<br>替換
function sck(s)
{
	return s.replace(/\n/g,"[br]");
	//s=s.replace(chr(13)&chr(23),"<br />");	
	//return s;
}

// 取得document中第一個表單的特定欄位值
// evl(str):處理字串，定決定字串內容為何並加以執行的函式
// 例如evl('7*5')，雖然是字串，但evl()函式會判斷它實際是要執行7x5
function f(obj)
{
	return trim(eval("document.forms[0]."+obj+".value"));
	//return trim($(obj).value);
}

// 將焦點指到document中第一個表單的特定欄位
function setf(obj)
{
	return eval("document.forms[0]."+obj+".focus();");
}

// 判斷某元素目前是隱藏($(obj).style.display="none")還是顯示($(obj).style.display="")
// 點擊時若隱藏時設為顯示，若顯示時設為隱藏
// file.asp:
// <div id="logintool" onclick="show('loginlist')">
// 管理登錄
// </div>
function show(obj)
{
	var s=$(obj).style;
	s.display=s.display=="none" ? "" : "none";
}


//function echo(obj,html)
//{
//		$(obj).innerHTML=html;
//}















//***********************************************************************************************************
// XMLHTTP & XMLHttpRequest 的請求與回應
//***********************************************************************************************************

// =========================================
// 建立一個瀏覽器的XMLHTTP類實體物件
// =========================================
function createxmlhttp()
{
	//for IE的XMLHTTP
	var xmlhttp=false;
	try	{
  		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 	} 
	catch (e) {
  		try {
   			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  		} 
		catch (e) {
   			xmlhttp = false;
 		}
 	}

	//for Mozilla、Safari...的XMLHttpRequest	
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  		xmlhttp = new XMLHttpRequest();
			if (xmlhttp.overrideMimeType) {//設置MiME類別，防止某些瀏覽器的mime-type表頭(header)不含text/xml類型時無法處理XML
				xmlhttp.overrideMimeType('text/xml');
			}
	}
	return xmlhttp;	
}


// =========================================
// HTTP請求的方式為GET時，XMLHTTP元件的請求與回應
// file.asp:例 <a href="javascript:void(0)" onclick="getdata('file.asp?action=add','echomsg','contentdata');">書寫留言</a>
// =========================================
function getdata(url,obj1,obj2)
{
	//alert('i got it');
		
		var xmlhttp=createxmlhttp();
		if(!xmlhttp)
		{
			alert("你的瀏覽器不支持XMLHTTP！！");
			return;
		}
		xmlhttp.onreadystatechange=requestdata; //用來處理server回應的JavaScript函數的名字
		xmlhttp.open("GET",url,true); //調用HTTP請求的open()方法去發出HTTP請求
		/*
		第一個參數=是HTTP請求的方式——GET、POST、HEAD或者任何其它你想使用的伺服器支持的方式。方式的名稱要大寫，否則有些瀏覽器（如Firefox）可能就不會處理請求。
		第二個參數=是你所請求頁面的URL。 
		第三個參數=是用來設置請求是否為異步的。如果是TRUE，則在伺服器尚未返迴回應的時候，JavaScript的函數會繼續執行。這也就是AJAX中的A的含義。
		*/
		xmlhttp.send(null); //調用HTTP請求的send()方法去傳遞查詢字串的參數(如同用url的”?”後所接的傳遞查詢參數)
		// =========================================
		// 處理server回應的JavaScript程式
		// =========================================
		function requestdata()
		{			
				fopen(obj1); //呼叫fopen()自定函式讓特定元素內容顯示

				echo(obj1,"正在讀取資料，請稍等......");//呼叫echo()自定函式使用DOM元素的innerHTML屬性為特定元素指定內容
				if(xmlhttp.readyState==4) //檢查請求的狀態，如果狀態的值為4，那麼就意味著全部的伺服器回應都已接受完畢，你可以繼續處理
				{
					if(xmlhttp.status==200) //檢查HTTP伺服器回應的情況，代碼為200時表示OK，可以自己決定對伺服器發送給你的數據作什麼樣的處理了
					{	
						// 對伺服器發送給你的數據作處理
						if(obj1!=obj2){fclose(obj1);}; //呼叫fclose()自定函式讓特定元素內容隱藏
						echo(obj2,xmlhttp.responseText);
						//alert(xmlhttp.responseText);						
					}
				}			
		}

}

// =========================================
// HTTP請求的方式為POST時，XMLHTTP元件的請求與回應
// =========================================
function postdata(url,obj,data)
{
		//alert('url=' + url);
		//alert('obj=' + obj);
		//alert('data=' + data);
		var xmlhttp=createxmlhttp();
		if(!xmlhttp)
		{
			alert("你的瀏覽器不支持XMLHTTP！！");
			return;
		}
		xmlhttp.open("POST", url, true);
		xmlhttp.onreadystatechange=requestdata;
		xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		xmlhttp.send(data);
		
		// =========================================
		// 處理server回應的JavaScript程式
		// =========================================
		function requestdata()
		{
			fopen(obj);
			echo(obj,"正在傳送資料，請稍等......");
			//alert(xmlhttp.readyState);
			if(xmlhttp.readyState==4)
			{
				//alert(xmlhttp.status);
				if(xmlhttp.status==200)
				{
					echo(obj,xmlhttp.responseText);
				}
			}
		}

}
//***********************************************************************************************************

