﻿//**************************************************************************************************************//
// Main drawer behavior, affects all 'accordion' drawers throughout site (but not 'promo' drawers on Home page).
function rAccordin() {
	this.initialize();
}
rAccordin.prototype = {
    initialize: function() {
        // close all drawers except first on page load
        $('div.accordion> div').hide().removeClass("printOnly");
        $('div.accordion > h3').removeClass("open").addClass("closed");

        // if there is a qs parameter, open only that drawer
        try {
            var x = location.hash;
            if (x != "") { x = x.replace("#", ""); }
            if (x != "") {
                var p1 = x;
                $('div.accordion> div#' + p1 + 'sub').show().addClass("printOnly");
                $('h3#' + p1).removeClass("closed").addClass("open");
            } else {
                // by default open up first one!
                $('div.accordion> div#b1sub').show().addClass("printOnly");
                $('h3#b1').removeClass("closed").addClass("open");
            }
        }
        catch (qserr) {
        }

        // open and close drawers on mouseclick
        $('div.accordion> h3').click(function() {
            var xId = this.id; var xState = this.className;
            allDrawersOpen = true;
            toggleAllDrawers();
            // now open just the one - unless it's already opened!
            if (xState != "open") {
                $(this).removeClass("closed").addClass("open");
                $(this).next("div").show('medium').addClass("printOnly");
            }
        });
    }
}

 //For 'Show All' links on drawer pages (toggle open/closed state of all drawers) 
var allDrawersOpen = false;
function toggleAllDrawers() {
    if(allDrawersOpen) {
        $('div.accordion > div').hide().addClass("printOnly").css("display","");
        $('div.accordion > h3').removeClass("open").addClass("closed");
    } else {
        $('div.accordion > div').show().removeClass("printOnly").css("display","");
        $('div.accordion > h3').removeClass("closed").addClass("open");
    }    
    allDrawersOpen = !allDrawersOpen;
    return allDrawersOpen;
}


function toggleAllSubAccordionDrawers() {
    if (allDrawersOpen) {
        $('div.portAccordion > div').hide().addClass("printOnly").css("display", "");
        $('div.portAccordion > h3').removeClass("open").addClass("closed");
    } else {
        $('div.portAccordion > div').show().removeClass("printOnly").css("display", "");
        $('div.portAccordion > h3').removeClass("closed").addClass("open");
    }
    allDrawersOpen = !allDrawersOpen;
    return allDrawersOpen;
}  
 
 

$(document).ready(function(){
  if (document.getElementById("toggleDrwsLnk")) { 
    var toggleLink = document.getElementById("toggleDrwsLnk"); 
    toggleLink.onclick = function () { 
        var s = toggleAllDrawers(); 
        if(s) this.innerHTML = 'Hide All'; 
        else this.innerHTML = 'Show All';
    }
  }
});



function cleanUrl(curURL) {
    var cl_URL = curURL.replace(/\/index.*/, '/');
    cl_URL = cl_URL.replace(/\/default.*/, '/');
    cl_URL = cl_URL.replace(/#.*/, '');
    cl_URL = cl_URL.replace(/\?.*/, '');
    return cl_URL.toLowerCase();
}

var docUrl = cleanUrl(document.URL)

// Accordion with SubAccordion for Port Locator
function rAccordionWithSub() {
    this.initialize();
}

rAccordionWithSub.prototype = {
    initialize: function() {
        var xId; var xState;

        if (docUrl.lastIndexOf("/ports/print_ports.aspx") == -1) {
            // close all drawers except first on page load
            $('div.portAccordion> div').hide().removeClass("printOnly");
            $('div.portAccordion > h3').removeClass("open").addClass("closed");
        }
        
        // if there is a qs parameter, open only that drawer
        try {
            var x = location.hash;
            if (x != "") { x = x.replace("#", ""); }
            if (x != "") {
                var p1 = x;
                var posDsh = p1.lastIndexOf("-");
                var tVal = "";
                if (posDsh > -1) {
                    tVal = p1.substring(0, posDsh)
                    // open up the parent
                    $('div.portAccordion> h3#' + tVal).removeClass("closed").addClass("open");
                    $('#' + tVal + 'subA').show();
                    $('div.subaccordion> h3#' + p1)
                    $('div.subaccordion> h3#' + p1).show();
                    $('div.subaccordion> h3#' + p1).next("div").show('medium').addClass("printOnly");

                } else {
                    $('div.portAccordion> h3#' + p1).removeClass("closed").addClass("open");
                    $('#' + p1 + 'subA').show();
                }

            } else {

                // No default set up at this time!

            }
        }
        catch (qserr) {
        }

        // open and close drawers on mouseclick
        $('div.portAccordion> h3').click(function() {
            xId = this.id; xState = this.className;

            // allDrawersOpen = true;
            // toggleAllSubAccordionDrawers();

            // now open just the one - unless it's already opened!
            if (xState.lastIndexOf("open") == -1) {
                $(this).removeClass("closed").addClass("open");
                $(this).next("div").show('medium').addClass("printOnly");
            } else {
                $(this).removeClass("open").addClass("closed");
                $(this).next("div").hide('medium').addClass("printOnly");
            }
        });

        $('div.subaccordion> h3').click(function() {
            xId = this.id; xState = this.className;
            // alert("subClick, xId: " + xId + "\n classname: " + xState)
            // now open just the one - unless it's already opened!
            if (xState.lastIndexOf("open") == -1) {
                $(this).removeClass("closed").addClass("open");
                $(this).next("div").show('medium').addClass("printOnly");
                $(xId + 'subA').show();
            } else {
                $(this).removeClass("open").addClass("closed");
                $(this).next("div").hide().removeClass("printOnly");
                $(xId + 'subA').hide();
            }
        });
    }
}







// from http://adamv.com/dev/javascript/querystring
// For passing QS parameters to have a particular drawer open when page renders.
// Ex: http://www.chevron.com/news/publications/default.aspx?d=a2  <-renders page with drawer 2 open
function Querystring(qs) { 
    this.params = new Object();
    this.get=Querystring_get;

    if (qs == null)
	    qs=location.search.substring(1,location.search.length);

    if (qs.length == 0) return;

    qs = qs.replace(/\+/g, ' ');
    var args = qs.split('&'); 
    	
    for (var i=0;i<args.length;i++) {
        var value;
        var pair = args[i].split('=');
        var name = unescape(pair[0]);
        if (pair.length == 2)
	        value = unescape(pair[1]);
        else
	        value = name;    	
        this.params[name] = value;
    }
}

function Querystring_get(key, default_) {
	if (default_ == null) default_ = null;	
	var value=this.params[key];
	if (value==null) value=default_;	
	return value;
}
//**************************************************************************************************************//
/*
 * rPromoBox
 * Toggles open/closed state for promo boxes on Home page.
 */
function rPromoBox() {
	this.initialize();
}
rPromoBox.prototype = {
initialize: function() {
		var promos = $('div.promo');
		for (var i=0; i<promos.length; i++) {
			var els = new Object();
			els.openDiv = $('div.open', promos[i]);
			els.openDivHeader = $('h3 a', els.openDiv);
			els.closedDiv = $('div.closed', promos[i]);
			els.closedDivHeader = $('h3 a', els.closedDiv);
			els.nav = $('ul.promoNav', promos[i])[0];
			if (els.nav) {
				this.initNav(promos[i], els.nav);
			}
			$(els.openDivHeader).bind('click', {parentThis: this, els: els}, function(params) {
				params.data.parentThis.hide(params);
				return false;
			});
			$(els.closedDivHeader).bind('click', {parentThis: this, els: els}, function(params) {
				params.data.parentThis.show(params);
				return false;
			});
		}
	},
	show: function(params) {
	$(params.data.els.closedDiv).hide();
		$(params.data.els.openDiv).show(500);
	},
	hide: function(params) {
	$(params.data.els.openDiv).hide();
	$(params.data.els.closedDiv).show(500);
	},
	initNav: function(el, nav) {
		var els = new Object();
		els.one = $('div.one', el)[0];
		els.two = $('div.two', el)[0];
		els.navOne = $('li.one a', nav)[0];
		els.navTwo = $('li.two a', nav)[0];
		$(els.navOne).bind('click', {parentThis: this, els: els}, function(params) {
			params.data.parentThis.pageOne(params);
			return false;
		});
		$(els.navTwo).bind('click', {parentThis: this, els: els}, function(params) {
			params.data.parentThis.pageTwo(params);
			return false;
		});
	},
	pageOne: function(params) {
		$(params.data.els.navTwo).removeClass('selected');
		$(params.data.els.navOne).addClass('selected');
		$(params.data.els.two).hide();
		$(params.data.els.one).show();
	},
	pageTwo: function(params) {
		$(params.data.els.navOne).removeClass('selected');
		$(params.data.els.navTwo).addClass('selected');
		$(params.data.els.one).hide();
		$(params.data.els.two).show();
	}
}

addLoadEvent(function() {
    new rPromoBox();
    new rAccordin();
    new rAccordionWithSub();
});


function blockDisplay(objName, idx) {
    var selObj = document.getElementById(objName);
    var tp = "";
    for (var j = 0; j < selObj.options.length; j++) {
        tp = selObj.options[j].value
        if (j == idx) {
            document.getElementById(tp).style.display = "block";
        } else {
            document.getElementById(tp).style.display = "none";
        }
    }

}


