/**
 * Copyright © 2003 - 2006  Internet Shopping Enterprises, Inc. All Rights Reserved
 */

var VT_HIDE = "Hide";
var VT_SHOW = "View";

var ts = (new Date()).getTime();
var xmlProgIds = new Array("MSXML3.XMLHTTP", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
var req = null;
function assignReq() {

	if (null != req && 'undefined' != typeof(req)) return; // already assigned

	if ('undefined' != typeof(window.XMLHttpRequest)) {
		assignReqXMLHttpRequest();
	}
	else
	if ('undefined' != typeof(window.ActiveXObject)) {
		assignReqActiveXObject();
	}
	else {
		req = null;
	}
	if (null == req || 'undefined' == typeof(req)) {
		// alert("@debug::assignReq():XMLHttpRequest Unavailable.");
	}
}
function assignReqActiveXObject() {
	for (var i=0;i<=xmlProgIds.length;i++) {
		try {
			req = new ActiveXObject(xmlProgIds[i]);
		}
		catch (e) {
			req = null;
		}
		if (null != req && 'undefined' != typeof(req)) {

			// alert("@debug::assignReqActiveXObject::req assigned ["+i+"]:["+xmlProgIds[i]+"]");

			break;
		}
	}
}
function assignReqXMLHttpRequest() {
	req = new XMLHttpRequest();
}

var m_query="";
function loadRzpRqst(q) {
	// alert("@debug::loadRzpRqst(\""+q+"\")::initiating query...");

	m_query = q;
	assignReq();

	if (null == req || 'undefined' == typeof(req)) return;

/*
/search/search?where=RedZeePedia&query=&ts=240
*/
	var url
		// = "/search/pedia/pedia.wikipedia.com.pl?origination=client&query="
		= "/search/search?where=RedZeePedia&query="
		+ m_query // + encodeURIComponent(m_query)
		+ "&ts=" + ts;

	// alert("@debug::loadRzpRqst(\""+q+"\")::url:\n"+url);

	req.open("GET", url, true);
	req.onreadystatechange = rzp_onrsc;
	req.send(null);

	// alert("@debug::loadRzpRqst(\""+q+"\")::SENT");
}

function loadRzpXmlResp() {
	if (req.readyState == 4) {
		if (req.status != 200) {
			// alert("@debug::loadRzpXmlResp::EXCEPTION![Invalid HTTP STATUSCD:"+req.status+"]");
			return;
		}
	}
	else {
		return;
	}

	if (null == req.responseXML.documentElement || "empty" == typeof(req.responseXML.documentElement)) {
		// alert("@debug::loadRzpXmlResp::EXCEPTION![INVALID req.responseXML.documentElement]");
		return;
	}

	// <PediaResult> / <Result>
	// var rnds = req.responseXML.documentElement.selectNodes("/ArrayOfPediaResult/PediaResult/Result");
	var rnds = req.responseXML.documentElement.childNodes;
//	var xmlstr = req.responseXML.documentElement.xml;
//	alert("@debug::loadRzpXmlResp(@readyState="+req.readyState+")::query complete ["
//		+ rnds.length
//		+ "] childNodes nodes:\n\n"
//		+ xmlstr);

	var qry = m_query;
	qry = qry.replace(/ /gi, "%20");
	qry = qry.replace(/%20/gi, "%20%2B");
	qry = qry.replace(/\+/gi, "%20%2B");

	var htmlstr = "";
	htmlstr += "<table>";

	for (var i=0,l=rnds.length;i<l;i++) {

		if ("PediaResult" != rnds[i].nodeName) continue;

		var rnd = rnds[i];
		rnd = selNode(rnd, "Result");
		if (null == rnd) continue;
		rnd = rnd.firstChild;
		if (null == rnd) continue;
		var res = rnd.nodeValue;

		res = res.replace(/web&query=/gi, "web&query=%2B"+qry+"%20");

		var sdx = res.indexOf(' ');
		if (0 < sdx) {
			if ("<a" == res.substr(0, 2)) {
				res
					= "<a style=\"font-weight:bold;\""
					+ res.substr(2);
			}
			else {
				res
					= "<strong>"
					+ res.substr(0, sdx)
					+ "</strong>"
					+ res.substr(sdx);
			}
		}
		htmlstr += "<tr><td style='text-indent:-8px;padding-left:8px;font-family:tahoma;font-size:8pt;color:#333333;'>";
		htmlstr += res;
		htmlstr += "</td></tr>";
	}
	htmlstr += "</table>";

	// alert("@debug::loadRzpXmlResp()::html complete\n\n"+htmlstr);

	var respdiv = document.getElementById("divRedZeePedia");
	respdiv.innerHTML = htmlstr;
}

function rzp_onrsc() {
	try {
		loadRzpXmlResp();
	}
	catch (e) {
		// alert("@debug::rzp_onrsc::EXCEPTION!["+e.description+"]");
	}
}

function queryPedia(q) {
	try {
		var trzp=null;
		trzp = document.getElementById("tblRzpResults");
		if (trzp) {
			// alert("@debug::queryPedia(): trzp LOADED server side.");
		}
		else {
			// alert("@debug::queryPedia(): trzp NOT loaded");

			var drzp = document.getElementById("divRedZeePedia");
			drzp.innerHTML = "<table height=\"86px\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td align=\"left\" valign=\"bottom\"><embed width=\"130\" height=\"20\" align=\"left\" src=\"/flash/redzeepediamovie.swf\" border=\"0\"></td></tr></table>";
			loadRzpRqst(q);
		}
	}
	catch (e) {
		// alert(e.description);
	}
}

function toggleRzp() {

	// get isRzpVisible
	var v = isRzpVisible();

	// toggle isRzpVisible
	v = 1 == v ? 0 : 1;

	// update isRzpVisible
	setRzpVisible(v);

	// show/hide
	var rs = document.getElementById("divRedZeePedia");
	var rh = document.getElementById("divRedZeePediaHidden");
	if (1 == v) {
		rs.style.display = "block";
		rh.style.display = "none";
	}
	else {
		rs.style.display = "none";
		rh.style.display = "block";
	}

	// set cookie
	var d = new Date();
	d.setUTCFullYear( (1-0) + d.getUTCFullYear() );
	document.cookie = "rzp="+escape(v)+";"+"expires="+d.toGMTString()+";";
}

function isRzpVisible() {
	var e = document.getElementById("aToggleRzp");
	if (e && e.innerHTML == VT_SHOW) {
		return 0;
	}
	else {
		return 1; // default
	}
}
function setRzpVisible(v) {
	var e = document.getElementById("aToggleRzp");
	if (e) {
		if (0 == v) {
			e.innerHTML = VT_SHOW;
		}
		else {
			e.innerHTML = VT_HIDE;
		}
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

function selNode(node, selName) {
	for (var i=0,l=node.childNodes.length;i<l;i++) {
		if (selName == node.childNodes[i].nodeName) return node.childNodes[i];
	}

	return null;
}

function getCDataValue(node) {
	for (var i=0,l=node.childNodes.length;i<l;i++) {
		if ("CDATASection" == node.childNodes[i].nodeType)
			return node.childNodes[i].nodeValue;
		if ("#cdata-section" == node.childNodes[i].nodeName)
			return node.childNodes[i].nodeValue;
	}
	return null;
}

function getXmlStr(n) {
	var xmlStr = "<"+n+">::<"+n.nodeName+">::<"+n.nodeValue+">\n";
	for (var i=0,l=n.childNodes.length;i<l;i++) {
		xmlStr += getXmlStr(n.childNodes[i]);
	}
	return xmlStr;
}