///////////////////////////////////////////////////////////////////////////////
// This is the onMouseOver event handler.                                    //
///////////////////////////////////////////////////////////////////////////////
if (document.images) {    
  img0on = new Image();
  img0on.src = "/images/about_ro.gif"; 
  img1on = new Image();
  img1on.src = "/images/commentary_ro.gif";
  img2on = new Image();
  img2on.src = "/images/tools_ro.gif";  
  img3on = new Image();
  img3on.src = "/images/individual_investor3_ro.gif";
  img4on = new Image();
  img4on.src = "/images/financial_advisor_ro.gif";
  img5on = new Image();
  img5on.src = "/images/institutional_ro.gif";
  img6on = new Image();
  img6on.src = "../images/stockgrader_link_ro.gif";
  img7on = new Image();
  img7on.src = "/images/marketmail_link_ro.gif";
  img8on = new Image();
  img8on.src = "/images/special_events_link_ro.gif";
  img9on = new Image();
  img9on.src = "/images/video_features_link_ro.gif";
  img10on = new Image();
  img10on.src = "/images/stockgrader_burst_ro.gif";
  img11on = new Image();
  img11on.src = "/images/marketmail_burst_ro.gif";
  img12on = new Image();
  img12on.src = "/images/special_events_burst_ro.gif";
  img13on = new Image();
  img13on.src = "/images/video_features_burst_ro.gif";
  img14on = new Image();
  img14on.src = "/images/signup_now_ro.gif";
  img15on = new Image(); 								
  img15on.src = "/images/take_tour_ro.gif";
  img16on = new Image(); 								
  img16on.src = "/images/next_ro.gif";
  img17on = new Image(); 								
  img17on.src = "/images/back_ro.gif";
  img18on = new Image(); 								
  img18on.src = "/images/stock_grader_on.jpg";
  img19on = new Image(); 								
  img19on.src = "/images/portfolios_on.jpg";
  img20on = new Image(); 								
  img20on.src = "/images/topics_on.jpg";
  img21on = new Image(); 								
  img21on.src = "/images/blogs_ro.gif";
  img22on = new Image(); 								
  img22on.src = "/images/marketmail_burst2_ro.gif";
  img23on = new Image(); 								
  img23on.src = "/images/podcasts_on.jpg";
  img24on = new Image();
  img24on.src = "/images/etfgrader_link_ro.gif";
  // Images for blog navigation.
  img25on = new Image();
  img25on.src = "/images/all_caps_ro.gif";
  img26on = new Image();
  img26on.src = "/images/international_ro.gif";
  img27on = new Image();
  img27on.src = "/images/market_observations_ro.gif";
  img28on = new Image();
  img28on.src = "/images/allocation_ro.gif";
  img29on = new Image();
  img29on.src = "/images/etfgrader_ro.gif";

  //
  img0off = new Image(); 								
  img0off.src = "/images/about.gif";
  img1off = new Image(); 								
  img1off.src = "/images/commentary.gif";
  img2off = new Image(); 								
  img2off.src = "/images/tools.gif";
  img3off = new Image(); 								
  img3off.src = "/images/individual_investor3.gif";
  img4off = new Image(); 								
  img4off.src = "/images/financial_advisor.gif";
  img5off = new Image(); 								
  img5off.src = "/images/institutional.gif";
  img6off = new Image(); 								
  img6off.src = "../images/stockgrader_link.gif";
  img7off = new Image(); 								
  img7off.src = "/images/marketmail_link.gif";
  img8off = new Image(); 								
  img8off.src = "/images/special_events_link.gif";
  img9off = new Image(); 								
  img9off.src = "/images/video_features_link.gif";
  img10off = new Image(); 								
  img10off.src = "/images/stockgrader_burst.gif";
  img11off = new Image(); 								
  img11off.src = "/images/marketmail_burst.gif";
  img12off = new Image(); 								
  img12off.src = "/images/special_events_burst.gif";
  img13off = new Image(); 								
  img13off.src = "/images/video_features_burst.gif";
  img14off = new Image(); 								
  img14off.src = "/images/signup_now.gif";
  img15off = new Image(); 								
  img15off.src = "/images/take_tour.gif";
  img16off = new Image(); 								
  img16off.src = "/images/next.gif";
  img17off = new Image(); 								
  img17off.src = "/images/back.gif";
  img18off = new Image(); 								
  img18off.src = "/images/stock_grader_off.jpg";
  img19off = new Image(); 								
  img19off.src = "/images/portfolios_off.jpg";
  img20off = new Image(); 								
  img20off.src = "/images/topics_off.jpg";
  img21off = new Image(); 								
  img21off.src = "/images/blogs.gif";
  img22off = new Image(); 								
  img22off.src = "/images/marketmail_burst2.gif";
  img23off = new Image(); 								
  img23off.src = "/images/podcasts_off.jpg";
  img24off = new Image(); 								
  img24off.src = "/images/etfgrader_link.gif";
  // Images for blog navigation.
  img25off = new Image();
  img25off.src = "/images/all_caps.gif";
  img26off = new Image();
  img26off.src = "/images/international.gif";
  img27off = new Image();
  img27off.src = "/images/market_observations.gif";
  img28off = new Image();
  img28off.src = "/images/allocation.gif";
  img29off = new Image();
  img29off.src = "/images/etfgrader.gif";
}


function imgOn(imgName) {
  if (document.images) {
    document[imgName].src = eval(imgName + "on.src");
  }
}


function imgOff(imgName) {
  if (document.images) {
    document[imgName].src = eval(imgName + "off.src");
  }
}


// This function rotates the individual investor image on Home page.
function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() { 
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_preloadImages() {
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

var theImages = new Array() 
var theRO = new Array() 

theImages[0] = '/images/individual_investor.gif'
theImages[1] = '/images/individual_investor2.gif'
theImages[2] = '/images/individual_investor3.gif'

theRO[0] = '/images/individual_investor_ro.gif'
theRO[1] = '/images/individual_investor2_ro.gif'
theRO[2] = '/images/individual_investor3_ro.gif'

var j = 0
var p = theImages.length;
var preBuffer = new Array()
for (i = 0; i < p; i++){
   preBuffer[i] = new Image()
   preBuffer[i].src = theImages[i]
   preBuffer[i].src = theRO[i]
}

var whichImage = Math.round(Math.random()*(p-1));
function showImage(){
document.write('<a href="/individual_investor/pa_welcome.aspx" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage(\'II\',\'\',\''+theRO[whichImage]+'\',1);"><img name="II" src="'+theImages[whichImage]+'" style="margin-bottom:3px;" border="0" alt="Individual Investor"></a>');
}


// This function calls the popup window and centers it.
function popWindow(theURL,winName,winWidth,winHeight,otherFeatures) {
   		var x = 0;
   		var y = 0;
   		x = (screen.availWidth - 12 - winWidth) / 2;
   		y = (screen.availHeight - 48 - winHeight) / 4;
   		if (otherFeatures != "") {otherFeatures = "," + otherFeatures}
   		var features = "screenX=" + x + ",screenY=" + y + ",width=" + winWidth +
		",height=" + winHeight+",top="+y+",left="+x+"'" + otherFeatures
   		var NewWindow = window.open(theURL,winName,features);
   		NewWindow.focus();
}


// This function is for Opera 8.x. It alerts user to upgrade to 9.x or higher.
var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();

var is_opera8 = (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1);
	if (is_opera8) {
	window.location = "../opera_alert.htm"
}


// Prototype (extra lite)
// (KUDOS: http://prototypejs.org)
// -----------------------------------------------
Function.prototype.bind = function(object) {
	var __method = this;
	return function() {
		return __method.apply(object, arguments);
	}
};


// Page (Provides a way to call a function when the DOM has
// finished loading, and a way to easily get QueryString values)
// -----------------------------------------------
var Page = {
	name: "Page",
	version: "0.01",
	listenerStack: null,
	domHasLoaded: false,
	domLoadedTimer: null,
	initialize: function() {
		if ("console" in window) console.log(this.name + " (version " + this.version + ") has initialized.");
		this.observeDomLoaded();
	},
	observeDomLoaded: function() {
		// (KUDOS: http://dean.edwards.name/weblog/2006/06/again)

		/* for Safari */
		if (/WebKit/i.test(navigator.userAgent)) { // sniff
			this.domLoadedTimer = setInterval(function() {
				if (/loaded|complete/.test(document.readyState)) {
					Page.onDomLoaded(); // call the onload handler
				}
			}, 10);
			return;
		}

		/* for Mozilla */
		if (document.addEventListener) {
			document.addEventListener("DOMContentLoaded", Page.onDomLoaded.bind(Page), false);
			return;
		}

		/* for Internet Explorer */
		/*@cc_on @*/
		/*@if (@_win32)
			document.write("<script id=__ie_onload defer src=//:><\/script>");
			var script = document.getElementById("__ie_onload");
			script.onreadystatechange = function() {
				if (this.readyState == "complete") {
					Page.onDomLoaded(); // call the onload handler
				}
			};
			return;
		/*@end @*/

		/* for other browsers */
		window.onload = Page.onDomLoaded;
	},
	onDomLoaded: function() {
		// quit if this function has already been called
		if (arguments.callee.done) return;

		// flag this function so we don't do the same thing twice
		arguments.callee.done = true;

		// kill the timer
		if (this.domLoadedTimer) {
			clearInterval(this.domLoadedTimer);
			this.domLoadedTimer = null;
		}

		this.dispatchEvent({type: "load"});
	},
	addEventListener: function(type, handler) {
		var obj = {
			type: type,
			handler: handler
		};
		if (this.listenerStack == null) {
			this.listenerStack = [obj];
		} else {
			this.listenerStack[this.listenerStack.length] = obj;
		}
	},
	dispatchEvent: function(evt) {
		evt.target = this;
		for (i = 0; i < this.listenerStack.length; i++) {
			if (evt.type == this.listenerStack[i].type) {
				this.listenerStack[i].handler(evt);
			}
		}
	},	
	getQueryStringValue: function(key) {
		queryString = window.location.search.substring(1);
		queryStringArray = queryString.split("&");
		for (i = 0; i < queryStringArray.length; i++) {
			nextPair = queryStringArray[i].split("=");
			if (nextPair[0] == key) {
				if (nextPair[1] != null) {
					return nextPair[1];
				} else {
					return "";
				}
			}
		}
		return null;
	},
	getDimensions: function() {
	  var dimensions = {};
	  
	  if (window.innerWidth)
  	{
  		dimensions.width = window.innerWidth;
  		dimensions.height = window.innerHeight;
  	}
  	else if (document.documentElement && document.documentElement.clientWidth)
  	{
  		dimensions.width = document.documentElement.clientWidth;
  		dimensions.height = document.documentElement.clientHeight;
  	}
  	else if (document.body)
  	{
  		dimensions.width = document.body.clientWidth;
  		dimensions.height = document.body.clientHeight;
  	}
  	else return null;
  	
  	return dimensions;
	}
};
Page.initialize();


// External Links (Searches the page for "external" links and sets them up
// to show a disclosure window, before proceeding to the external URL.)
var ExternalLinks = {
	name: "ExternalLinks",
	version: "0.02",
	url: {
	  external  : "/commentary/market_news_disclosure.html",
	  mixes     : "/individual_investor/pa_sample_mixes_disclosure.html",
	  etf       : "/financial_advisor/fa_etf_disclosure.aspx"
	},
	height: {
	  external  : 500,
	  mixes     : 500,
	  etf       : 300
	},
	initialize: function() {
	  if ("console" in window) console.log(this.name + " (version " + this.version + ") has initialized.");
	},
	onDomLoaded: function(evt) {
		var links = document.getElementsByTagName("a");
		for (var i = 0; i < links.length; i++) {
			if (links[i].getAttribute("rel") == "external" ||
			    links[i].getAttribute("rel") == "mixes" ||
			    links[i].getAttribute("rel") == "etf") {
				links[i].onclick = this.onLinkClick.bind(links[i]);
			}
		}
	},
	onLinkClick: function(evt) {
		var params = {};
		var parentClassName = String(this.parentNode.className);
		if (parentClassName.indexOf("video") != -1) {
			params.type = "video";
		}
		ExternalLinks.showDisclosure(this.getAttribute("rel"), this.href, params);
		return false;
	},
	showDisclosure: function(type, href, params) {
	  if (params == null) params = {};
		var dimensions = Page.getDimensions();
		params.width = dimensions.width;
		params.height = dimensions.height;
		
		var serializedParams = "";
		for (var prop in params) {
			serializedParams += "&" + prop + "=" + params[prop];
		}
		
		var windowFeatures = 
			"scrollbars=yes" + "," + 
			"resizable=yes";
		popWindow(this.url[type] + "?url=" + encodeURIComponent(href) + serializedParams, "disclosure", 500, this.height[type], windowFeatures);
	},
	onAcceptDisclosure: function() {
		var url = unescape(Page.getQueryStringValue('url'));
		var type = Page.getQueryStringValue('type');
		
		if (type == "video") {
			window.opener.location = url;
		} else {
			var width = Page.getQueryStringValue('width');
			var height = Page.getQueryStringValue('height');
			if (width == null) {
			  width = 700;
			}
			if (height == null) {
			  height = 500;
			}
			var windowFeatures = 
				"toolbar=yes" + "," + 
				"scrollbars=yes" + "," + 
				"location=yes" + "," + 
				"statusbar=yes" + "," + 
				"menubar=yes" + "," + 
				"resizable=yes";
			popWindow(url, "externalsite", width, height, windowFeatures);
		}
		
  	window.close();
  	return false;
	}
};
ExternalLinks.initialize();
Page.addEventListener("load", ExternalLinks.onDomLoaded.bind(ExternalLinks));


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////
function CreateBookmarkLink() {
    // Blogger - Replace with <$BlogItemTitle$> 
    // MovableType - Replace with <$MTEntryTitle$>
    title = document.title.toString()  // Get the title of the webpage.
    url = window.location.protocol + "//" + window.location.host
                                   + "/" + window.location.pathname;
    // Blogger - Replace with <$BlogItemPermalinkURL$> 
    // MovableType - Replace with <$MTEntryPermalink$>
    // WordPress - <?php bloginfo('url'); ?>
    if (window.sidebar) { // Mozilla Firefox Bookmark
        window.sidebar.addPanel(title, url, "");
    } else if (window.external) { // IE Favorite
        window.external.AddFavorite(url, title);
    } else if (window.opera && window.print) { // Opera Hotlist
        return true;
    }
}
//      if (window.external) {
//          document.write('<a href = "javascript:CreateBookmarkLink()");">Add to Favorites</a>');
//      } else if (window.sidebar) {
//          document.write('<a href = "javascript:CreateBookmarkLink()");">Bookmark Page</a>');
//      } else if (window.opera && window.print) {
//          document.write('<a href = "javascript:CreateBookmarkLink()");">Add Bookmark</a>');
//      }
