// system wide functionality
var g_IEVersion = 7;	/* only use this value if you have already
			determined that the browser is IE.  Otherwise
			the value if this variable is meaningless. */
/* Set blank default to off */
var g_Blank = false;

// these are here because when non-IE browsers check for an IE deficency function
// it won't generate a javascript error.
onSubMenuCreate = null;
onSubMenuDestroy = null;
ieFixObjects = null;

// BEGIN BrowserDetect
var BrowserDetect = {
        init: function () {
                this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
                this.version = this.searchVersion(navigator.userAgent)
                        || this.searchVersion(navigator.appVersion)
                        || "an unknown version";
                this.OS = this.searchString(this.dataOS) || "an unknown OS";
        },
        searchString: function (data) {
                for (var i=0;i<data.length;i++) {
                        var dataString = data[i].string;
                        var dataProp = data[i].prop;
                        this.versionSearchString = data[i].versionSearch || data[i].identity;
                        if (dataString) {
                                if (dataString.indexOf(data[i].subString) != -1)
                                        return data[i].identity;
                        }
                        else if (dataProp)
                                return data[i].identity;
                }
        },
        searchVersion: function (dataString) {
                var index = dataString.indexOf(this.versionSearchString);
                if (index == -1) return;
                return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
        },
        dataBrowser: [
                {       string: navigator.userAgent,
                        subString: "OmniWeb",
                        versionSearch: "OmniWeb/",
                        identity: "OmniWeb"
                },
                {
                        string: navigator.vendor,
                        subString: "Apple",
                        identity: "Safari"
                },
                {
                        prop: window.opera,
                        identity: "Opera"
                },
                {
                        string: navigator.vendor,
                        subString: "iCab",
                        identity: "iCab"
                },
                {
                        string: navigator.vendor,
                        subString: "KDE",
                        identity: "Konqueror"
                },
                {
                        string: navigator.userAgent,
                        subString: "Firefox",
                        identity: "Firefox"
                },
                {
                        string: navigator.vendor,
                        subString: "Camino",
                        identity: "Camino"
                },
                {               // for newer Netscapes (6+)
                        string: navigator.userAgent,
                        subString: "Netscape",
                        identity: "Netscape"
                },
                {
                        string: navigator.userAgent,
                        subString: "MSIE",
                        identity: "Explorer",
                        versionSearch: "MSIE"
                },
                {
                        string: navigator.userAgent,
                        subString: "Gecko",
                        identity: "Mozilla",
                        versionSearch: "rv"
                },
                {               // for older Netscapes (4-)
                        string: navigator.userAgent,
                        subString: "Mozilla",
                        identity: "Netscape",
                        versionSearch: "Mozilla"
                }
        ],
        dataOS : [
                {
                        string: navigator.platform,
                        subString: "Win",
                        identity: "Windows"
                },
                {
                        string: navigator.platform,
                        subString: "Mac",
                        identity: "Mac"
                },
                {
                        string: navigator.platform,
                        subString: "Linux",
                        identity: "Linux"
                }
        ]

};
BrowserDetect.init();
// END BrowserDetect

/* Define our console debugging handlers to overlook firebug based debugging when not enabled */
if(!window.console)
{
	// setup a debugging panel
	function OutputConsole()
	{// begin OutputConsole
		this.info = function (msg)
		{// begin info
			var debug_panel = document.getElementById("debugpanel");
			if(!debug_panel)
			{
				// create the panel
				var debug_panel_div = document.createElement("div");
				debug_panel_div.setAttribute("id", "debugpanel");
				debug_panel_div.setAttribute("style", "position: absolute; top: 0; opacity: 0.8; font-size: .8em; font-family: fixed; background-color: #444; color: white; z-index: 9999; text-align: left; padding: .5em; max-height: 15em; max-width: 25em; overflow-y: scroll;");
				var body_element = document.getElementsByTagName("body");
				if(body_element.length > 0)
				{
					body_element = body_element[0];
					body_element.appendChild(debug_panel_div);
					debug_panel = debug_panel_div;
				}
			}
			var log_msg = document.createElement("div");
			log_msg.setAttribute("style", "border-bottom: thin dotted #CCC; padding-bottom: .25em; padding-top: .25em;");
			log_msg.innerHTML = ": "+msg;
			debug_panel.appendChild(log_msg);
			debug_panel.scrollTop = 9999999;
//			alert(msg);
		}// end info
		this.log = function (msg)
		{// begin info
			this.info(msg);
		}// end info
	}// end OutputConsole

	console = new OutputConsole();
}

function getAbsoluteLeft(objectId)
{
	// Get an object left position from the upper left viewport corner
	// Tested with relative and nested objects
	var o = document.getElementById(objectId);
	var oLeft = o.offsetLeft;            // Get left position from the parent object
	while(o.offsetParent!=null)
	{   // Parse the parent hierarchy up to the document element
		var oParent = o.offsetParent;    // Get parent object reference
		oLeft += oParent.offsetLeft; // Add parent left position
		o = oParent;
	}
	// Return left postion
	return oLeft;
}

function getAbsoluteTop(objectId)
{
	// Get an object top position from the upper left viewport corner
	// Tested with relative and nested objects
	var o = document.getElementById(objectId);
	if(!o)
		return null;
	var oTop = o.offsetTop;            // Get top position from the parent object
	while(o.offsetParent!=null)
	{ // Parse the parent hierarchy up to the document element
		var oParent = o.offsetParent;  // Get parent object reference
		oTop += oParent.offsetTop; // Add parent top position
		o = oParent;
	}
	// Return top position
	return oTop;
}


function getAbsoluteLeftObj(o)
{
	// Get an object left position from the upper left viewport corner
	// Tested with relative and nested objects
	if(!o)
	{
		console.log("object does not exist");
		return 0;
	}
	var oLeft = o.offsetLeft;            // Get left position from the parent object
	while(o.offsetParent!=null)
	{   // Parse the parent hierarchy up to the document element
		var oParent = o.offsetParent;    // Get parent object reference
		oLeft += oParent.offsetLeft; // Add parent left position
		o = oParent;
	}
	// Return left postion
	return oLeft;
}

function getAbsoluteTopObj(o)
{
	// Get an object top position from the upper left viewport corner
	// Tested with relative and nested objects
	if(!o)
		return null;
	var oTop = o.offsetTop;            // Get top position from the parent object
	while(o.offsetParent!=null)
	{ // Parse the parent hierarchy up to the document element
		var oParent = o.offsetParent;  // Get parent object reference
		oTop += oParent.offsetTop; // Add parent top position
		o = oParent;
	}
	// Return top position
	return oTop;
}

/* BEGIN onload hook */
function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function() {
			oldonload();
			func()
		}
	}
}

/* END onload hook */


addLoadEvent(onPageLoad);

function onPageLoad()
{
	$("#homeplans").find("div").each( function() { $(this).bind("click", displayHomePlanOption); } );
	$("#markethomepics").find("div").each( function() { $(this).bind("click", displayHomePlanOption); } );
	$(".button-menu").bind("mouseover", RepositionPopup);
	
	HookPopupContactForm();
}

function RepositionPopup(e)
{// begin RepositionPopup
	var e_out;
	var ie_var = "srcElement";
	var w3c_var = "target";
	var object = e[w3c_var] ? e[w3c_var] : e[ie_var];
	var bottom = $(this).find("ul").offset().top+$(this).find("ul").height();
	var viewport_bottom = $(document).scrollTop()+$(window).height();
	if(bottom > viewport_bottom)
		$(this).find("ul").css( { "top" : viewport_bottom-$(this).find("ul").height() + "px" });
	else if(bottom < viewport_bottom)
		$(this).find("ul").css( { "top" : "auto" });
}// end RepositionPopup

function HookPopupContactForm()
{// begin HookPopupContactForm
	var frm = $("#short-form");
	if(!frm)
		return;
	frm.bind("click", toggleShortForm);

	PositionContactFormTab();
	$(window).bind('resize', function() {
		PositionContactFormTab();
	});
	toggleIcons(frm);

}// end HookPopupContactForm

function PositionContactFormTab()
{// begin PositionContactFormTab
	// align to banner
	var position = $(".banner").position();
	var width = $(".banner").width();
	var viewport_width = $(window).width();
	var right_offset = viewport_width - (position.left + width);
	$(".short-form").css( { "right": (right_offset) + "px", "top":position.top 
+ "px", "visibility" : "visible" } );	
}// end PositionContactFormTab

function toggleShortForm(e)
{// begin toggleShortForm
	var e_out;
	var ie_var = "srcElement";
	var w3c_var = "target";
	var object = e[w3c_var] ? e[w3c_var] : e[ie_var];
	if($(object).attr("type") == "submit")
	{
		return true;
	}

	if($(object).attr("id") != "short-form")
	{
		e.stopPropagation();
		return false;
	}
	$(this).toggleClass("short-form-expanded");
	toggleIcons(this);
	return true;
}// end toggleShortForm

function toggleIcons(obj)
{// begin toggleIcons
	if($(obj).hasClass("short-form-expanded"))
		$(".icons").css({"display": "none"});
	else
		$(".icons").css({"display": "block"});
}// end toggleIcons

function displayHomePlanOption(e)
{// begin displayHomePlanOption
	var e_out;
	var ie_var = "srcElement";
	var w3c_var = "target";
	var object = e[w3c_var] ? e[w3c_var] : e[ie_var];
	var img = object.getElementsByTagName("img");
	if(img.length == 0)
	{
		img = object.parentNode.getElementsByTagName("img");
	}
	var image = document.getElementById("homeplan-pic");
	if(!image)
	{
		image = document.getElementById("markethome-pic");
	}
	image.src = img[0].src;
	var a = image.parentNode;
	if(a.nodeName.toLowerCase() == "a")
	{
		console.log(img[0].src);
		a.href = img[0].src;
		a.title = img[0].title;
	}
}// end displayHomePlanOption

