///Author: Jerome S. Conde
///UI Developer
///Impact Proximity

var com = new Object();
com.iprox = new Object();

com.iprox = (function() {
	
	var funcs = {};

	/// All functions related to Browser	
	function Browser(){}///Browser constructor
		Browser.prototype.getAgent = function (){
			return navigator.userAgent.toLowerCase();
		};
		Browser.prototype.getName =  function (){
			y=this.getAgent();
			if(y.indexOf("msie")>-1) return "MSIE";
			if(y.indexOf("firefox")>-1) return "Firefox";
			if(y.indexOf("netscape")>-1) return "Netscape";
			if(y.indexOf("opera")>-1) return "Opera";
			if(y.indexOf("safari")>-1) return "Safari";
		};
		Browser.prototype.getVersion = function (){ 
			z = this.getAgent();
			if(this.isIE()){x=z.indexOf("msie"); return z.substring(x+5,x+8);}
			if(this.isGecko()){
				if(z.indexOf("firefox")>-1){x=z.indexOf("firefox"); return z.substring(x+8,x+11);}
				if(z.indexOf("netscape")>-1){x=z.indexOf("netscape"); return z.substring(x+9,x+12);}
				if(z.indexOf("safari")>-1){x=z.indexOf("safari"); return z.substring(x+7,x+8);}
			}
			if(this.isOpera()){x=z.indexOf("opera"); return z.substring(x+6,x+9);}	
		};
		Browser.prototype.isMac = function (){return this.getAgent().indexOf("mac")>-1 ? true : false;};
		Browser.prototype.isIE = function (){return this.getAgent().indexOf("msie")>-1 ? true : false;};
		Browser.prototype.isIE6	= function (){return this.isIE()&&this.getVersion()=="6.0";};
		Browser.prototype.isGecko =	function (){return this.getAgent().indexOf("gecko")>-1 ? true : false;};
		Browser.prototype.isFirefox = function (){return this.getAgent().indexOf("firefox")>-1 ? true : false;};
		Browser.prototype.isNetscape = function (){return this.getAgent().indexOf("firefox")>-1 ? true : false;};
		Browser.prototype.isOpera = function (){return this.getAgent().indexOf("opera")>-1 ? true : false;};
		Browser.prototype.isSafari = function (){return this.getAgent().indexOf("safari")>-1 ? true : false;};
		Browser.prototype.isModern = function (){
			var y=this;var x = y.isIE()&&parseFloat(y.getVersion())>=6.0||y.getName()=="Firefox"&&parseFloat(y.getVersion())>=1.0;;
			x = x||y.getName()=="Netscape"&&parseFloat(y.getVersion())>=7.0||y.isOpera()&&parseFloat(y.getVersion())>=8.0;
			return x;
		};
	funcs.Browser = Browser;	//add Browser function to iprox collection
	
	function Util(){}///Utility constructor
		Util.prototype.includeJS = function(jsFileSource){
			document.write("\n<script type=\"text/javascript\" src=\"" + jsFileSource + "\">");
			document.write("</script>\n");
		};
		Util.prototype.assignFirstChild = function(){
			var t = new Browser();
			if(t.isIE()){
				uls = document.getElementsByTagName("UL");
				for(var i=0;i<uls.length;i++){
					x = uls[i].getElementsByTagName("LI");
					if(x[0].className.indexOf("FirstChild")<0){
						x[0].className += x[0].className==""? "FirstChild" : " FirstChild";
					}
				}
			}
		};
		Util.prototype.assignLastChild = function(){
			var t = new Browser();
			if(t.isIE() || t.isOpera()){
				uls = document.getElementsByTagName("UL");
				for(var i=0;i<uls.length;i++){
					var lst = uls[i].lastChild;
					if(lst.tagName =="LI"){
						if(lst.className.indexOf("LastChild")<0){
							lst.className += lst.className==""? "LastChild" : " LastChild";
						}
					}
				}
			}
		};
		Util.prototype.assignFirstAndLastChild = function(){
			this.assignFirstChild();
			this.assignLastChild();
		};
		Util.prototype.sfHover = function(IdToHover){ //IdToHover is an array of element IDs to assign sfhover
			var t = new Browser();
			if(t.isIE()){
				for (var j=0; j<IdToHover.length; j++)
				{
					var sfEls = this.getID(IdToHover[j]).getElementsByTagName("LI");
					for (var i=0; i<sfEls.length; i++) {
						sfEls[i].onmouseover=function() {
							this.className+=" sfhover";
						}
						sfEls[i].onmouseout=function() {
							this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
						}
					}
				}
			}
			/**Fix for IE6 bground flicker **/
			var m = document.uniqueID /*IE*/ && document.compatMode /*>=IE6*/ && !window.XMLHttpRequest /*<=IE6*/ && document.execCommand;
			if(!!m){ m("BackgroundImageCache", false, true) /* = IE6 only */ }
		};
		Util.prototype.getID = function(id){
			x = document; return x.getElementById(id) ? x.getElementById(id) : x.all? x.all(id) : null;
		};
		Util.prototype.getClass = function(node,classname){
			var a = [];
			var re = new RegExp('\\b' + classname + '\\b');
			var els = node.getElementsByTagName("*");
			for(var i=0,j=els.length; i<j; i++)
			if(re.test(els[i].className))a.push(els[i]);
			return a;
		};
		Util.prototype.assignBlankTarget = function(classname){
			var links = document.getElementsByTagName("A");
			for(i=0;i<links.length;i++){
				if(links[i].className.indexOf(classname)>-1) links[i].onclick = function(){
					window.open(this.href,"_blank");
					return false;
				};
			}
		};
		Util.prototype.renderFlashObject = function(placeHolder){
			var t = new Browser();
			if(t.isIE){var x = this.getID(placeHolder);
				x.innerHTML = x.innerHTML;
				var z = x.getElementsByTagName("object")[0];
				z.style.display="block";
			}
			if((t.isOpera || t.isFirefox || t.isNetscape) && t.isMac()){
				var x = this.getID(placeHolder);
				y = x.getElementsByTagName("IMG")[0];
				x.innerHTML = "<img src='" +y.src + "' />";
			}
		};

	funcs.Util = Util;
	
	return funcs;
})();

var ip$ = new com.iprox.Util();

