﻿var domReadyEvent =
{
    name: "domReadyEvent",
    /* Array of DOMContentLoaded event handlers.*/
    events: {},
    domReadyID: 1,
    bDone: false,
    DOMContentLoadedCustom: null,

    /* Function that adds DOMContentLoaded listeners to the array.*/
    add: function (handler) {
        /* Assign each event handler a unique ID. If the handler has an ID, it has already been added to the events object or been run.*/
        if (!handler.$$domReadyID) {
            handler.$$domReadyID = this.domReadyID++;

            /* If the DOMContentLoaded event has happened, run the function. */
            if (this.bDone) {
                handler();
            }

            /* store the event handler in the hash table */
            this.events[handler.$$domReadyID] = handler;
        }
    },

    remove: function (handler) {
        /* Delete the event handler from the hash table */
        if (handler.$$domReadyID) {
            delete this.events[handler.$$domReadyID];
        }
    },

    /* Function to process the DOMContentLoaded events array. */
    run: function () {
        /* quit if this function has already been called */
        if (this.bDone) {
            return;
        }

        /* Flag this function so we don't do the same thing twice */
        this.bDone = true;

        /* iterates through array of registered functions */
        for (var i in this.events) {
            this.events[i]();
        }
    },

    schedule: function () {
        /* Quit if the init function has already been called*/
        if (this.bDone) {
            return;
        }

        /* First, check for Safari or KHTML.*/
        if (/KHTML|WebKit/i.test(navigator.userAgent)) {
            if (/loaded|complete/.test(document.readyState)) {
                this.run();
            }
            else {
                /* Not ready yet, wait a little more.*/
                setTimeout(this.name + ".schedule()", 100);
            }
        }
        else if (document.getElementById("__ie_onload")) {
            /* Second, check for IE.*/
            return true;
        }

        /* Check for custom developer provided function.*/
        if (typeof this.DOMContentLoadedCustom === "function") {
            /* if DOM methods are supported, and the body element exists (using a double-check
            including document.body, for the benefit of older moz builds [eg ns7.1] in which
            getElementsByTagName('body')[0] is undefined, unless this script is in the body section) */
            if (typeof document.getElementsByTagName !== 'undefined' && (document.getElementsByTagName('body')[0] !== null || document.body !== null)) {
                /* Call custom function. */
                if (this.DOMContentLoadedCustom()) {
                    this.run();
                }
                else {
                    /* Not ready yet, wait a little more. */
                    setTimeout(this.name + ".schedule()", 250);
                }
            }
        }
        return true;
    },

    init: function () {
        /* If addEventListener supports the DOMContentLoaded event.*/
        if (document.addEventListener) {
            document.addEventListener("DOMContentLoaded", function () { domReadyEvent.run(); }, false);
        }

        /* Schedule to run the init function.*/
        setTimeout("domReadyEvent.schedule()", 100);

        function run() {
            domReadyEvent.run();
        }

        /* Just in case window.onload happens first, add it to onload using an available method.*/
        if (typeof (addEvent) !== "undefined") {
            addEvent(window, "load", run);
        }
        else if (document.addEventListener) {
            document.addEventListener("load", run, false);
        }
        else if (typeof (window.onload) === "function") {
            var oldonload = window.onload;
            window.onload = function () {
                domReadyEvent.run();
                // comment this out if it breaks ie8 problems when there are delays in the speed
                //of rendering the page. poss to sort this if you html load not js.
                //if (typeof (oldonload) === "function") { oldonload(); }
            };
        }
        else {
            window.onload = run;
        }

        /* for Internet Explorer */
        /*@cc_on
        @if (@_win32 || @_win64)
        document.write("<script id=__ie_onload defer src=\"//:\"><\/script>");
        var script = document.getElementById("__ie_onload");
        script.onreadystatechange = function () {
            if (this.readyState == "complete") {
                domReadyEvent.run(); // call the onload handler
            }
        };
        @end
        @*/
    }
};

(function () {
function ddl(id) {
    this.id = id;
}
ddl.prototype = {
    ddl: function () {
        return document.getElementById(this.id);
    },
    ddltext: function () {
        return this.ddl().options[this.ddl().selectedIndex].text;
    },
    ddlvalue: function () {
        return this.ddl().options[this.ddl().selectedIndex].value;
    },
    ddlchange: function () {
        return this.ddl().options[this.ddl().selectedIndex].change;
    }
}
    function b(value) {
        this.array = value.split("/");
    }
    b.prototype = {
        no: function (value) {
            return this.array[value];

        },
        all: function () {
            return this.array;
        }

    }
    this.makeObj = new ddl("langElement");
    this.dropDown = new ddl("language");
    this.changeText = new ddl("changeText");
    this.b = new b(window.location.href);

    var addLang = function () {
        addrest(this.dropDown.ddl(), "en", "English", "Change languages: ");
        addrest(this.dropDown.ddl(), "zh", "中文", "轉換語言: ");

    },

setLanguage = function (langObj) {
    var langObj = langObj;
    var Hval = this.b.no(3);
    return (function () {
        var lang = this.value;
        if (Hval === "news") {
            cookieBake(lang, "", "");
            correctLink();
        }
        else {
            cookieBake(lang, "", "");
            lang = "/" + lang;
            PageForward(lang);
        }
    });
},



 PageForward = function (lang) {
     var e = "";
     for (i = 4; i <= this.b.array.length - 1; i++) {
         e = e + "/" + this.b.no(i);
     }

     var d = this.b.no(0) + "//" + this.b.no(2);
     var c = d + lang + e;
     window.location.replace(c);
 },

 createElm = function (lang) {

     var obj = this.makeObj.ddl();
     var element = document.createElement("select");
     var change = document.createElement("span");
     element.setAttribute("id", "language");
     //    element.setAttribute("class", "fancy");
     element.onchange = setLanguage(this.dropDown);
     change.setAttribute("id", "changeText");
     obj.appendChild(change);
     obj.appendChild(element);
     addLang();

     for (i = 0; i <= this.dropDown.ddl().options.length - 1; i++) {
         if (lang == this.dropDown.ddl().options[i].value) {
             this.dropDown.ddl().options[i].selected = true;
             this.changeText.ddl().innerHTML = this.dropDown.ddl().options[i].change;
         }
     }
 },

 addrest = function (selectbox, value, text, change) {
     var optn = document.createElement("OPTION");
     optn.text = text;
     optn.value = value;
     optn.change = change;
     selectbox.options.add(optn);


 },
  cookieCheck = function() {
    var cookieValue = document.cookie;
    var cookieStart = cookieValue.indexOf("YamasaBJPcookie=");
    if (cookieStart == -1) {
        cookieStart = cookieValue.indexOf(" YamasaBJPcookie=");
    }
    if (cookieStart == -1) {
        cookieValue = null;
    }
    else {
        cookieStart = cookieValue.indexOf("=", cookieStart) + 1;
        cookieEnd = cookieValue.indexOf(";", cookieStart);

        if (cookieEnd == -1) {
            cookieEnd = cookieValue.length;
        }
        cookieValue = unescape(cookieValue.substring(cookieStart, cookieEnd));
    }
    return cookieValue;
},

 cookieBake = function (cookieValue, cookiePath, cookieExpires, b) {
     cookieEat(b);

     cookieValue = escape(cookieValue);
     if (cookieExpires == "") {
         var nowDate = new Date();
         nowDate.setMonth(nowDate.getMonth() + 6);
         cookieExpires = nowDate.toGMTString();
     }
     if (cookiePath == "") {
         cookiePath = ";Path=/" + cookiePath;
     }
     document.cookie = "YamasaBJPcookie=" + cookieValue +
";expires=" + cookieExpires + cookiePath;
 },

cookieEat = function (b) {
    var cookieValue = document.cookie;
    var cookieStart = cookieValue.indexOf("YamasaBJPcookie=");
    var cookieEnd = cookieValue.indexOf(";", 0);
    if (cookieStart == -1) {
        cookieStart = cookieValue.indexOf(" YamasaBJPcookie=");
    }
    if (cookieStart != -1) {

        if (b != "news") {
            document.cookie = "YamasaBJPcookie=" + this.b.no(3) +
";expires=Thu, 01-Jan-1970 00:00:01 GMT;Path=/;";
        }
    }
};
    function dropAdd() {
        var lang = "";
        var Ccheck = cookieCheck();
        var Hcheck = this.b.no(3);
        if (Ccheck === null) {
            if (Hcheck === "news") {
                cookieBake("en", "", "", this.b.no(3));
                lang = "en";
            }
            else {
                cookieBake(Hcheck, "", "", this.b.no(3));
                lang = Hcheck;
            }

        }
        else {
            if ((Hcheck !== Ccheck)) {
                if (Hcheck !== "news") {
                    cookieBake(Hcheck, "", "", this.b.no(3));
                    lang = Hcheck;
                }
                else {
                    lang = Ccheck;
                }
            }
            else {
                lang = Ccheck;
            }
        }

        //if a this.dropDown is NOT needed in the news page uncomment here

        if (Hcheck === "news") {
            correctLink(lang);
        }
        else {
            createElm(lang);
        }
    }
    var domReady = function (handler) { domReadyEvent.add(handler); };
    domReadyEvent.init();
    
    /* Create ImageFlow instances when the DOM structure has been loaded */
    domReady(function () {
        dropAdd();
        if (typeof (postPic) === "function") { postPic(); };
    });
})();
 
