document.write('\n<script src="http://yui.yahooapis.com/2.2.2/build/yahoo/yahoo-min.js"></script>\n');
document.write('<script src="http://yui.yahooapis.com/2.2.2/build/connection/connection-min.js"></script>\n');
document.write('<script src="http://yui.yahooapis.com/2.2.2/build/animation/animation-min.js"></script>\n');
document.write('<script src="http://yui.yahooapis.com/2.2.2/build/yahoo-dom-event/yahoo-dom-event.js"></script>\n');


// run the initialization so it sets up the links
window.onload = initialize;

var launcher = "";
var boxStatus = "closed";
var currentPage = "";

function autoLaunch(href) {
    this.launcher = href;
}

function resetAllPageFunctions() {
    this.displayFirst = "true";
    this.currentFeature = "home_page";
    this.toBeDisplayedFeature = "";
    this.emulatorPage = "false";
    this.currentPortfolio = "1";
}

function initialize() {
    var bod = document.getElementsByTagName("body")[0];
    var overlay = document.createElement("div");
    overlay.id = "overlay";
    var zuBoxDiv = document.createElement("div");
    zuBoxDiv.id = "zuBoxDiv";
    zuBoxDiv.innerHTML = "<div id=\"zuBoxContent\"></div><div id=\"zuBoxLoadMessage\"><img src=\"/common/images/loading.gif\" alt=\"Loading\" /></div>";
    bod.appendChild(overlay);
    bod.appendChild(zuBoxDiv);
    var zuBox = this.getElementsByClass("zuBox", document, "a");
    for (var i = 0; i < zuBox.length; i++ ) {
	zuBox[i].onclick = new Function("launchZuBox(this.href);return false");
    }

    if ( this.launcher != "" ) {
	this.launchZuBox(this.launcher);
    }
}

function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");

    for (var i = 0, j = 0; i < elsLen; i++ ) {
	if ( pattern.test(els[i].className) ) {
	    classElements[j] = els[i];
	    j++;
	}
    }

    return classElements;
}

function launchZuBox(zuBoxHref) {
    document.getElementById("overlay").style.display = "block";
    document.getElementById("overlay").onclick = new Function("hideZuBox();return false");
    document.getElementById("zuBoxDiv").style.display = "block";
    document.getElementById("zuBoxDiv").onclick = new Function("hideZuBox();return false");
    document.getElementById("zuBoxLoadMessage").style.display = "block";
    var request = YAHOO.util.Connect.asyncRequest('GET', zuBoxHref, {
	success:handleSuccess,
	failure:handleFailure
    });
    this.currentPage = zuBoxHref;

    resetAllPageFunctions();
}

function hideZuBox() {
    document.getElementById("overlay").style.display = "none";
    document.getElementById("zuBoxDiv").style.display = "none";
    document.getElementById("zuBoxContent").innerHTML = "";
    this.currentPage = "";
    this.boxStatus = "closed";
}

function changeZuBox(zuBoxHref) {
    if ( this.currentPage != zuBoxHref ) {
	var request = YAHOO.util.Connect.asyncRequest('GET', zuBoxHref, {
	    success:handleSuccess,
	    failure:handleFailure
	});
	this.currentPage = zuBoxHref;

	resetAllPageFunctions();
    }
}

function submitZuBoxForm(formId, zuBoxHref) {
    YAHOO.util.Connect.setForm(document.getElementById(formId));
    var request = YAHOO.util.Connect.asyncRequest('POST', zuBoxHref, {
	success:handleSuccess,
	failure:handleFailure
    });
    this.currentPage = zuBoxHref;

    resetAllPageFunctions();
}

var handleSuccess = function(o) {
    if ( o.responseText !== undefined ) {
	document.getElementById("zuBoxContent").innerHTML = o.responseText;

	if ( boxStatus != "opened" ) {
	//document.getElementById("zuBoxDiv").style.display = 'none';
	//document.getElementById("zuBoxDiv").style.bottom = '-700px';
	}

	document.getElementById("zuBoxDiv").style.top = '15%';

	var zuBox = getElementsByClass("zuBox", document.getElementById("zuBoxDiv"), "a");
	for (var i = 0; i < zuBox.length; i++ ) {
	    if ( zuBox[i].getAttribute("rel") == "close" ) {
		zuBox[i].onclick = new Function("hideZuBox();return false");
	    }
	    else if ( zuBox[i].getAttribute("rel") == "link_within" ) {
		zuBox[i].onclick = new Function("changeZuBox(this.href);return false");
	    }
	}
	document.getElementById("zuBoxLoadMessage").style.display = "none";

	boxStatus = "opened";
    }
}

var handleFailure = function(o) {
    if ( o.responseText !== undefined ) {
	hideZuBox();
    }
}