﻿//*******************************************************//
//  程式代碼: Common.js                                  //
//  程式名稱: 共用javascript                             //
//  撰寫日期: 2009.11.09                                 //
//  撰寫人員: Gordon                                     //
//*******************************************************//
//  修改日期:                                            //
//  修改人員:                                            //
//*******************************************************//


/********************
    組合xml 和xslt
*********************/
function CreateHTML(xml,xsltFile,target,funName){
    var strXML = xml;
    if(strXML =="" || strXML == null){
        strXML ="<row/>";
    }
    
    var xmlDocTest = getXmlDom();
    
    if(!xmlDocTest)
    {
        CreateHTML2(xml,xsltFile,target,funName);
        return;
    }
    
    //取得後臺資料
    var xmlDoc = getXmlDom();
    xmlDoc.async = false;
    if(!xmlDoc.loadXML(strXML)){
        alert("(" + funName + ")" + "xml ERROR !!\n" + strXML);
        return;
    }
  
    // 取得樣式XSLT
    var xsl = getXmlDom();
    xsl.async = false;
    
   
    if(!xsl.load(xsltFile)){
        alert("(" + funName + ")" + xsltFile + " ERROR!!");
        return;  
    }

    // XSL transform
    try{
        strHTML= xmlDoc.transformNode(xsl);
        //document.write("<textarea>" + xmlDoc.xml + "</textarea>")
        document.getElementById(target).innerHTML = strHTML;   
        
    }
    catch(e){
      alert(e.message);
    }
}

/********************
    生成XMLDOM
*********************/
function getXmlDom(){
  try {
    xmlDom = new ActiveXObject("Msxml2.XMLDOM");
  } catch (e) {
    try {
      xmlDom = new ActiveXObject("Microsoft.XMLDOM");
    } catch (e2) {
      xmlDom = false;
    }
  }
  return xmlDom;
}  

function CreateHTML2(xml,xsltFile,target,funName){
    var strXML = xml;
    if(strXML =="" || strXML == null){
        strXML ="<row/>";
    }
    
    var objDOMParser = new DOMParser(); 
    var xml = objDOMParser.parseFromString(strXML, "text/xml");
    xml.async = false;
    
    xsl = document.implementation.createDocument("","",null);    
    try
    {
        xsl.async=false;
        xsl.load(xsltFile);
    }
    catch(e)
    {
        alert(e.message);
    }
    
    var oProcessor = new XSLTProcessor()
    oProcessor.importStylesheet(xsl);

    var oResultDom = oProcessor.transformToDocument(xml);
    var serializer = new XMLSerializer();
    
    document.getElementById(target).innerHTML = serializer.serializeToString(oResultDom);

}

/********************
   左選單開合Script
*********************/
var pretd;
var flag=0;
var OpenID;

function ShowHide(what){

    // 若物件為隱形則顯現
    if (what.style.display=="none")
    {
        what.style.display="";
        OpenID = what;
    }
    else  // 若物件為顯現則隱形
    {    
        what.style.display="none";
    }
}
  
function changeBC()	{

    var eSrc = window.event.srcElement;
    var td = window.event.srcElement;

    if(flag==0){
	    pretd = td;
        flag = 1;
    }
    
    pretd.style.background = td.style.background;
    //td.style.background="#FFEFD7"
    pretd=td;	
}

function closeOtherMenu(what)
{
    if(OpenID!=null && OpenID!=what)
    {
        OpenID.style.display="none";
    }
}

function setMenuReloadState(sID)
{
    if(document.getElementById("sub" + sID) != null)
    {
        if(document.getElementById("sub" + sID).style.display=="none")
        {
            Main.setMenuReloadState("");
        }
        else
        {
            Main.setMenuReloadState(sID);
        }
    }
}

function MenuReloadState()
{
    var MenuOpenID = Main.getMenuReloadState();

    if(MenuOpenID.value !="")
    {
        document.getElementById(MenuOpenID.value).click();
    }
}

/********************************************
   挑選選單(DIV) - 實體DIV放在 Main.Master
*********************************************/
function OpenChoiceDIV(){ 
    document.getElementById ('ChoicePopupDiv').style.visibility='visible';
    document.getElementById ('ChoicePopupDiv').style.display='';
    document.getElementById ('ChoicePopupDiv').style.top= Math.round ((document.documentElement.clientHeight/2)+ document.documentElement.scrollTop)-200 + 'px';
    document.getElementById ('ChoicePopupDiv').style.left='450px';
        
    document.getElementById ('MaskedDiv').style.display='';
    document.getElementById ('MaskedDiv').style.visibility='visible';
    document.getElementById ('MaskedDiv').style.top='0px';
    document.getElementById ('MaskedDiv').style.left='0px';
    document.getElementById ('MaskedDiv').style.width=  Math.round(document.documentElement.clientWidth) + 'px';
    document.getElementById ('MaskedDiv').style.height= Math.round(document.documentElement.clientHeight + document.documentElement.scrollTop +200) + 'px';
}

function CloseChoiceDIV(){
    document.getElementById ('MaskedDiv').style.display='none';
    document.getElementById ('ChoicePopupDiv').style.display='none';
}

/********************************************
   挑選選單(DIV)2 - 實體DIV放在 Main.Master
*********************************************/
function OpenChoiceDIV2(){ 
    document.getElementById ('ChoicePopupDiv2').style.visibility='visible';
    document.getElementById ('ChoicePopupDiv2').style.display='';
    document.getElementById ('ChoicePopupDiv2').style.top= Math.round ((document.documentElement.clientHeight/2)+ document.documentElement.scrollTop)-200 + 'px';
    document.getElementById ('ChoicePopupDiv2').style.left='450px';
        
    document.getElementById ('MaskedDiv2').style.display='';
    document.getElementById ('MaskedDiv2').style.visibility='visible';
    document.getElementById ('MaskedDiv2').style.top='0px';
    document.getElementById ('MaskedDiv2').style.left='0px';
    document.getElementById ('MaskedDiv2').style.width=  Math.round(document.documentElement.clientWidth) + 'px';
    document.getElementById ('MaskedDiv2').style.height= Math.round(document.documentElement.clientHeight + document.documentElement.scrollTop +400) + 'px';
}

function CloseChoiceDIV2(){
    document.getElementById ('MaskedDiv2').style.display='none';
    document.getElementById ('ChoicePopupDiv2').style.display='none';
}

/********************************************
   等待提示畫面 - 實體DIV放在 Main.Master
*********************************************/
function OpenWaitingDIV(){ 
    document.getElementById ('WaitingDiv').style.visibility='visible';
    document.getElementById ('WaitingDiv').style.display='';
    document.getElementById ('WaitingDiv').style.top= Math.round ((document.documentElement.clientHeight/2)+ document.documentElement.scrollTop)-100 + 'px';
    document.getElementById ('WaitingDiv').style.left='450px';
}

function CloseWaitingDIV(){
    document.getElementById ('WaitingDiv').style.display='none';
}


/********************************************
   檢查函式 - 空白,字串長度,字串內容
*********************************************/
function FunCheck_ISNULL(ObjectID){  //是否空白

    if(FunTrimStr(document.getElementById(ObjectID).value) == '')
    {
        return true;
    }
    else
    {
        return false;
    }
}

function FunisNumber(str) //數值检测
{
     if(str.length == 0)
        return false;
        
     for(i = 0; i < str.length; i++) {
        if(str.charAt(i) < "0" || str.charAt(i) > "9")
            return false;
     }
     
     return true;
}

function FunisNumberByObject(ObjectID) //數值检测
{
    var sValue = document.getElementById(ObjectID).value;
    
    return FunisNumber(sValue);
}

function FunisIllegalStr(str)  //字串合法性測試
{
    var sErrMsg ="";
    
    if(str.indexOf("\<script") != -1)
    {
        sErrMsg ="內容包含不合法字串"
    }
    
    return sErrMsg;
}

function FunisIllegalStrByObject(ObjectID)  //字串合法性測試
{
    var sValue = document.getElementById(ObjectID).value;
    
    return FunisIllegalStr(sValue);
}

function cleanXSS(str)  //清除XSS攻擊字串
{
    str = ReplaceAll(str,"<","&lt;");
    str = ReplaceAll(str,">","&gt;");

    str = ReplaceAll(str,"\\(","&#40;");
    str = ReplaceAll(str,"\\)","&#41;");

    str = ReplaceAll(str,"'","&#39;");

    str = ReplaceAll(str,"eval\\((.*)\\)","");
    str = ReplaceAll(str,"[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']","\"\"");   

    str = ReplaceAll(str,"script","");

    return str;
}

function FunTrimStr(str) {   //清除空白
    var start = -1,   
    end = str.length;   
    while (str.charCodeAt(--end) < 33);   
    while (str.charCodeAt(++start) < 33);   
    return str.slice(start, end + 1);   
};  

function ReplaceAll(strOrg,strFind,strReplace){  //替換全部指定字串
    var index = 0;
    while(strOrg.indexOf(strFind,index) != -1){
        strOrg = strOrg.replace(strFind,strReplace);
        index = strOrg.indexOf(strFind,index);
    }
    return strOrg
}

function FunCheckLen(str,len){  //檢查文字長度是否符合指定長度
    if(str.length == len)
    {
        return true;
    }
    else
    {
        return false;
    }
}

function FunCheckLenByObject(ObjectID,len){  //檢查文字長度是否符合指定長度
    var sValue = document.getElementById(ObjectID).value;
    
    return FunCheckLen(sValue,len);
}

function FunAlertAndFocus(str,ObjectID){    //顯示訊息與Focus
    alert(str);
    document.getElementById(ObjectID).focus();
}

/*****************
   網頁圖片切換
******************/
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.01
  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 && d.getElementById) x=d.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 WaitingMsg(OutputObjectName) { 
  var xml="<root/>";
  CreateHTML(xml, "../xslt/WaitingMsg.xslt", OutputObjectName, "WaitingMsg_Progress");
}


/*********************
   擷取物件值函式區
**********************/
//取網頁物件值(陣列 1-物件名稱 2-節點名稱 3-擷取物件型態)
function getPageObjValue(sCmdArray)
{
    var sResultXML = "";
    var sID;
    var sNodeName;
    var sType;
    var i;
    
    try
    {
        for(i =0;i<sCmdArray.length;i++)
        {
            sID = sCmdArray[i][0];
            sNodeName = sCmdArray[i][1];
            sType = sCmdArray[i][2];
            switch(sType)
            {
                case "getTextValue":
                    sResultXML += getTextValue(sID,sNodeName);
                    break;
                case "getSelectOptionID":
                    sResultXML += getSelectOptionID(sID,sNodeName);
                    break;
                case "getSelectOptionValue":
                    sResultXML += getSelectOptionValue(sID,sNodeName);
                    break;
                case "getCheckboxValue":
                    sResultXML += getCheckboxValue(sID,sNodeName);
                    break;
                case "getRadioValue":
                    sResultXML += getRadioValue(sID,sNodeName);
                    break;
            }
        }
    }
    catch(e)
    {
        var sErr = e;
    }
    
    return sResultXML
}

//Text
function getTextValue(sID,sNodeName)
{
    var Obj;
    var ObjValue;
    var sResultXML = "";

    //1.ByName
     Obj = document.getElementsByName(sID);
     if(Obj != null)
     {
        try
        {
            ObjValue = Obj[0].value;
            sResultXML = "<" + sNodeName + ">" + ObjValue + "</" + sNodeName + ">";
            return sResultXML;
        }
        catch(ex)
        {
        }
     }
    
    //2.ByID
    Obj = document.getElementById(sID);
     if(Obj != null)
     {
        try
        {
            ObjValue = Obj.value;
            sResultXML = "<" + sNodeName + ">" + ObjValue + "</" + sNodeName + ">";
            return sResultXML;
        }
        catch(ex)
        {
        }
     }
    
    return sResultXML;
}

//Select(Option ID)
function getSelectOptionID(sID,sNodeName)
{
    var Obj;
    var ObjID;
    var sResultXML = "";
    
    //1.ByName
     Obj = document.getElementsByName(sID);
     if(Obj[0] !=undefined)
     {
        try
        {
            ObjID = Obj[0][Obj[0].selectedIndex].id;
            sResultXML = "<" + sNodeName + ">" + ObjID + "</" + sNodeName + ">";
            return sResultXML;
        }
        catch(ex)
        {
        }
     }
    
    //2.ByID
    Obj = document.getElementById(sID);
     if(Obj != null)
     {
        try
        {
            ObjID = Obj[Obj.selectedIndex].id;
            sResultXML = "<" + sNodeName + ">" + ObjID + "</" + sNodeName + ">";
            return sResultXML;
        }
        catch(ex)
        {
        }
     }
    
    return sResultXML;
}

//Select(Option Value)
function getSelectOptionValue(sID,sNodeName)
{
    var Obj;
    var ObjValue;
    var sResultXML = "";

    //1.ByName
     Obj = document.getElementsByName(sID);
     if(Obj[0] !=null)
     {
        try{            
            ObjValue = Obj[0][Obj[0].selectedIndex].value;
            sResultXML = "<" + sNodeName + ">" + ObjValue + "</" + sNodeName + ">";
            return sResultXML;
        }
        catch(ex)
        {
        }
     }
    
    //2.ByID
    Obj = document.getElementById(sID);
     if(Obj != null)
     {
        try
        {
            ObjValue = Obj[Obj.selectedIndex].value;
            sResultXML = "<" + sNodeName + ">" + ObjValue + "</" + sNodeName + ">";
            return sResultXML;
        }
        catch(ex)
        {
        }
     }
    
    return sResultXML;
}

//Checkbox
function getCheckboxValue(sID,sNodeName)
{
    var Obj;
    var ObjValue;
    var sResultXML = "<" + sNodeName + ">0</" + sNodeName + ">";
    
    //1.ByName
     Obj = document.getElementsByName(sID);
     if(Obj[0]!=undefined)
     {
        try
        {
            if(Obj[0].checked == true)
            {
                sResultXML= "<" + sNodeName + ">1</" + sNodeName + ">";
            }
            else
            {
                sResultXML= "<" + sNodeName + ">0</" + sNodeName + ">";
            }
            return sResultXML;
        }
        catch(ex)
        {
        }
     }
    
    //2.ByID
    Obj = document.getElementById(sID);
     if(Obj !=null)
     {
        try
        {
            if(Obj.checked == true)
            {
                sResultXML= "<" + sNodeName + ">1</" + sNodeName + ">";
            }
            else
            {
                sResultXML= "<" + sNodeName + ">0</" + sNodeName + ">";
            }
            return sResultXML;
        }
        catch(ex)
        {
        }
     }
    
    return sResultXML;
}

//Radio
function getRadioValue(sID,sNodeName)
{
    var Obj;
    var ObjValue;
    var sResultXML = "";
    
    //1.ByName
     Obj = document.getElementsByName(sID);
     if(Obj[0]!=undefined)
     {
        try
        {
            for(i=0;i<Obj.length;i++)
            {
                if(Obj[i].checked)
                {
                    ObjValue = Obj[i].value;
                    sResultXML = "<" + sNodeName + ">" + ObjValue + "</" + sNodeName + ">";
                    return sResultXML;
                }
            }
        }
        catch(ex)
        {
        }
     }
    
    //2.ByID
    Obj = document.getElementById(sID);
     if(Obj!=null)
     {
        try
        {
            for(i=0;i<Obj.length;i++)
            {
                if(Obj.checked)
                {
                    ObjValue = Obj.value;
                    sResultXML = "<" + sNodeName + ">" + ObjValue + "</" + sNodeName + ">";
                    return sResultXML;
                }
            }
        }
        catch(ex)
        {
        }
     }
    
    return sResultXML;
}

//設定附加配備值
function SetCertNo(sResultArray,CarNo)
{
    //alert(sResultArray[0]);
    //alert(sResultArray[1]);
    if(sResultArray != null)
    {
        document.getElementById("mgcr_certno" + CarNo).value=sResultArray[0];
        document.getElementsByName("mgcp_name" + CarNo)[0].value=sResultArray[1];
    }
}

//設定附加配備值
function SetEq1(sResultArray,CarNo)
{
    //alert(sResultArray[0]);
    //alert(sResultArray[1]);
    if(sResultArray != null)
    {
        document.getElementById("eq1_code" + CarNo).value=sResultArray[0];
        document.getElementsByName("eq1_name" + CarNo)[0].value=sResultArray[1];
    }
}

//設定額外裝備值
function SetEq2(sResultArray,CarNo)
{
    //alert(sResultArray[0]);
    //alert(sResultArray[1]);
    if(sResultArray != null)
    {
        document.getElementById("eq2_code" + CarNo).value=sResultArray[0];
        document.getElementsByName("eq2_name" + CarNo)[0].value=sResultArray[1];
    }
}

//設定總容積值
function SetVol(sResultArray,CarNo)
{
    //alert(sResultArray[1]);
    if(sResultArray != null)
    {
        document.getElementById("CompData" + CarNo).value=sResultArray[0];
        document.getElementsByName("EffValue" + CarNo)[0].value=sResultArray[1];
    }
    
    //alert(document.getElementById("CompData" + CarNo).value);
}

/*
    區塊摺疊
*/

imgout=new Image(9,9);
imgin=new Image(9,9);
imgout.src="../images/w-.gif";
imgin.src="../images/w+.gif";

//this switches expand collapse icons
function filter(imagename,objectsrc){
	if (document.images){
		document.images[imagename].src=eval(objectsrc+".src");
	}
}

//show OR hide funtion depends on if element is shown or hidden
function shoh(id) { 
	
	if (document.getElementById) { // DOM3 = IE5, NS6
		if (document.getElementById(id).style.display == "none"){
			document.getElementById(id).style.display = 'block';
			filter(("img"+id),'imgin');			
		} else {
			filter(("img"+id),'imgout');
			document.getElementById(id).style.display = 'none';			
		}	
	} else { 
		if (document.layers) {	
			if (document.id.display == "none"){
				document.id.display = 'block';
				filter(("img"+id),'imgin');
			} else {
				filter(("img"+id),'imgout');	
				document.id.display = 'none';
			}
		} else {
			if (document.all.id.style.visibility == "none"){
				document.all.id.style.display = 'block';
			} else {
				filter(("img"+id),'imgout');
				document.all.id.style.display = 'none';
			}
		}
	}
}

function setTitleToSelectedText (select) {
    if (select.selectedIndex > -1) {
        select.title = select.options[select.selectedIndex].text;
    }
}

function PageCloseProcess()
{
    if((window.event.clientX<0) || (window.event.clientY<0))
    {
        Main.DeleteLoginInfo();
    }
}
