var ELSP = {};
ELSP.TBL = {};





ELSP.TBL.Feed = ( function() {
	function SendAjax(url, callbackFunction) {
		document.getElementById('RecentBookmarks').innerHTML = "Loading RSS feed..."
		
		if (window.XMLHttpRequest) {
			var request = new XMLHttpRequest();
		} else {
			var request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		request.open("POST", url, true);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		
		request.onreadystatechange = function() {
			if (request.readyState == 4 && request.status == 200) {
				if (request.responseText) {
					ReceiveAjax(request.responseText, callbackFunction);
				}
			} else if (request.readyState == 4) {
				document.getElementById('RecentBookmarks').innerHTML = "<strong>ERROR: Could not load RSS feed...</strong>"
			} else {
				document.getElementById('RecentBookmarks').innerHTML = "<strong>Loading RSS feed...</strong>"
			}
		}
		request.send(null);
	}
	
	function ReceiveAjax(response, callbackFunction) {
	   if (window.ActiveXObject) {
		  var doc = new ActiveXObject("Microsoft.XMLDOM");
		  doc.async = "false";
		  doc.loadXML(response);
	   } else {
		  var parser = new DOMParser();
		  var doc = parser.parseFromString(response,"text/xml");
	   }
	
	   callbackFunction(doc.documentElement);
	}
	
	function ValueFromTagName(item, tagname) {
	   var val = item.getElementsByTagName(tagname);
	   return val[0].firstChild.nodeValue;
	}
	
	function ParseData(data) {
		var items = data.getElementsByTagName('item');
		var output = '<ul class="postsList">';
		
		for (var i = 0; i < items.length; ++i) {
		var title = ValueFromTagName(items[i], 'title');
		var link = ValueFromTagName(items[i], 'link');
		var description = ValueFromTagName(items[i], 'description');
		
		output += '<li>';
		output += '	<h3 class="heading2">';
		output += '		<a href ="' + link + '" target="_blank">' + title + '</a>';
		output += '	</h3>';
		if (description != '') {
			output += '	<p>';
			output += '		<a href ="' + link + '" target="_blank">' + description + '</a>';
			output += '	</p>';
		}
		output += '</li>';
	   }
	
	   output += '</ul>';
	
	   var RSSOutput = document.getElementById('RecentBookmarks');
		   RSSOutput.innerHTML = output;
	}



	/* START PUBLIC */
	return {
		Print: function( url ) {
			if (document.getElementById('RecentBookmarks')) {
				var GetFeed = url;
				SendAjax('/Scripts/getfeed.php?url=' + escape(url), ParseData);
			}
		}
	}
	/* END PUBLIC */
})();





ELSP.TBL.InputWatermark = ( function() {
	/* START PUBLIC */
	return {
		Set: function() {
			var defaultValue = " Enter keyword";
			jQuery("#s").val(defaultValue);
			jQuery("#s").click( function() {
				if (jQuery("#s").val() == defaultValue) {
					jQuery("#s").val("");
				}
			})
		},

		SetEventPlaceCursorInSearch: function() {
			jQuery("#s").focus();
		}
	}
	/* END PUBLIC */
})();






/**
 * @namespace Fallback for CSS advanced media query
 * @class
 * @since 1.0 - 2010-08-21
 * @version 1.0 - 2010-08-21
 */
ELSP.TBL.MediaQueryFallBack = ( function() {
	var config = {
		cssScreen: "/css/screen.css",
		cssHandheld: "/css/handheld.css",
		mobileMaxWidth: 660,
		testDivClass: "cssLoadCheck",
		dynamicCssLinkId: "DynCssLink"
	}
	var noMediaQuery = false;
	var delay;
	var currentCssMediaType;

	// Adding events to elements in the DOM without overwriting it
	function addEvent(element, newFunction, eventType) {
		var oldEvent = eval("element." + eventType);
		var eventContentType = eval("typeof element." + eventType)
		
		if ( eventContentType != 'function' ) {
			eval("element." + eventType + " = newFunction")
		} else {
			eval("element." + eventType + " = function(e) { oldEvent(e); newFunction(e); }")
		}
	}
	
	// Get the the inner width of the browser window
	function getWindowWidth() {
		if (window.innerWidth) {
			return window.innerWidth;
		} else if (document.documentElement.clientWidth) {
			return document.documentElement.clientWidth;
		} else if (document.body.clientWidth) {
			return document.body.clientWidth;
		} else{
			return 0;	
		}
	}
	


	/* Start public */
	return {
  		/**
		 * Adds link to CSS in the head if no CSS is loaded
		 *
		 * @since 1.0 - 2010-08-21
		 * @version 1.0 - 2010-08-21
		 * @param {String} cssScreen URL to CSS file for larger screens
		 * @param {String} cssHandheld URL to CSS file for smaller screens
		 * @param {Number} mobileMaxWidth Maximum  width for handheld devices
		 * @example
		 * ELSP.TBL.MediaQueryFallBack.LoadCss('/screen.css', 'mobile.css', 480)
		 */
		LoadCss: function(cssScreen, cssHandheld, mobileMaxWidth) {
			// Set config values
			if (typeof(cssScreen) != "undefined") {
				config.cssScreen = cssScreen;	
			}
			if (typeof(cssHandheld) != "undefined") {
				config.cssHandheld = cssHandheld;	
			}
			if (typeof(mobileMaxWidth) != "undefined") {
				config.mobileMaxWidth = mobileMaxWidth;	
			}
			
			// Check if CSS is loaded
			var cssloadCheckNode = document.createElement('div');
			cssloadCheckNode.className = config.testDivClass;
			document.getElementsByTagName("body")[0].appendChild(cssloadCheckNode);
			if (cssloadCheckNode.offsetWidth != 100 && noMediaQuery == false) {
				noMediaQuery = true;
			}
			cssloadCheckNode.parentNode.removeChild(cssloadCheckNode)
			
			if (noMediaQuery == true) {
				// Browser does not support Media Queries, so JavaScript will supply a fallback 
				var cssHref = "";
				
				// Determines what CSS file to load
				if (getWindowWidth() <= config.mobileMaxWidth) {
					cssHref = config.cssHandheld;
					newCssMediaType = "handheld";
				} else {
					cssHref = config.cssScreen;
					newCssMediaType = "screen";
				}
				
				// Add CSS link to <head> of page
				if (cssHref != "" && currentCssMediaType != newCssMediaType) {
					if (document.getElementById(config.dynamicCssLinkId)) {
						var oldCssNode = document.getElementById(config.dynamicCssLinkId)
						oldCssNode.parentNode.removeChild(oldCssNode);
					}
					var cssNode = document.createElement('link');
					var windowWidth;
					cssNode.type = 'text/css';
					cssNode.rel = 'stylesheet';
					cssNode.media = 'screen, handheld';
					cssNode.id = config.dynamicCssLinkId;
					cssNode.href = cssHref;
					document.getElementsByTagName("head")[0].appendChild(cssNode);
					
					currentCssMediaType = newCssMediaType;
				}
				
				// Check screen size again if user resizes window 
				addEvent(window, ELSP.TBL.MediaQueryFallBack.LoadCssDelayed, 'onresize')
			}
		},
		
  		/**
		 * Runs LoadCSS after a short delay
		 *
		 * @since 1.0 - 2010-08-21
		 * @version 1.0 - 2010-08-21
		 * @example
		 * ELSP.TBL.MediaQueryFallBack.LoadCssDelayed()
		 */
		LoadCssDelayed: function() {
			clearTimeout(delay);
			delay = setTimeout( "ELSP.TBL.MediaQueryFallBack.LoadCss()", 100)
		}
		
	}
	/* End public */
})();

