//javascript for Chameleon Template

var panGap = 10;
var pageGap = 10;
var resizeTimeout = 500;
var isIE = (navigator.userAgent.toLowerCase().indexOf('msie') != -1) ? true : false;
var ns4 = (document.layers)? true:false
var ie4 = (document.all)? true:false
var nlwisToggleMapComponents = ["map","mapimage","MapLayerDivImg","MapLayerDiv","MapLayerBG"];
var TIMEOUT_ID;

function nlwisResizeElement(eId,newWidth,newHeight) {
    e = document.getElementById(eId);
    if (e) {
        e.style.width = parseInt(newWidth)+"px";
        e.style.height = parseInt(newHeight)+"px";
    }
}
function nlwisHideMapComponents() {
    for (i in nlwisToggleMapComponents) {
        document.getElementById(nlwisToggleMapComponents[i]).style.visibility = "hidden";
    }
}
function nlwisShowMapComponents() {
    for (i in nlwisToggleMapComponents) {
        document.getElementById(nlwisToggleMapComponents[i]).style.visibility = "visible";
    }
}
function resizeMapComponents() {
    newWidth = getMapWidth();
    newHeight = getMapHeight();

    moveActivityLayerImg(newWidth,newHeight);
    moveChangeLanguageImg(newWidth,newHeight);

    nlwisResizeElement("map",newWidth,newHeight);
    //remove this when we can fix doctype
    if (isIE) {
        nlwisResizeElement("panarrows",newWidth+22,newHeight+22);
    } else {
        nlwisResizeElement("panarrows",newWidth+20,newHeight+20);
    }
    nlwisResizeElement("mapimage",newWidth,newHeight);
    nlwisResizeElement("MapLayerDivImg",newWidth,newHeight);
    nlwisResizeElement("MapLayerDiv",newWidth,newHeight);
    nlwisResizeElement("MapLayerBG",newWidth,newHeight);

    nlwisResizeElement("zBoxTop",newWidth,newHeight);
    nlwisResizeElement("zBoxLeft",newWidth,newHeight);
    nlwisResizeElement("zBoxRight",newWidth,newHeight);
    nlwisResizeElement("zBoxBottom",newWidth,newHeight);
    //at present these are hidden via CSS.
    nlwisShowMapComponents();

    resizeRightSection();
    resizeLeftSection();
    //wierd glitch in IE - somehow this fixed it.
    if (isIE) {
        resizeRightSection();
    }
}
function moveActivityLayerImg(newWidth,newHeight) {
    imgHeight = document.images["ActivityImg"].height;
    imgWidth = document.images["ActivityImg"].width;

    CWCDHTML_SetLayerPos("ActivityLayer", gMapWhspc + newWidth/2 - imgWidth/2, gMapWvspc + newHeight/2 - imgHeight/2);
}
function moveChangeLanguageImg(newWidth,newHeight) {
    imgHeight = document.images["ChangeLanguageImg"].height;
    imgWidth = document.images["ChangeLanguageImg"].width;

    CWCDHTML_SetLayerPos("ChangeLanguage", gMapWhspc + newWidth/2 - imgWidth/2, gMapWvspc + newHeight/2 - imgHeight/2);
}
function goServerMapRefresh() {
    if (gCWCJSAPI) {
        jsapiMapResize();
        NLWISZoomBarWUpdate();
    } else {
        submitMapResize(true);
    }
}
function jsapiMapResize() { //rename
    d = document;
    f = d.forms[0];
    newHeight = getMapHeight();
    newWidth = getMapWidth();
    f.MAP_WIDTH.value = newWidth;
    f.MAP_HEIGHT.value = newHeight;

    if (goCWCJSAPI.oMap.SetViewSizeNoSubmit(newWidth,newHeight) == true){
        return true;
    } else {
        alert("ERROR: no resize");
        return false;
    }
}
function windowResize() {
    resizeMapComponents();
    timeoutResize();
}
function timeoutResize() {
    clearTimeout(TIMEOUT_ID);
    TIMEOUT_ID = setTimeout('goServerMapRefresh();',resizeTimeout);
}
function setMoreOptions(blnOn){
    var f = document.forms['main'];
    if(blnOn){
        f.moreOptions.value = f.moreOptions[0].value;
        f.moreOptions[0].checked = true;
    } else{
        f.moreOptions.value = f.moreOptions[1].value;
        f.moreOptions[1].checked = true;
    }
    id = document.forms['main'].activetab.value.split(",");
    if (!blnOn && id[0] > 4 ) {
        showPage(1,'overViewlyr');
    }
    extendUI(blnOn);
    resizeRightSection();
    resizeLeftSection();
    document.forms['main'].setOption.value = blnOn;
    goEventManager.triggerEvent( 'MORE_OPTIONS_CHANGED' );
}
function getMapWidth() {
    if ((divRightside = document.getElementById("rightside")) && (divMap = document.getElementById("map")) ) {
        return (CWCDHTML_FindObjectPosX(divRightside)-CWCDHTML_FindObjectPosX(divMap) - panGap - pageGap);
    } else {
        return false;
    }
}
function getMapHeight() {
    if ((divFooter = document.getElementById("footer")) &&
        (divMap = document.getElementById("map")) ) {
        return (CWCDHTML_FindObjectPosY(divFooter) - CWCDHTML_FindObjectPosY(divMap) - panGap - pageGap);
    } else {
        return false;
    }
}
function getHeight(id) {
    e = document.getElementById(id);
    if (e) {
        return e.style.height;
    } else {
        return false;
    }
}
function resizeLeftSection() {
    divLeftside = document.getElementById("leftside");
    divFooter = document.getElementById("footer");
    topFooter = CWCDHTML_FindObjectPosY(divFooter);
    topLeftside = CWCDHTML_FindObjectPosY(divLeftside);

    leftH = (topFooter - topLeftside - pageGap) +2;
    divLeftside.style.height = leftH+"px";
}
function resizeRightSection() {
    divPages = document.getElementById("tabbedpages");
    divRightside = document.getElementById("rightside");
    divFooter = document.getElementById("footer");
    readinfo = document.getElementById("info");

    topRightside = CWCDHTML_FindObjectPosY(divRightside);
    topFooter = CWCDHTML_FindObjectPosY(divFooter);
    topPages = CWCDHTML_FindObjectPosY(divPages);
    topInfo = CWCDHTML_FindObjectPosY(readinfo);

    rightH = (topFooter - topRightside - pageGap) - 2;
    divRightside.style.height = rightH+"px";
    pageH = topInfo - topPages - pageGap;
    divPages.style.height = pageH+"px";
}
function submitMapResize(blnResize) {
    if (blnResize) {
        if (mapExtentChanged() == true) {
            readyPageForSubmit();
            document.forms['main'].submit();
            return;
        }
    }
}
function mapExtentChanged() {
    oldHeight = document.forms['main'].MAP_HEIGHT.value;
    oldWidth = document.forms['main'].MAP_WIDTH.value;
    newHeight = getMapHeight();
    newWidth = getMapWidth();

    if ((oldHeight != newHeight) || (oldWidth != newWidth)) {
        return true;
    } else {
        return false;
    }
}
/* readyPageForSubmit
 * This function contains things that need to bet set/checked before a page refresh, a resize event
 * There is an UpdateMap function as part of Chameleon, but it does not work the way I need it to here.
*/
function readyPageForSubmit() {
    document.forms['main'].MAP_HEIGHT.value = newHeight;
    document.forms['main'].MAP_WIDTH.value = newWidth;
    document.forms['main'].NAV_CMD.value = '';
}
function addEvent(elm,evType,fn,useCapture) {
    //cross-Browser event handing for IE5+, NS6+ and Mozilla/Gecko
    //by Scott Andrew
    //taken from DHTML Utopia - Sitepoint Books
    if (elm.addEventListener) {
        elm.addEventListener(evType, fn, useCapture);
        return true;
    } else if (elm.attachEvent) {
        var r = elm.attachEvent('on' + evType, fn);
        return r;
    } else {
        elm['on' + evType] = fn;
        return true;
    }
    return false;
}
function showPage(tabid,pageid) {
    showActiveTab(tabid);
    togglePage(pageid);
    document.forms['main'].activetab.value = tabid+","+pageid;
}
function showActiveTab(elementid){
    p = document.getElementById("functionPanel");
    for (i=0;i<p.childNodes.length;i++) {
        if ((p.childNodes[i].nodeName == "UL") && (p.childNodes[i].className == "tab")) {
            ul = p.childNodes[i];
            for (j=0;j<ul.childNodes.length;j++) {
                if ((ul.childNodes[j].nodeName == "LI") && (ul.childNodes[j].firstChild.nodeName == "A")) {
                    a = ul.childNodes[j].firstChild;
                    a.className = a.className.replace(/\b ?active\b/,'');
                }
            }
        }
    }
    document.getElementById("tab"+elementid).className = "active";

}
function togglePage(pageid) {
    p = document.getElementById("tabbedpages");
    for (i=0;i<p.childNodes.length;i++) {
        if ((p.childNodes[i].nodeName == "DIV") && (p.childNodes[i].className == "page")) {
            thispage = p.childNodes[i];
      displayNone(thispage.id);
        }
    }
   displayBlock(pageid);
}
function displayBlock(id) {
    e = document.getElementById(id);
    if (e) {
        e.style.display = "block";
    }
}
function displayNone(id) {
    e = document.getElementById(id);
    if (e) {
        e.style.display = "none";
    }
}
function displayInline(id) {
    e = document.getElementById(id);
    if (e) {
        e.style.display = "inline";
    }
}
//toggle the extended set of tools
function extendUI(blnOn) {
    toggleTabs(blnOn);
    toggleTools(blnOn);
    toggleViews(blnOn);
}
function toggleTabs(blnOn) {
    var sState = "none";
    if(blnOn) sState = "block";

    e = document.getElementById("extendedtabs");
    if (e) {
        e.style.display = sState;
    }
}
function toggleTools(blnOn) {
    var sState = "none";
    if(blnOn) sState = "block";
    e = document.getElementById("extendedtools");
    if (e) {
        e.style.display = sState;
    }
}
function toggleViews(blnOn) {
    var sState = "none";
    if(blnOn) sState = "inline";
    p = document.getElementById("zoomDropDown");
    for (i=0;i<p.childNodes.length;i++) {
        if (p.childNodes[i].nodeName == "SPAN") {
            if (p.childNodes[i].className == "extended") {
                p.childNodes[i].style.display = sState;
            }
        }
    }
}
function getMetaValue(metatag) {
  var meta = document.getElementsByTagName("meta");
  l = meta.length;
  for (var i=0; i < l; i++) {
    if (meta[i].getAttribute("name") == metatag) {
        return meta[i].getAttribute("content");
    }
  }
}
function contactUs(){
  var nlwisJsapiUrl = document.forms[0].NLWISJSAPI_URL.value;
  nlwisJsapiUrl = nlwisJsapiUrl.toLowerCase();
  var intPos = nlwisJsapiUrl.indexOf("url=");
  nlwisJsapiUrl = nlwisJsapiUrl.substring(intPos + ("url=").length);

  var strUrl = "http://www.agr.gc.ca/nlwis-snite/index_";
  if (document.forms[0].LANGUAGE.value == "fr-CA"){
    strUrl += "f";
  } else {
    strUrl += "e";
  }
  strUrl += ".cfm?s1=comment&page=intro&URL=";
  strUrl += nlwisJsapiUrl;
  strUrl += "&mode="+document.forms[0].setOption.value;
  var wh = window.open(strUrl,"contactus");
  wh.focus();
}
function createChangeLanguageAnimation() {
  if (getMetaValue("dc.language") == "fre") {
    strLang = "f";
  } else {
    strLang = "e";
  }
  var strChangeLanguageWaitImg = "/chameleon/skins/nlwis/images/chgLang_"+strLang+".gif";
  var intChangeLanguageWaitImgWidth = 212;
  var intChangeLanguageWaitImgHeight = 36;
  content = '<img id="ChangeLanguageImg" name="ChangeLanguageImg" src="' + strChangeLanguageWaitImg + '" border="0">';
  CWCDHTML_CreateLayer("ChangeLanguage",
                       gMapWhspc + gMapWiWidth/2 - gMapDHTMLWaitImageWidth/2,
                       gMapWvspc + gMapWiHeight/2 - gMapDHTMLWaitImageHeight/2,
                       intChangeLanguageWaitImgWidth, intChangeLanguageWaitImgHeight,
                       false, content);
  CWCDHTML_SetLayerZOrder("ChangeLanguage", 30);
}
addEvent(window, 'resize', windowResize, false);
createChangeLanguageAnimation();

