var rootPath;
var catalogCulture = 'en-US';
var isHTA;
var HOMEPOS = 285;
var VALUEADDPOS = 187;
var FULLPOS = 0;
var currentPos = HOMEPOS;
var currentPage = 0;
var currentLoc;
var cHistory = new Array();
var cH_ptr = 0;
var cH_max = 0;
var history_nav = 0;
var qsParm = new Array();

window.onload = Startup;
window.onresize = windowResize;
rootPath = window.location.toString();
rootPath = rootPath.substr(0, rootPath.lastIndexOf("/"));
isHTA = (rootPath.substr(0, 4) == "file");

function pagePrint() {
    try {
    if (document.contentFrame) {
        document.contentFrame.focus();
        document.contentFrame.print();
    } else {
        window.frames["contentFrame"].focus();
        window.frames["contentFrame"].print();
    }
    } catch (ex) { logError(ex); }
}

function Startup() {
    try {
    catalogCulture = getCultureCookie();
    var s = document.getElementById("catalogSelector");
    s.options.length = 0;
    for (i in catalogs) {
        s.options[s.options.length] = new Option(catalogs[i].description, catalogs[i].culture);
        if (catalogs[i].culture == catalogCulture) s.selectedIndex = s.options.length -1;
    }

    loadCatalog(catalogCulture);

    if (window.location.search) {
        try {
            qs();
            if (qsParm['culture']) {
                loadCatalog(qsParm['culture']);
            }
            gotoPage(qsParm['pageno']);
        }
        catch (ex)
            { navToPage("home"); }
    }
    else
        navToPage("home");
    
    setInterval('updateView()', 1000);
    } catch (ex) { logError(ex); }
}

function qs() {
    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i=0; i<parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0) {
            var key = parms[i].substring(0,pos);
            var val = parms[i].substring(pos+1);
            qsParm[key] = val;
        }
    }
} 


function Initialize() {
}

function displayNavBtns(view) {
    document.getElementById('btnFirstPage').style.display = view;
    document.getElementById('btnPrevPage').style.display = view;
    document.getElementById('btnNextPage').style.display = view;
    document.getElementById('btnLastPage').style.display = view;
}
function updateView() {
    try {
    var pageNo;
    var culture;
    var page;
    var loc = contentFrame.location.toString();
    if ((loc.indexOf(rootPath) >= 0) && (loc.indexOf("html") > 0)) {
        var rootNdx = loc.indexOf("html") + 5;
        var cultNdx = loc.indexOf("/", rootNdx);

        if (cultNdx >= 0) {
            culture = loc.substring(rootNdx, cultNdx);
            page = loc.substring(cultNdx + 1);
            if ((page != currentLoc)||(culture != catalogCulture)) {
                if (culture != catalogCulture) loadCatalog(culture);
                currentLoc = page;
                if (page.indexOf('.pdf') >= 0)
                    document.getElementById('toolbarPrint').style.display = 'none';
                else
                    document.getElementById('toolbarPrint').style.display = 'inline';
                document.getElementById("gotoPageTxt").value = '';
                pageNo = findInPages(page);
                currentPos = FULLPOS;
                displayNavBtns('none');
                document.getElementById("valueAdded").style.display = 'none';
                document.getElementById("valueAdded").innerHTML = "";
                //            document.getElementById("mainTable").style.display = 'none';
                if (pageNo >= 0) {
                    currentPage = pageNo;
                    document.getElementById("gotoPageTxt").value = currentPage.toString() + ' of ' + (catalogs[catalogCulture].pages.length - 1);

                    if ((page.indexOf('.pdf') >= 0) || (page.indexOf('8.htm') >= 0) || (page.indexOf('414.htm') >= 0) || (page.indexOf('415.htm') >= 0) || (page.indexOf('416.htm') >= 0) || (page.indexOf('0.htm') >= 0)) {
                        currentPos = VALUEADDPOS;
                        document.getElementById("valueAdded").style.display = 'inline';
                        renderValueAdded();
                    }
                    else {
                        currentPos = HOMEPOS;
                        defaultCover = page.substring(0, page.indexOf("."));
                    }
                    displayNavBtns('inline');
                }
                else {
                    currentPage = -1;
                    if (page.indexOf('home') >= 0) {
                        //                    document.getElementById("mainTable").style.display = 'inline';
                        currentPos = HOMEPOS;
                        displayNavBtns('inline');
                        defaultCover = 'cover';
                    }
                    else if (page.indexOf('qcon') >= 0) {
                        defaultCover = 'qcon';
                        currentPos = HOMEPOS;
                        displayNavBtns('inline');
                    }
                }
                resetCover();
                windowResize();
            }
        }
    }
    if (isHTA == true) {
        if (history_nav == 0) { //--on history navigation, we don't reset anything
            if (cHistory[cH_ptr] != loc) //--don't duplicate pages
            {
                cH_ptr++;
                cHistory[cH_ptr] = loc.toString();
                cH_max = cH_ptr;
            }
        }
        history_nav = 0;
    }
    } catch (ex) { logError(ex); }
}

function pageLoaded() {
    updateView();
}

function getMappedUSPage(cult, page) {
    if (page == -1) return page;
    if (cult == "ru") {
        for (var ndx = 0; ndx < catalogs[cult].us_mapping.length; ndx++) {
            if (catalogs[cult].us_mapping[ndx] == page) {
                return ndx;
            }
        }
        return -1;
    }
    else
        return page;
}

function getMappedCultPage(cult, page) {

    if (cult == "ru") {
        if ((page >= 0) && (page <= catalogs["en-US"].pages.length))
            return catalogs[cult].us_mapping[page];
        else
            return -1;
    }
    else if ((page >= 0) && (page <= catalogs[catalogCulture].pages.length))
        return page;
    else
        return -1;
}

function changeCatalog() {
    try {
        var page;
        var s = document.getElementById("catalogSelector");

        page = getMappedUSPage(catalogCulture, currentPage);

        loadCatalog(s.options[s.selectedIndex].value);

        page = getMappedCultPage(catalogCulture, page);

        if (page >= 0)
            gotoPage(page);
        else if (!IsNumeric(page))
            navToPage(page);
        else if (currentLoc.indexOf('qcon.htm') >= 0)
            navToPage('qcon');
        else
            navToPage('home');
    updateView();
    } catch (ex) { logError(ex); }
}

function renderValueAdded() {
    try {
        var vaElm = document.getElementById("valueAdded");
        vaElm.innerHTML = "<img alt=\"Value Added\" src=\"en-US/img/app/valueadded.gif\" /><br/>";

//        if (isHTA == true) {
//            vaElm.innerHTML += "<br/><div class='vaDiv' onclick=\"window.open('http://www.thecrosbygroup.com/html/default.htm?culture=" + catalogCulture + "&pageno=" + currentPage + "','mywindow','toolbar=yes,location=yes, directories=yes,status=yes,menubar=yes,scrollbars=yes,resizeable=yes');\"\"><table style='background-color:#FFFF00; color:black;width:100%;' cellpadding='3px'><tr><td align='center' valign='middle'>Print Current Internet Version</td></tr></table></div>";
//        }

        var i;
    var vaObj = catalogs[catalogCulture].pages[currentPage].valueadded;
    var count = vaObj.length;

    var warnArr = vaObj.filter(function(x) { return x.type == "warn"; });
    if (warnArr.length > 0) vaElm.innerHTML += "<br/>";
    for (i = 0; i < warnArr.length; i++) {
        vaElm.innerHTML += "<div class='vaDiv' onclick='gotoPage(" + warnArr[i].url + ");'><table style='background-color:#FFFF00; color:black;' cellpadding='3px'><tr><td><img alt='Warnings' src='en-US/img/pgs/yelwarn.gif'/></td><td><p align='right'><strong>SEE APPLICATION AND </strong><strong>WARNING INFORMATION</strong><br/><small><i>"+ warnArr[i].display +"</i></small></p></td></tr></table></div>";
    }
    var symbolArr = vaObj.filter(function(x) { return x.type == "symbol"; });
    if (symbolArr.length > 0) vaElm.innerHTML += "<br/>";
    for (i = 0; i < symbolArr.length; i++) {
        vaElm.innerHTML += "<div class='vaDiv' onclick=\"contentFrame.location.href='" + catalogCulture+ "/" + symbolArr[i].url + ".htm';\"><table style='background-color:#DEDEDE; color:black;width:100%;height:30px;' cellpadding='3px'><tr><td align='left' valign='middle'><img alt='symbol' src='en-US/img/pgs/symbol-" + symbolArr[i].url + ".gif'/></td></tr></table></div>";
    }

    if (isHTA == true) {
        var videoArr = vaObj.filter(function(x) { return x.type == "video"; });
        if (videoArr.length > 0) vaElm.innerHTML += "<br/>";
        for (i = 0; i < videoArr.length; i++) {
            vaElm.innerHTML += "<div class='vaDiv' onclick=\"popupCulture('" + videoArr[i].url + "');\"><table style='background-color:#A4A4A4; color:white;width:100%;' cellpadding='3px'><tr><td style='width:10px;'><img alt='Videos' src='en-US/img/app/video.gif' onmouseover='imageOver(this);' onmouseout='imageOut(this);' /></td><td>" + videoArr[i].display + "</td></tr></table></div>";
        }
    }
    
    var calcArr = vaObj.filter(function(x) { return x.type == "calc"; });
    if (calcArr.length > 0) vaElm.innerHTML += "<br/>";
    for (i = 0; i < calcArr.length; i++) {
        vaElm.innerHTML += "<div class='vaDiv' onclick=\"contentFrame.location.href='en-US/" + calcArr[i].url + "';\"><table style='background-color:#C40000; color:white;width:100%;' cellpadding='3px'><tr><td><img alt='Calculator' src='en-US/img/app/toolbar-calc.png' onmouseover='imageOver(this);' onmouseout='imageOut(this);' /></td><td>" + calcArr[i].display + "</td></tr></table></div>";
    }
    var newprodArr = vaObj.filter(function(x) { return x.type == "newprod"; });
    if (newprodArr.length > 0) vaElm.innerHTML += "<br/>";
    for (i = 0; i < newprodArr.length; i++) {
        vaElm.innerHTML += "<div class='vaDiv' onclick=\"contentFrame.location.href='en-US/" + newprodArr[i].url + "';\"><table style='background-color:#DEDEDE; color:black;width:100%;' cellpadding='3px'><tr><td><img alt='New Product' src='en-US/img/pgs/newproducts.jpg' onmouseover='imageOver(this);' onmouseout='imageOut(this);' /></td><td>" + newprodArr[i].display + "</td></tr></table></div>";
    }
    var formArr = vaObj.filter(function(x) { return x.type == "form"; });
    if (formArr.length > 0) vaElm.innerHTML += "<br/>";
    for (i = 0; i < formArr.length; i++) {
        vaElm.innerHTML += "<div class='vaDiv' onclick=\"contentFrame.location.href='" + catalogCulture + "/" + formArr[i].url + ".htm';\"><table style='background-color:#747474; color:white;width:100%;' cellpadding='3px'><tr><td><img alt='Forms' src='en-US/img/app/toolbar-inspect.png' onmouseover='imageOver(this);' onmouseout='imageOut(this);' /></td><td>" + formArr[i].display + "</td></tr></table></div>";
    }
    var linkArr = vaObj.filter(function(x) { return x.type == "link"; });
    if (linkArr.length > 0) vaElm.innerHTML += "<br/>";
    for (i = 0; i < linkArr.length; i++) {
        vaElm.innerHTML += "<div class='vaDiv' onclick=\"contentFrame.location.href='" + catalogCulture + "/" + linkArr[i].url + "';\"><table style='background-color:#C40000; color:white;width:100%;' cellpadding='3px'><tr><td align='center' valign='middle'>" + linkArr[i].display + "</td></tr></table></div>";
    }
    var webArr = vaObj.filter(function(x) { return x.type == "web"; });
    if (webArr.length > 0) vaElm.innerHTML += "<br/>";
    for (i = 0; i < webArr.length; i++) {
        vaElm.innerHTML += "<div class='vaDiv' onclick=\"window.open('" + webArr[i].url + "','mywindow','toolbar=yes,location=yes, directories=yes,status=yes,menubar=yes,scrollbars=yes,resizeable=yes');\"\"><table style='background-color:#C40000; color:white;width:100%;' cellpadding='3px'><tr><td align='center' valign='middle'>" + webArr[i].display + "</td></tr></table></div>";
    }
    } catch (ex) { logError(ex); }
}

function getCultureCookie() {
    try {
        var option = null;
        var cookiestring = " " + document.cookie + ";";
        var searchName = " " + "culture" + "=";
        var startOfCookie = cookiestring.indexOf(searchName);
        var endOfCookie;

        if (startOfCookie != -1) {
            startOfCookie += searchName.length;
            endOfCookie = cookiestring.indexOf(";", startOfCookie);
            option = cookiestring.substring(startOfCookie, endOfCookie);
            if (option.length > 0)
                return option.toString();
            else
                return "en-US";
        }
        else
            return "en-US";
    }
    catch (ex) {
        return "en-US";
    }
}

function saveCultureCookie() {
    document.cookie = "culture="+ catalogCulture +"; expires=Mon, 01-Jan-2018 12:00:00 GMT; path=/;";
}

function navToNewProd() {
    if (catalogCulture == "fr")
        gotoPage(4);
    else
        gotoPage(8);
}

function navToPage(page) {
    try {
        var loc;
        if (page == "home") {
            var sgmthomepage = getsegmentpage("home");
            if ((sgmthomepage != "home")&&(catalogCulture == "en-US"))
                loc = rootPath + "/" + catalogCulture + "/segmentor/" + sgmthomepage + ".htm";
            else
                loc = rootPath + "/" + catalogCulture + "/" + page + ".htm";
        }
        else
            loc = rootPath + "/" + catalogCulture + "/" + page + ".htm";
        contentFrame.location.href = loc;
    }
    catch (ex) {logError(ex); }
    updateView();
}

function findInPages(page) {
    try {
    for (var i = 0; i < catalogs[catalogCulture].pages.length; i++) {
        if (page == catalogs[catalogCulture].pages[i].url) {
            return i;
        }
    }
    return -1;
    } catch (ex) { logError(ex); }
}

function gotoPage(pageNo) {
    try {
		var loc;
		if (pageNo == "calc") {
			loc = rootPath + "/" + catalogCulture + "/calc.htm";		
		}
		else
		{		
			if (pageNo == "slingcalc") {
				loc = rootPath + "/en-US/calc/slingcalc/riggingpro.htm";				
			}
			else
			{
				loc = rootPath + "/" + catalogCulture + "/" + catalogs[catalogCulture].pages[pageNo].url;
			}
		}
        contentFrame.location.href = loc;
    }
    catch (ex) {logError(ex); }
    updateView();
}

function firstPage() {
    gotoPage(0);
}

function prevPage() {
    try {
        var navExceptionFound = false;
        var loc = "";
        for (var i = 0; i < catalogs[catalogCulture].navigation.length; i++) {
            if (currentLoc == catalogs[catalogCulture].navigation[i].page) {
                navExceptionFound = true;
                loc = rootPath + "/" + catalogCulture + "/" + catalogs[catalogCulture].navigation[i].previous;
                break;
            }
        }
        if (navExceptionFound == true)
            contentFrame.location.href = loc;
        else {
            var pg = parseInt(currentPage) - 1;
            if (pg < 0)
                pg = catalogs[catalogCulture].pages.length - 1;

            gotoPage(pg);
        }
    } catch (ex) { logError(ex); }
}

function nextPage() {
    try {
        var navExceptionFound = false;
        var loc = "";
        for (var i = 0; i < catalogs[catalogCulture].navigation.length; i++) {
            if (currentLoc == catalogs[catalogCulture].navigation[i].page) {
                navExceptionFound = true;
                loc = rootPath + "/" + catalogCulture + "/" + catalogs[catalogCulture].navigation[i].next;
                break;
            }
        }
        if (navExceptionFound == true)
            contentFrame.location.href = loc;
        else {
            var pg = parseInt(currentPage) + 1;
            if (pg >= catalogs[catalogCulture].pages.length)
                pg = 0;

            gotoPage(pg);
        }
    } catch (ex) { logError(ex); }
}

function lastPage() {
    gotoPage(catalogs[catalogCulture].pages.length -1);
}

function historyForward() {
    try {
    if (isHTA != true)
        history.forward();
    else {
        if (cH_ptr >= cH_max) return;
        history_nav = 1;
        cH_ptr++;
        contentFrame.location.href = cHistory[cH_ptr];
    }
    updateView();
    } catch (ex) { logError(ex); }
}

function historyBack() {
    try {
    if (isHTA != true)
        history.back();
    else {
        if (cH_ptr <= 1) return;
        history_nav = 1;
        cH_ptr--;
        contentFrame.location.href = cHistory[cH_ptr];
    }
    updateView();
    } catch (ex) { logError(ex); }
}

function windowResize() {
    try {
    window.scroll(0, 0);
    var myWidth = 0, myHeight = 0;
    if (window.innerWidth && window.innerHeight) {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }

    var cF = document.getElementById("contentFrame");
    cF.style.left = currentPos + 'px';
    cF.style.height = ((parseInt(myHeight) - 125) < 0)? 0:(parseInt(myHeight) - 125) + 'px';
    cF.style.width = ((parseInt(myWidth) - currentPos) < 0)? 0:(parseInt(myWidth) - currentPos) + 'px';
    document.getElementById("mainTable").style.height = ((parseInt(myHeight) - 90) < 0)? 0:(parseInt(myHeight) - 90) + 'px';
    document.getElementById("valueAdded").style.height = ((parseInt(myHeight) - 125) < 0)? 0:(parseInt(myHeight) - 125) + 'px';

    var np = document.getElementById("navPanel");
    np.style.left = (parseInt(myWidth) - 485) / 2 + "px";
    np.style.top = (parseInt(myHeight) - 31) + "px";
    } catch (ex) { logError(ex); }
}

function loadCatalog(type) {
    try {
    if (catalogs[type]) {
        catalogCulture = type;
        saveCultureCookie();
        document.title = catalogs[catalogCulture].wintitle;
        document.getElementById("appTitle").innerHTML = catalogs[catalogCulture].title;
        document.getElementById("toolbarIndex").style.display = catalogs[catalogCulture].toolbar.index.display;
        document.getElementById("toolbarPrint").style.display = catalogs[catalogCulture].toolbar.print.display;
        if (isHTA == true)
            document.getElementById("toolbarVideo").style.display = catalogs[catalogCulture].toolbar.video.display;
        else
            document.getElementById("toolbarVideo").style.display = "none";
        document.getElementById("toolbarCalc").style.display = catalogs[catalogCulture].toolbar.calc.display;
        document.getElementById("toolbarInspect").style.display = catalogs[catalogCulture].toolbar.inspect.display;
        document.getElementById("toolbarDrawing").style.display = catalogs[catalogCulture].toolbar.drawing.display;
        document.getElementById("toolbarSearch").style.display = catalogs[catalogCulture].toolbar.search.display;
        document.getElementById("toolbarNewProd").style.display = catalogs[catalogCulture].toolbar.newprod.display;

        var imgHeader;
        var srcname;
        var oldCulture = document.getElementById("header1").src.toString();
        oldCulture = oldCulture.substring(0, oldCulture.indexOf("/img/app/"));
        oldCulture = oldCulture.substring(oldCulture.lastIndexOf("/") + 1);
        for (var i = 1; i <= 13; i++) {
            imgHeader = document.getElementById("header" + i.toString());
            srcname = imgHeader.src.toString();
            srcname = srcname.replace(oldCulture + "/img/app/", catalogCulture + "/img/app/");
            imgHeader.src = srcname;
        }
        imgHeader = document.getElementById("toolbarIndexImg");
        srcname = imgHeader.src.toString();
        srcname = srcname.replace(oldCulture + "/img/app/", catalogCulture + "/img/app/");
        imgHeader.src = srcname;

        var s = document.getElementById("catalogSelector");
        for (i = 0; i < s.options.length; i++) {
            if (s.options[i].value == catalogCulture)
                s.selectedIndex = i;
        }
    }
    } catch (ex) { logError(ex); }
}

function checkEnter(e) {
    try {
        var characterCode;

        if (e && e.which) { //if which property of event object is supported (NN4)
            e = e;
            characterCode = e.which;  //character code is contained in NN4's which property
        }
        else {
            e = event;
            characterCode = e.keyCode;  //character code is contained in IE's keyCode property
        }

        if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key)
            gotoPage(document.getElementById("gotoPageTxt").value);
            return false;
        }
        else {
            return true;
        }
    } catch (ex) { logError(ex); }
}

function IsNumeric(sText) {
    try {
        var ValidChars = "0123456789.";
        var IsNumber = true;
        var Char;


        for (i = 0; i < sText.length && IsNumber == true; i++) {
            Char = sText.charAt(i);
            if (ValidChars.indexOf(Char) == -1) {
                IsNumber = false;
            }
        }
        return IsNumber;
    } catch (ex) { logError(ex); }

}

function stringRight(str, n) {
    try {
        if (n <= 0)
            return "";
        else if (n > String(str).length)
            return str;
        else {
            var iLen = String(str).length;
            return String(str).substring(iLen - n, iLen);
        }
    } catch (ex) { logError(ex); }
}

if (!Array.prototype.filter) {
    Array.prototype.filter = function(fun /*, thisp*/) {
        var len = this.length;
        if (typeof fun != "function")
            throw new TypeError();

        var res = new Array();
        var thisp = arguments[1];
        for (var i = 0; i < len; i++) {
            if (i in this) {
                var val = this[i]; // in case fun mutates this
                if (fun.call(thisp, val, i, this))
                    res.push(val);
            }
        }

        return res;
    };
}

function logError(ex) {
}