if (typeof flintbox == "undefined") { var flintbox = { }; }
if (typeof flintbox.widgets == "undefined") { flintbox.widgets = { }; }
if (typeof flintbox.widgets.posting == "undefined") { flintbox.widgets.posting = {

getPostings: function(objParams) {
    var strServiceUrl = "http://www.flintbox.com/rssjs_postings.asp";
	var reqGetPostings;
	var fnProcessGetRequest;
	var dtTemp = new Date();
	var strDate = "&x=" + dtTemp.getYear() + "_" + dtTemp.getMonth() + "_" + dtTemp.getDate() + "_" + dtTemp.getHours() + "_" + dtTemp.getMinutes() + "_" + dtTemp.getSeconds() + "_" + dtTemp.getMilliseconds();
	// ids
	strServiceUrl += "?userId=" + objParams["id"];
	strServiceUrl += "&widgetId=" + objParams["widgetId"];
	// max records
	strServiceUrl += (typeof objParams["maxRecords"] == "number")
		? "&mr=" + objParams["maxRecords"]
		: "&mr=10"; 
	// language
	strServiceUrl += (typeof objParams["language"] == "string")
		? "&lang=" + objParams["language"]
		: "&lang=EN";
	// filter
	var strFilterType = objParams["filterType"];
	var strFilterId = objParams["filterId"];
	if (typeof strFilterType == "string" && typeof strFilterId == "string") {
		switch (strFilterType.toLowerCase()) {
			case "location":
				strServiceUrl += "&lID=" + strFilterId;
				break;
			case "partner":
				strServiceUrl += "&pID=" + strFilterId;
				break;
			case "channel":
				strServiceUrl += "&cID=" + strFilterId;
				break;
		}
	}
	// sort
	if (typeof objParams["sort"] == "string") {
		strServiceUrl += (objParams["sort"].toLowerCase() == "active")
			? "&ob=active"
			: "&ob=date";
	}
	// style
    if (typeof objParams["locationClass"] == "string") {
		strServiceUrl += "&lcn=" + objParams["locationClass"];
	}
	if (typeof objParams["titleClass"] == "string") {
		strServiceUrl += "&tcn=" + objParams["titleClass"];
	}
	if (typeof objParams["itemListClass"] == "string") {
		strServiceUrl += "&ilcn=" + objParams["itemListClass"];
	}
	if (typeof objParams["itemClass"] == "string") {
		strServiceUrl += "&icn=" + objParams["itemClass"];
	}
	if (typeof objParams["alternateItemClass"] == "string") {
		strServiceUrl += "&aicn=" + objParams["alternateItemClass"];
	}
	// keywords
	if (typeof objParams["keywords"] == "string") {
		strServiceUrl += "&kw=" + objParams["keywords"];
	}
	strServiceUrl += strDate;
	
	var objScript = document.createElement("script");
	
	objScript.src = strServiceUrl;
	var fnProcessIE = function() { var p = objParams; if (this.readyState == 'loaded' || this.readyState == 'complete') { flintbox.widgets.posting.processGetRequest(p); } };
	var fnProcessFF = function() { var p = objParams; flintbox.widgets.posting.processGetRequest(p); };
	objScript.onreadystatechange = fnProcessIE;
	objScript.onload = fnProcessFF;
	var objHead = document.getElementsByTagName('head')[0];
	objHead.appendChild(objScript);
},

processGetRequest: function(objParams) {
	try {
		var objWidget = document.getElementById(objParams["widgetId"]);
		if (objWidget) {
			if (objWidget.childNodes.length == 0) {
				var objResponse;
				eval("objResponse = rssjs_" + objParams["widgetId"]);
				var strLocationClass = (typeof objParams["locationClass"] == "string")
					? objParams["locationClass"]
					: "";
				var strTitleClass = (typeof objParams["titleClass"] == "string")
					? objParams["titleClass"]
					: "";
				var strItemListClass = (typeof objParams["itemListClass"] == "string")
					? objParams["itemListClass"]
					: "";
				var strItemClass = (typeof objParams["itemClass"] == "string")
					? objParams["itemClass"]
					: "";
				var strAltItemClass = (typeof objParams["alternateItemClass"] == "string")
					? objParams["alternateItemClass"]
					: strItemClass;
				var blnShowDescription = (typeof objParams["showDescription"] == "boolean")
					? objParams["showDescription"]
					: false;
				
				var reAllowableTag;
				var strLocationHtmlTag = (typeof objParams["locationHtmlTag"] == "string")
					? objParams["locationHtmlTag"]
					: "h1";
				reAllowableTag = new RegExp("^(div|span|h[1-6])$", "gi");
				if (!reAllowableTag.test(strLocationHtmlTag)) {
					strLocationHtmlTag = "h2";
				}
				var strTitleHtmlTag = (typeof objParams["titleHtmlTag"] == "string")
					? objParams["titleHtmlTag"]
					: "h2";
				reAllowableTag = new RegExp("^(div|span|h[1-6])$", "gi");
				if (!reAllowableTag.test(strTitleHtmlTag)) {
					strTitleHtmlTag = "h2";
				}
				
				var strCurrentItemClass = strItemClass;
				if (objResponse.location.length > 0) {
					var objLocationDiv = document.createElement(strLocationHtmlTag);
					objWidget.appendChild(objLocationDiv);
					if (strLocationClass.length > 0) {
						objLocationDiv.className = strLocationClass;
					}
					objLocationDiv.innerHTML = objResponse.location;
				}
				var objTitleDiv = document.createElement(strTitleHtmlTag);
				objWidget.appendChild(objTitleDiv);
				if (strTitleClass.length > 0) {
					objTitleDiv.className = strTitleClass;
				}
				objTitleDiv.innerHTML = objResponse.title;
				if (objResponse.items.length == 0) {
					var objItemDiv = document.createElement("ul");
					objWidget.appendChild(objItemDiv);
					objItemDiv.innerHTML = "No postings found";
				}
				else {
					objItemUL = document.createElement("ul");
					objWidget.appendChild(objItemUL);
					if (strItemListClass.length > 0) {
						objItemUL.className = strItemListClass;
					}
					for (var i = 0; i < objResponse.items.length; i++) {
						var objItemLI = document.createElement("li");
						objItemUL.appendChild(objItemLI);
						if (strCurrentItemClass.length > 0) {
							objItemLI.className = strCurrentItemClass;
							strCurrentItemClass = (strCurrentItemClass == strItemClass)
								? strAltItemClass
								: strItemClass;
						}
						objItemLink = document.createElement("a");
						objItemLI.appendChild(objItemLink);
						objItemLink.href = objResponse.items[i].link;
						objItemLink.innerHTML = objResponse.items[i].title;
						if (blnShowDescription) {
							var strItemDescription = objResponse.items[i].description;
							if (strItemDescription.length > 0) {
								var objItemDescription = document.createElement("span");
								objItemLI.appendChild(objItemDescription)
								objItemDescription.innerHTML = "<br>" + flintbox.widgets.posting.restoreHtml(strItemDescription);
							}
						}
					}
				}
			}
		}
	}
	catch (e) { }
},

createWidget: function (p) {
	var strWidgetId = p["id"];
	if (typeof strWidgetId == "string") {
		flintbox.widgets.posting.count++;
		strWidgetId = "flintboxWidgets_posting_" + p["id"] + "_" + flintbox.widgets.posting.count;
		p["widgetId"] = strWidgetId;
		var strWidgetClass = (typeof p["widgetClass"] == "string")
			? "class=\"" + p["widgetClass"] + "\""
			: "style=\"border:1px solid #000000;width:300px;\"";
		document.write("<div id=\"" + strWidgetId + "\" " + strWidgetClass + "></div>");
		var fnGetPostings = function() { var params = p; flintbox.widgets.posting.getPostings(params); };
		if (typeof window.addEventListener != "undefined") {
			window.addEventListener("load", fnGetPostings, false);
		}
		else {
			if (typeof window.attachEvent != "undefined") {
				window.attachEvent("onload", fnGetPostings);
			}
			else {
				if (window.onload != null) {
					var fnOldOnload = window.onload;
					window.onload = function (e) { fnOldOnload(e); fnGetPostings(); };
				}
				else {
					window.onload = fnGetPostings;
				}
			}
		}
	}
},

restoreHtml: function (h) {
	var re = [
		new RegExp("&lt;(li)&gt;", "gi")
		,new RegExp("&lt;(ol)&gt;", "gi")
		,new RegExp("&lt;(ul)&gt;", "gi")
		,new RegExp("&lt;(br)&gt;", "gi")
		,new RegExp("&lt;(b)&gt;", "gi")
		,new RegExp("&lt;(u)&gt;", "gi")
		,new RegExp("&lt;(i)&gt;", "gi")
		,new RegExp("&lt;(p)&gt;", "gi")
		,new RegExp("&lt;(/li)&gt;", "gi")
		,new RegExp("&lt;(/ol)&gt;", "gi")
		,new RegExp("&lt;(/ul)&gt;", "gi")
		,new RegExp("&lt;(/br)&gt;", "gi")
		,new RegExp("&lt;(/b)&gt;", "gi")
		,new RegExp("&lt;(/u)&gt;", "gi")
		,new RegExp("&lt;(/i)&gt;", "gi")
		,new RegExp("&lt;(/p)&gt;", "gi")
	]
	for (var i = 0; i < re.length; i++) {
		arrMatches = re[i].exec(h);
		if (arrMatches != null) {
			var re2 = new RegExp("&lt;" + arrMatches[1] + "&gt;", "gi");
			h = h.replace(re2, "<" + arrMatches[1] + ">");
		}
	}
	
	// clean up garbage
	var re3 = new RegExp("^&lt;p align=justify&gt;", "gi");
	h = h.replace(re3, "");
	var re4 = new RegExp("&lt;p&gt;$", "gi");
	h = h.replace(re4, "");
	
	return h;
}

}; } // flintbox.widgets.posting


if (typeof flintbox.widgets.posting.count == "undefined") { flintbox.widgets.posting.count = 0; }
