﻿// JScript File
/*
Args.Xml        =   path of XML file to read
Args.Expres     =   array object
                    - Expres[0] = Tag's name to search
                    - Expres[1] = Attribute's name to search
                    - Expres[2] = Attribute's value to search
Args.Language   =   language to display
Args.DupCount   =   quantity of form, only for dynamic input form such as educate,experience and etc
Args.DupStart   =   start value for use in ID for Dup, dynamic form type start with '1' such as educate,experience and etc
*/

function AjaxChangeLanguage(Args)
{
    var xmlDoc;
    var FileName = Args.Xml;// = "XML/xml_language_text.xml";
    var Expression;
    var El;
    var Lang;// = Args.Language;
    var i;
    
    var isIE = true;
    var bs = navigator.userAgent;
    isIE = (bs.indexOf("MSIE")!=-1)?true:false;
    
    if (window.ActiveXObject)
    {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    }
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation.createDocument)
    {
        xmlDoc=document.implementation.createDocument("","",null);
    }
    else
    {
        alert('Your browser cannot handle this script');
    }
    
    try{
        xmlDoc.async=false;
        xmlDoc.load(FileName);
    }catch(ex){
        //
    }

    var evaluateXPath = function(aNode, aExpr)
    {
      var xpe = new XPathEvaluator();
      var nsResolver = xpe.createNSResolver(aNode.ownerDocument == null?aNode.documentElement:aNode.ownerDocument.documentElement);
      var result = xpe.evaluate(aExpr, aNode, nsResolver, 0, null);
      var found = [];
      var res;
      while (res = result.iterateNext())
        found.push(res);
      return found;
    }
    
    var Parsing = function(){
        if(Args != null && Args.Expres.length == 3)
        {
            Expression = "//"+Args.Expres[0]+"[@"+Args.Expres[1]+"='"+Args.Expres[2]+"']";
        }else{
            Expression = null;
        }
        
        if(Expression != null)
        {
            if(document.implementation.createDocument)
            {
                xmlDoc = evaluateXPath(xmlDoc,Expression)[0];
            }else{
                xmlDoc = xmlDoc.selectNodes(Expression)[0];
            }
        }
        
        var notWhitespace = /\S/
        for (i=0;i<xmlDoc.childNodes.length;i++)
        {
            if ((xmlDoc.childNodes[i].nodeType == 3)&&(!notWhitespace.test(xmlDoc.childNodes[i].nodeValue)))
            {
                // that is, if it's a whitespace text node
                xmlDoc.removeChild(xmlDoc.childNodes[i]);
                i--;
            }
        }
    }
    
    var _ChangeLanguage = function()
    {
        if(Args != null && Args.Expres[0] != "TABLE")
        {
            Parsing();
        }
        
        if(xmlDoc.childNodes.length > 0){
            for(i=0;i<xmlDoc.childNodes.length;i++){
                if(Args.DupCount == ""){
                    El = document.getElementById(xmlDoc.childNodes[i].getAttribute("ID"));
                    
                    if(((El == "[object]" || El == "[object HTMLElement]") && El.tagName == "SPAN") || (El == "[object]" && El.tagName == "DIV") || El == "[object HTMLDivElement]" || El == "[object HTMLSpanElement]" || (El != null && El.tagName == "A")){
                        if(isIE){
                            if(El.id.indexOf("_typeValid") == -1 || (El.innerText != null && El.innerText != "")){
                                El.innerText = (Lang == null || Lang == "TH")?xmlDoc.childNodes[i].getAttribute("THAI"):xmlDoc.childNodes[i].getAttribute("ENG");
                            }
                        }else{
                            if(El.id.indexOf("_typeValid") == -1 || (El.textContent != null && El.textContent != "")){
                                El.textContent = (Lang == null || Lang == "TH")?xmlDoc.childNodes[i].getAttribute("THAI"):xmlDoc.childNodes[i].getAttribute("ENG");
                            }
                        }
                    }else if((El == "[object]" && El.tagName == "INPUT") || El == "[object HTMLInputElement]"){
                        El.value = (Lang == null || Lang == "TH")?xmlDoc.childNodes[i].getAttribute("THAI"):xmlDoc.childNodes[i].getAttribute("ENG");
                    }
                }else{
                    var iDup;
                    var xmlDoc1 = xmlDoc.childNodes[i];
                    
                    for(iDup=0;iDup<Args.DupCount;iDup++){
                        El = document.getElementById(xmlDoc1.getAttribute("ID") + (parseInt(iDup,10)+parseInt(Args.DupStart,10)));
                        
                        if(El==null){
                            El = document.getElementById(xmlDoc1.getAttribute("ID").replace("_x_",(parseInt(iDup,10)+parseInt(Args.DupStart,10))+"_"));
                        }
                        
                        if(El==null){
                            El = document.getElementById(xmlDoc1.getAttribute("ID"));
                        }
                        
                        if((El == "[object]" && El.tagName == "SPAN") || (El == "[object]" && El.tagName == "DIV") || El == "[object HTMLDivElement]" || El == "[object HTMLSpanElement]" || (El != null && El.tagName == "A")){
                            if(isIE){
                                if(El.id.indexOf("_typeValid") == -1 || (El.innerText != null && El.innerText != "")){
                                    El.innerText = (Lang == null || Lang == "TH")?xmlDoc1.getAttribute("THAI"):xmlDoc1.getAttribute("ENG");
                                }
                            }else{
                                if(El.id.indexOf("_typeValid") == -1 || (El.textContent != null && El.textContent != "")){
                                    El.textContent = (Lang == null || Lang == "TH")?xmlDoc1.getAttribute("THAI"):xmlDoc1.getAttribute("ENG");
                                }
                            }
                        }else if((El == "[object]" && El.tagName == "INPUT") || El == "[object HTMLInputElement]"){
                            El.value = (Lang == null || Lang == "TH")?xmlDoc1.getAttribute("THAI"):xmlDoc1.getAttribute("ENG");
                        }
                    }
                }
            }
        }
    }
	
	xmlDoc = xmlDoc.getElementsByTagName("TABLE")[0];
    if(xmlDoc != null){
        //Lang = readCookie("Lang");
        //if((Lang != null && Lang != Args.Language) || Lang == null){
            Lang = Args.Language;
            //createCookie("Lang",Lang,1);
            _ChangeLanguage();
        //}
    }else{
        //fix for chrome
	    var xmlhttp = new window.XMLHttpRequest();
        xmlhttp.open("GET", FileName, false);
        xmlhttp.send(null);
        xmlDoc = xmlhttp.responseXML.documentElement;
        
	    if(xmlDoc != null){
            Lang = Args.Language;
            try{
                _ChangeLanguage();
            }catch(ex){
                //alert(ex.message)
            }
	    }
	}
}

function ChangeLanguage(Page,Lang,Dup,Start){
    /*
    Page    =   Page's name
    Lang    =   Language to change
    Dup     =   quantity of form, use only for dynamic input form such as educate,experience and etc
    Start   =   start value for use in ID for Dup, dynamic form type start with '1' such as educate,experience and etc
    */
    
    Dup = parseInt(Dup,10);
    Dup = (Dup != null && !isNaN(Dup))?Dup:"";
    Start = (Start != null && !isNaN(Start))?Start:"1";
    
    AjaxChangeLanguage({Xml:'XML/xml_language_text.xml',Expres:['PAGE','NAME',Page],Language:Lang,DupCount:Dup,DupStart:Start});
}

