// this script gets loaded multiple times per page; we should only do this once.
if (!window.inOrphanCheck) {
	inOrphanCheck = true;
	var args = getArgs();
	// urls that should do a redirect
	var dynamicContentPageRE = new RegExp("\\/(([a-z]+))\\.jsp", "i");
	var staticContentPageRE = new RegExp("\\/f_(([a-z]+)(_[0-9]+))\\.chtml", "i");
	// only true when filename matches expected patterns: weeds out framesets, index pages, etc.
	var isContentPage = (dynamicContentPageRE.test(document.location.href) || staticContentPageRE.test(document.location.href)) ? true : false;
	// querystring parameters that should cancel redirects
	var cancelledByQueryString = (args.overrideUrl || args.cancelFrames) ? true : false;
	
	// Do not continue if this is not a valid content page,
	// or if redirect was cancelled via a querystring parameter.
	if (isContentPage && !cancelledByQueryString) {
		// urls that should not do a redirect
		var isRedirectServlet = new RegExp("Redirect", "i").test(document.location.href);
		var isCPO = new RegExp("CPOStory", "i").test(document.location.href);
		// do not redirect if content page is already framed
		var contentIsFramed = (isContentPage && (self.name == "content_win")) ? true : false;
		
		// Check to see if content page was opened from a cblt website, anywhere in its opener hierarchy.
		// Error will occur if opening page is in a different domain than this script.
		function isCbltWebsiteDescendent(win) {
			var isDescendent = false;
			try {
				isDescendent = (win.opener && (win.opener.name == "content_win" || win.opener.name == "nav_win" || win.opener.name == "subnav_win")) ? true : false;
				if (!isDescendent && win.opener.opener) isDescendent = isCbltWebsiteDescendent(win.opener);
			} catch (error) {
				// do nothing; last known value of isDescendent is correct
			} finally {
				return isDescendent;
			}
		}
		var isCbltWebsiteChild = isCbltWebsiteDescendent(window);
		
		// Do redirect if content page is not in a popup, is not already framed in,
		// is not a redirect servlet, and is not the CPOStory page.
		if (!isCbltWebsiteChild && !contentIsFramed && !isRedirectServlet && !isCPO) {
			// default redirection is to the HomePage.
			var newUrl = "HomePage_1.chtml";
			var isStatic = staticContentPageRE.test(document.location.href);
			var isDynamic = dynamicContentPageRE.test(document.location.href);
			// pageName is derived from static filenames (f_*FooBar_1*.chtml),
			// but for dynamic files (FooBar.jsp) we must use a pageName qs parameter,
			// or default to filename + "_1" if no parameter exists.
			var pageName = (isStatic) ? RegExp.$1 : ((isDynamic) ? ((args.pageName) ? args.pageName : RegExp.$1 + "_1") : null);
			var pageType = (isStatic || isDynamic) ? RegExp.$2 : null;

			// only attempt redirect if both pageName and pageType were found: no badly formed urls!
			if (pageName && pageType) {
				if ((pageType == "VehicleSearchResults") || (pageType == "VehicleDetails")) {
					// change page_type_layout so the backend works, and send to the redirect page
					var newQueryString = document.location.search.replace(/(page_type_layout=)[^&]*/i, "$1Info_pageFinder");
					newUrl = "Info.jsp" + newQueryString;
				} else {
					newUrl = (pageName) ? ((isStatic) ? document.location.href.replace(/\/f_[a-z]+_[0-9]+\.chtml/i, "/" + pageName + ".chtml") : document.location.href.replace(/\/[a-z]+\.jsp/i, "/" + pageName + ".chtml")) : document.location.href.replace(/\/f_/, "/");
				}
				top.document.location.replace(newUrl);
			}
		}
	}
}

//query string parser from O'reilly JS Book
function getArgs() {
	var args = new Object();
	var query = location.search.substring(1);
	var pairs = query.split("&");

	for(var i = 0; i < pairs.length; i++) {
		var pos = pairs[i].indexOf('=');
		if (pos == -1) continue;
		var argname = pairs[i].substring(0,pos);
		var value = pairs[i].substring(pos+1);
		args[argname] = unescape(value);
	}
	return args;
}
