﻿var ignoreBrowser = false;
var ignoreFlash = false;
var ignoreJava = false;
var ignoreTerraExplorer = false;

var onceFlash = true;
var onceJava = true;
var onceTerraExplorer = true;

var lang = "en";
var hasDedicatedFlight = false;
var localizationPath = new String();
var qs = new jsQueryString();

var errorXml = new cXmlDOM();
var pageXml = new cXmlDOM();

var imageList = new Array();

/// ***** INITIALIZATION
if (qs.Get("l") != undefined)
    lang = qs.Get("l");

if (qs.Get("f") != undefined)
    hasDedicatedFlight = true;

localizationPath = "localization/" + lang + "/";
errorXml.Load(GetLocalizedResource("xml/error.xml"));
pageXml.Load(GetLocalizedResource("xml/page.xml"));

PreloadImages();

/// ***** END INITIALIZATION

function ApplyLang(str)
{
    return str.replace("{0}", lang);
}

function DoEnter()
{
    var isValid = IsValid();
    
    switch (isValid)
    {
        case -1:
            SetError("ie");
            break;
        case -2:
            SetError("terraexplorer");
            break;
        case -3:
            SetError("flash");
            break;
        case -4:
            SetError("java");
            break;
        case -5:
            SetError("system");
            break;
        case -6:
            SetError("flash_repeat");
            break;
        case -7:
            SetError("terraexplorer_repeat");
            break;
        default:
            if (lang == "zh")
                window.location = "/viewerx/viewer.htm" + location.search;
            else
                window.location = "/viewer/viewer.htm" + location.search;
                
            break;
    }
}

function Enter()
{
    SetError("check");
    setTimeout("DoEnter()", 500);
}

function GetLocalizedResource(path)
{
    return localizationPath + path;
}

function Init()
{
    document.getElementById("main").style.backgroundImage = "url(" + pageXml.SelectNodes("/document/background/text()")[0].nodeValue + ")";
    document.getElementById("copyright").innerHTML = pageXml.SelectNodes("/document/stringList/string[@id='copyright']/text()")[0].nodeValue;
    document.getElementById("address").innerHTML = pageXml.SelectNodes("/document/stringList/string[@id='address']/text()")[0].nodeValue;

    InitSection("download");
    InitSection("help");
    SetContent("front");
    
    if (lang == "zh")
        document.getElementById("content_body").style.fontSize = "16px";
        
    if (hasDedicatedFlight)
        Enter();
    else
    {
        var so = new SWFObject("video/video.swf", "video", "275", "235", "8");

        so.addParam("menu", "false");
        so.addParam("quality", "high");
        so.addParam("wmode", "transparent");
        so.write("movie");
    }
}

function InitButton(id)
{
    document.getElementById(id).src = imageList[id].src;
    document.getElementById(id).onmouseover = ImageOver;
    document.getElementById(id).onmouseout = ImageOut;
}

function InitSection(id)
{
    document.getElementById(id).src = imageList[id].src;
    document.getElementById(id).onmouseover = ImageOver;
    document.getElementById(id).onmouseout = ImageOut;
    document.getElementById(id).onclick = ImageClick;
}

function IsValid()
{
    if (!ignoreBrowser)
    {
        var evalBrowser = EvalBrowser();
        
        if (evalBrowser == -1)
            return -1;
        else if (evalBrowser == -2)
            return -5;
    }
    
    ignoreBrowser = true;
   
    if (!ignoreFlash && (EvalFlash() < 0))
    {
        if (onceFlash)
        {
            onceFlash = false;
            
            return -3;
        }
        else
            onceFlash = true;
        
        return -6;
    }
    
    ignoreFlash = true;
    
    if (!ignoreTerraExplorer && (EvalTerraExplorer() < 0))
    {
        if (onceTerraExplorer)
        {
            onceTerraExplorer = false;
            
            return -2;
        }
        else
            onceTerraExplorer = true;
       
        return -7;
    }
    
    window.focus();
    ignoreTerraExplorer = true;
    
    if (!ignoreJava && onceJava && (EvalJava() < 0))
    {
        onceJava = false;
        ignoreJava = true;
        
        return -4;        
    }

    return 0;
}

function ImageClick()
{
    SetContent(this.id);
}

function ImageOut()
{
    this.src = imageList[String("{0}").replace("{0}", this.id)].src;
}

function ImageOver()
{
    this.src = imageList[String("{0}_over").replace("{0}", this.id)].src;
}

function PreloadImages()
{
    var nodes = pageXml.SelectNodes("/document/imageList/image");

    for (var i = 0; i < nodes.length; i++)
    {
        imageList[nodes[i].getAttribute("id")] = new Image();
    
        for (var j = 0; j < nodes[i].childNodes.length; j++)
        {
            var node = nodes[i].childNodes[j];
            
            switch (node.nodeName)
            {
                case "alt":
                    if (node.childNodes.length > 0)
                        imageList[nodes[i].getAttribute("id")].alt = node.childNodes[0].nodeValue;
                        
                    break;
                case "src":
                    if (node.childNodes.length > 0)
                        imageList[nodes[i].getAttribute("id")].src = node.childNodes[0].nodeValue;
                        
                    break;
                default:
                    break;
            }
        }
    }
}

function SetContent(id, reader)
{
    var node;

    if (reader == null)
        reader = pageXml;
    
    node = reader.SelectNodes(String("/document/stringList/string[@id='{0}']/text()").replace("{0}", id + "_title"));

    if (node.length > 0)
        document.getElementById("content_title").innerHTML = node[0].nodeValue;
    else
        document.getElementById("content_title").innerHTML = "";

    node = reader.SelectNodes(String("/document/stringList/string[@id='{0}']/text()").replace("{0}", id + "_body"));
    
    if (node.length > 0)
        document.getElementById("content_body").innerHTML = node[0].nodeValue;
    else
        document.getElementById("content_body").innerHTML = "";
    
    node = reader.SelectNodes(String("/document/stringList/string[@id='{0}']/text()").replace("{0}", id + "_button_area"));
        
    if (node.length > 0)
        document.getElementById("content_button_area").innerHTML = node[0].nodeValue;
    else
        document.getElementById("content_button_area").innerHTML = "";
    
    node = reader.SelectNodes(String("/document/stringList/string[@id='{0}']/text()").replace("{0}", id + "_code"));

    if (node.length > 0)
        eval(node[0].nodeValue);
}

function SetError(id)
{
    SetContent(id, errorXml);
}

window.onload = Init;

qs = null;

