var RENDERFRAME =  self;

function check_printable() {
	if (getData("printable") == "1") {
		self.print();
	};
}

function textResize(link_obj) {

	var currsize = getData('textsize');
	var newsize = (currsize=="l")?"s":"l";

	setData('textsize',newsize);
	//alert("getData('textsize'):"+getData('textsize'));

	var textsize_nd = getObjByID("textsize_container", self);
	//alert("typeof gloss_def:"+typeof gloss_def);

	if (objP(textsize_nd)) {
		//alert("gloss_def dl_id:"+dl_id);
		setClass(textsize_nd, (newsize=="l")? "largetext":"smalltext");
	};
	var update_count = updateNavLinks(["textsize"]);

	for (var i=0; i<document.forms.length; i++) {
		var f = document.forms[i];
		if (f && objP(f.elements["pid"])) {
			if (!objP(f.elements["textsize"])) {
				
			};
			if (objP(f.elements["textsize"])) {
				f.elements["textsize"].value = newsize;
			};
		};
	};

	return false;



}

// function textHomeResize(link_obj) {  DEFINED IN SEPARETE PAGEs FOR HOME PAGE


//#######################################################
// IMAGE SWAPPING:


function changeImages() {
	if (document.images && (self["IMG_PRELOAD_DONE"] == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	};
}

function preloadImages() {
	self["IMG_PRELOAD_DONE"] = true;
}

function getCacheName(s) {
	var f = getFileName(s);
	var a = f.split("-");
	return a.join("_");
}
self["DEFAULT_SRC"] = {};

function stoImg() {
	if (!objP(self["CACHED_IMG_OBJ"])) {
		self["CACHED_IMG_OBJ"] = new Object();
	};
	var stoImgObj = self["CACHED_IMG_OBJ"]
	//var lnk_in = stoImg.arguments[0];
	var id_in = stoImg.arguments[0];
	if (strP(id_in)) {
		var linkObj = "";
		if (true) {
			//DONE = true;
			//alert("lnk_in:"+lnk_in);
			//alert("lnk_in.onmouseover:"+lnk_in.onmouseover);


			var img_obj = document.images[id_in];
			//alert("img_obj:"+img_obj);
			if (img_obj) {
				var parent_el = img_obj.parentNode;
				if (parent_el && parent_el.nodeName && parent_el.nodeName.toUpperCase() == "A") {
					linkObj = parent_el;
				}
			}
			//alert("linkObj:"+linkObj);
			//alert("linkObj:"+linkObj.nodeName);
			//alert("lnk_in:"+lnk_in);
			//alert("linkObj.onmouseover:"+linkObj.onmouseover);
			//alert("typeof linkObj.onmouseover:"+typeof linkObj.onmouseover);

		}


		if (!linkObj) {return};
		
		var o = {};
		o.orig_src = String(img_obj.src);
			//alert("o.orig_src:"+o.orig_src)
			//alert("img_obj.default:"+img_obj.defaultSrc)

		self["DEFAULT_SRC"][id_in] = String(img_obj.src);
		self["DEFAULT_SRC"][id_in] = String(stoImg.arguments[1]);



		var img_over = stoImg.arguments[2];
		if (img_over) {
			linkObj.onmouseover = function() {
				ci(id_in,img_over);
				//alert("id_in:"+id_in);
				//alert("orig_src:"+orig_src);
				//alert("img_over:"+img_over);
				//alert("src_in:"+stoImg.arguments[1]);
			}
			linkObj.onmouseout = function() {
				ci(id_in,self["DEFAULT_SRC"][id_in]);
				//alert("o.orig_src:"+o.orig_src)
				//alert("orig_src:"+orig_src);
			}

		};


		var img_down = stoImg.arguments[3];
		if (img_down) {
			linkObj.onmousedown = function() {
				ci(id_in,img_down);
			}
			linkObj.onmouseup = function() {
				ci(id_in,self["DEFAULT_SRC"][id_in]);
			}
		};

		for (var i=1; i<stoImg.arguments.length; i++) {
			var src_in = stoImg.arguments[i];
			//var cache_name = id_in+i;
			var cache_name = getCacheName(src_in);
			if (strP(cache_name) && strP(src_in)) {
				if (!objP(stoImgObj[cache_name])) {
					//	
					//	var s = "stoImgObj["+cache_name+"]: ";
					//		s+= "\n src_in:" + src_in;
					//		s+= "\n ("+i+" of "+stoImg.arguments.length+" args)";
					//		s+= "\n typeof stoImgObj["+cache_name+"] : " + typeof stoImgObj[cache_name];
					//		alert(s);
					//	
					if (false) {
						linkObj.onmouseover = function() {
							alert("src_in:"+src_in);
							alert("cache_name:"+cache_name);
						}
					};

					stoImgObj[cache_name] = newImage(src_in);
				};
			};
		}
	};
}

function newImage(arg) {
	if (document.images) {
		var rslt = new Image();
		rslt.src = arg;
		return rslt;
	} else {
		alert("document.images:"+_document.images);
	}
	return false;
}


function ci() {
	//alert('self["IMG_PRELOAD_DONE"]: ' + self["IMG_PRELOAD_DONE"])
	if (document.images && (self["IMG_PRELOAD_DONE"] == true)) {
		for (var i=0; i<ci.arguments.length; i+=2) {
			//alert('ci.arguments[i]: ' + ci.arguments[i])

			var img_obj = document[ci.arguments[i]];
			var img_src = ci.arguments[i+1];

			if ((typeof img_obj == 'object')) {
				//alert("typeof img_src:"+typeof img_src)
				//alert(" img_src:"+ img_src)
			
				img_obj.src = ((typeof img_src == 'object')?img_src.src:img_src)
			};

		}
	}
}



//#######################################################
// INSIDE GLOSSARY ARTICLE:

function check_new_gloss_term() {
	//alert("check_new_gloss_term");
	var page_hash = get_hash(document.location.hash);
	//alert("page_hash:"+page_hash);
	if (page_hash && self["OLD_ID"] != ("dl_" + page_hash)) {
		highlight_gloss_term();
	}
}


function goToGlossLetter(link_obj) {
	var link_hash = get_hash(link_obj.hash);

	//alert("goToGlossLetter, scrollIntoView:"+ typeof document.anchors[link_hash].scrollIntoView);

	if (link_hash) {
		highlight_new_id('letter_' +link_hash);
		var scroll_success = scrollToAnchor(link_hash);
		return !scroll_success;
		//alert("link_hash:"+link_hash)
		//document.location = "#"+link_hash;

	}


}


function scrollToAnchor(anchor_name) {
	if (document.anchors && document.anchors[anchor_name] && funcP(document.anchors[anchor_name].scrollIntoView)) {
		document.anchors[anchor_name].scrollIntoView();
		return true;
	} else {
		return false;
	};
}

function highlight_gloss_term() {
	var stat_mode = self["static_mode"];
	var current_pid = self["pid"];
	//stat_mode == "static" && 
	if (current_pid == "glossary") {
		self.focus();
		var page_hash = get_hash(document.location.hash);
		//alert("page_hash:"+page_hash);

		if (page_hash) {
			highlight_new_id('dl_' + page_hash);
			var scroll_success = scrollToAnchor(page_hash);
		}
		//alert("focusing term: " + page_hash)
	}

}


function highlight_new_id(id_in) {
	if (self["OLD_ID"] != id_in) {
		highlight_def (self["OLD_ID"], false);
		highlight_def (id_in, true);
		//alert("highlighting term")
	}
	self["OLD_ID"] = id_in;
}

function highlight_def (id_in, bool) {
	//alert("id_in:"+id_in);

	var gloss_def = getObjByID(id_in, self);

	//alert("typeof gloss_def:"+typeof gloss_def);

	if (objP(gloss_def)) {
		//alert("gloss_def dl_id:"+dl_id);

		setClass(gloss_def, (bool)? "higlight_definition":"");

	}
}



//#######################################################
// TEXT SEARCH:

function RE(s) {
	return (new RegExp(s,"gi"));
}

function doHEX(s) {
	return('\\x' + s.charCodeAt(0).toString(16));
}

function replace_ignoring_html(s, FT, rpl1, rpl2, d1, d2) {
		var rslt = s;
		if (1) { //add delimiter placeholders
			var re_find = RE("(" +FT+ ")");
			var re_repl = d1+"$1"+d2;
			var rslt = s.replace(re_find,re_repl);
		};
		if (1) { //remove replacements in HTML
			var re_find = RE("(<[^"+d1+d2+">]*)["+d1+"](" +FT+ ")["+d2+"]([^>]*>)");//<[^>]
			var re_repl = "$1$2$3";
			var rpCount = 0;
			while (++rpCount<99 && rslt.match(re_find)) {
				rslt = rslt.replace(re_find,re_repl);
			}
		};
		if (1) { //substitute delimiters
			var re_find = RE("["+d1+"](" +FT+ ")["+d2+"]");
			var re_repl = rpl1 + "$1" + rpl2;
			rslt = rslt.replace(re_find,re_repl);
		};

		//alert(rslt);
	return rslt;
}


function highlight_search_term() {
	var s_term = getData('search_term');
	//alert("highlight_search_term: " + s_term);
	if (s_term) {
		doHighlight('kw_td', s_term);
		doHighlight('desc_td', s_term);
		doHighlight('article_content', s_term);
	}
}


function doHighlight(html_nd_id, s_term) {

	//alert("doHighlight html_nd_id: " + html_nd_id)
		var html_nd = RENDERFRAME.getObjByID(html_nd_id, self);
//alert("doHighlight html_nd: " + typeof html_nd)

	var d1 = '\xA5'; //
	var d2 = '\xA6'; //



	var FT = s_term.replace(RE('[<>\/\\"\''+d1+d2+']'),""); //eliminate brackets,slashes,quotes,delimiters
	var FT = FT.replace(RE('[^a-zA-Z_]'),doHEX); //escape non-standard chars

	var sitemapObj = RENDERFRAME.getObjByID('sitemap', self);
	
	if (html_nd) {
		var testStr = (typeof html_nd.innerText == "string")?html_nd.innerText:(typeof html_nd.textContent == "string")?html_nd.textContent:html_nd.innerHTML;
		//alert("testStr:"+testStr)
	}
	var re_iframe = RE("(" +"iframe"+ ")");
	var re_find = RE("(" +FT+ ")");


	var is_iframe = (RENDERFRAME.objP(html_nd) && String(html_nd.innerHTML).match(re_iframe));
	//alert("typeof is_iframe:"+typeof is_iframe);

	if (RENDERFRAME.objP(html_nd) && FT && !RENDERFRAME.objP(sitemapObj) && testStr.match(re_find) && !is_iframe) {
		html_nd.innerHTML = replace_ignoring_html(html_nd.innerHTML, FT, "<SPAN class='kw'>", "</SPAN>", d1, d2);
		//alert("html_nd.innerHTML:"+html_nd.innerHTML)

	}
}

function set_date() {
	if (RENDERFRAME.objP(document.searchForm) && RENDERFRAME.objP(document.searchForm.set_when)) {
		var now = new Date();
		with (document.searchForm) {
			 set_pulldown(sd_when, set_when.value);
			 set_pulldown(sd_m, (set_m.value)?set_m.value:(now.getMonth()+1));
			 set_pulldown(sd_d, (set_d.value)?set_d.value:now.getDate());
			 set_pulldown(sd_y, (set_y.value)?set_y.value:now.getFullYear());
		};
	}
}

function set_pulldown(objIn, txt) {
	for (var i=0; i<objIn.length; i++) {
		if (objIn[i].value==txt) {
			//alert("set_pulldown["+i+"], txt:"+txt);
			objIn.selectedIndex=i;
			break;
		};
	};
}




//#######################################################
// IFRAME resizing:


function dbalert(s) {
	// alert(s)
}

function fixHeight(n) {
	return (n>20)?n:20;
}

function do_iframe_resize(w, fid, obj_in) {

	if (typeof w[fid] == 'object' && typeof w[fid].document == 'object' && typeof w[fid].document.location != 'undefined') {
		var iframe_window = w[fid]
		var iframe_obj = getObjByID(fid, w);
		// dbalert("obj_in==iframe_obj: "+(obj_in==iframe_obj));

		if (typeof iframe_obj.style == 'object') {
			if (iframe_window.document.height) {
				var measured_height = iframe_window.document.height;
				// dbalert('MOZ? iframe_window.document.height')
			} else if (iframe_window.document.compatMode && iframe_window.document.compatMode != 'BackCompat') {
				var measured_height = iframe_window.document.documentElement.scrollHeight;
				// dbalert('IE? iframe_window.document.documentElement.scrollHeight')
			} else {
				var measured_height = iframe_window.document.body.scrollHeight;
				// dbalert('IE? iframe_window.document.body.scrollHeight')
			};

			var use_height = fixHeight(parseInt(measured_height) + 40);
			iframe_obj.style.height = use_height + 'px';

			// iframe_obj.height = use_height;


		};

	}

}

function resize_iframe(obj_in) {
	if (top.gTimeoutID) {
		clearTimeout(top.gTimeoutID);
	}
	
	var anonFunc = function() {
		do_iframe_resize(window, "subframe", obj_in);
		//alert("anonFunc do_iframe_resize");
	}
	top.gTimeoutID = setTimeout(anonFunc,200);
	//alert("top.gTimeoutID:"+top.gTimeoutID)
}

//#######################################################
// MAIN, load event handling:

function do_on_rsc() {
	var rs = document.readyState;
	if (!self["readyState_detected"] && (rs == "complete" || rs == "interactive")) {
		//alert("do_on_rsc: " + rs);

		self["readyState_detected"] = true;

		doOnload();

	}
};

function do_on_window_load() {
	//alert("do_on_window_load");
	doOnload();
};


function doOnload() {
	if (!self["ONLOAD_DONE"]) {
		//alert("doOnload");
		highlight_search_term();
		set_date();
		preloadImages();
		highlight_gloss_term();

/*
		if (!self["appendQueryData_done"]) {
			var update_count = updateNavLinks(["textsize","unit","language","aicc_mode"]);
			// alert("update_count:"+update_count)
		};
*/
		setTimeout("check_printable()",200);

		self["ONLOAD_DONE"] = true;
	};
}

function main() {
	//alert("doing main.");

	self.focus();

	//alert("main gp top.ENGINEFRAME:"+top.ENGINEFRAME);

	var loc = (top.ENGINEFRAME && top.ENGINEFRAME.getTransformMode() == "html")?top.document.location:document.location;

	if (typeof self["QS_DATA"] != "object") {
		self["QS_DATA"] = QS_deserialize(get_url_query_fragment(loc));
	} else {
		//alert("QS_DATA already exists.");
	};

	// alert("main document.location:"+document.location)
	// alert("main loc:"+loc)
	// alert("main top.document.location:"+top.document.location)

	// alert("main getData('pid'):"+getData('pid'))

	TRANSFORM_MODE = (getData('transform_mode')=='html')?'html':'asp';

	self["IMG_PRELOAD_DONE"] = false;
	//self["CACHED_IMG_OBJ"] = new Object();
	self["ONLOAD_DONE"] = false;
	
	//############# document.onreadystatechange = do_on_rsc;


	//alert("typeof window.onscroll:"+typeof window.onscroll);
	//alert("typeof document.onscroll:"+typeof document.onscroll);

	//alert("typeof window.onscroll:"+typeof window.onScroll);
	//alert("typeof document.onscroll:"+typeof document.onScroll);


	//window.onscroll = check_new_gloss_term;
	window.onload = do_on_window_load;

//	stoImg("../shell/icon_page_unvisited.gif","../shell/icon_page_visited.gif","../shell/icon_section_unvisited.gif","../shell/icon_section_visited.gif","../shell/icon_leftnav_collapsed.gif","../shell/icon_leftnav_expanded.gif")

	top.document.title = self.document.title;
}

main();

//#######################################################


// alert("article.js loaded.")




