var reimers = {
	"ajax" : {
		"xhr" : function() {
		    var objXMLHttp=null;
		    if ( window.XMLHttpRequest ) {
				objXMLHttp=new XMLHttpRequest();
	        } else if ( window.ActiveXObject ) {
	            try {
		           objXMLHttp = new ActiveXObject( "Msxml2.XMLHTTP" );
				} catch( e ) {
					try {
						objXMLHttp = new ActiveXObject( "Microsoft.XMLHTTP" );
					} catch( e ) { }
				}
			}
			return objXMLHttp;
		},
		
		"getPage" : function(url,returnfunction,async){
			var asyncReq = (async == null)? true : async;
			var xmlHttp = reimers.ajax.xhr();
			if ( xmlHttp == null ) {
				alert ("Browser does not support HTTP Request");
				return;
			}
			url=url+"&sid="+Math.random();
			xmlHttp.onreadystatechange=returnfunction;
			xmlHttp.open("GET",url,asyncReq);
			xmlHttp.send(null);
		},
		
		"postForm" : function(url,form,returnfunction){
			var xmlHttp = reimers.ajax.xhr();
			if ( xmlHttp == null ) {
				alert ("Browser does not support HTTP Request");
				return;
			}
			url=url+"?sid="+Math.random();
			xmlHttp.onreadystatechange=returnfunction;
			xmlHttp.open("POST",url,true);
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlHttp.setRequestHeader("Content-length", form.length);
			xmlHttp.setRequestHeader("Connection", "close");
			xmlHttp.send(form);
		},
		
		"cross_domain" : function(id,url,callback){
			var theHead = reimers.ui.tag('head')[0];
			var cdScript = reimers.ui.tagElm('script',theHead);
			if(cdScript != null){
				theHead.removeChild(cdScript);
			}
			var newScript = document.createElement('script');
			newScript.id = id;
			newScript.type = 'text/javascript';
			newScript.src = url;
			theHead.appendChild(newScript);
		}
	}, //End of ajax
	
	"ui" : {
		"elm" : function(name,parent) {
			if(!parent){ parent = document; }
			else if(typeof(parent).toLowerCase() == 'string') { parent = document.getElementById(parent); }
			return parent.getElementById(name);
		},
		
		"tagElm" : function(tag,id,parent){
			var tagList = reimers.ui.tag(tag,parent);
			for(var i = 0; i < tagList.length; i++){
				if(tagList[i].id == id) { return tagList[i]; }
			}
			return null;
		},
		
		"tag" : function(name,parent) {
			if(parent == null) { parent = document; }
			else if(typeof(parent).toLowerCase() == 'string') { parent = document.getElementById(parent); }
			return parent.getElementsByTagName(name);
		},
		
		"tagByType" : function(name,type,parent){
			var tags = reimers.ui.tag(name,parent);
			var results = [];
			for(var i = 0; i < tags.length; i++){
				if(tags[i].getAttribute("type").toLowerCase() == type.toLowerCase()){
					results.push(tags[i]);
				}
			}
			return results;
		},
		
		"toggle" : function(name) {
			var theElement = reimers.ui.elm(name);
			if(theElement.style.display == '') {
				theElement.style.display = 'none';
			} else {
				theElement.style.display = '';
			}
			return theElement;
		},
		
		"selectAllCheckboxes" : function(container){
			container = reimers.ui.elm(container);
			var boxes = reimers.ui.tagType("input","checkbox",container);
			for(var i = 0; i < boxes.length; i++){
				boxes[i].checked = 'checked';
			}
		},
		
		"clearAllCheckboxes" : function(container) {
			container = reimers.ui.elm(container);
			var boxes = reimers.ui.tagType("input","checkbox",container);
			for(var i = 0; i < boxes.length; i++){
				boxes[i].checked = '';
			}
		}
	}, //End of ui.
	
	"log" : {
		
		"write" : function(value) {
			if(UserAgent.toLowerCase().indexOf('firefox') != -1){
				console.log(value);
			}
		}
		
	} //End of log
} //End of reimers