$ = function(target) {
	return document.getElementById(target);	
}


var Working = '<img src="gfx/working.gif" alt="Working..." />';

var Elem = {
	shown : "elemShown"
	,
	hidden : "elemHidden"
	,
	show : function(target) {
		$(target).className = this.shown;
	}
	,
	hide : function(target) {
		$(target).className = this.hidden;	
	}
	,
	showHide : function(target) {
		var current = $$(target).className;
		if(current == this.hidden) {
			this.show(target);	
		}
		else {
			this.hide(target);
		}
	}
}

var FormRB = {
	length : "1"
	,
	check : function(target, fields) {
		var check = Array();
		var f = document.forms[target];
		for(i=0; i<fields.length; i++) {
			var field = fields[i];
			var elem = f.elements[field];
			var value = elem.value;
			var defaultValue = elem.defaultValue;
			
		if(field.toLowerCase().indexOf("email") != -1) {
				if(!this.email(target, field)) {
					check.push(field);	
					continue;
				}
			}
		if( (value.length < this.length)  ) {
				check.push(field);	
			}
		
		}
		
		if(check.length == 0) {
			return true;	
		}
		else {
			var out = "Please amend the following before submitting:\n";
			for(i=0; i<check.length; i++) {
				out +=  check[i]+" \n";
			}
			alert(out);
			f.elements[check[0]].focus();
			return false;	
		}
	}	
	,
	email : function(target, field) {
		var email = document.forms[target].elements[field].value;
		var atSym = email.indexOf('@');
		var dot = email.lastIndexOf('.');
		var space = email.indexOf(' ');
		var len = email.length;
		if (atSym < 1 || dot < atSym || len - dot <= 2 || space != -1) {
			return false;
		}
		else { 
			return true; 
		}
	}
	,
	values : function(target) {
		var f = document.forms[target];
		var out = "";
		for(i=0; i<f.elements.length; i++) {
			var elem = f.elements[i].name;
			var value = f.elements[i].value;
			out += "&"+elem+"="+value;
		}
		return out;	
	}
	,
	prep : function(target) {
		var f = document.forms[target];
		for (var i=0; i<f.elements.length; i++) {
			var element = f.elements[i];
			if (element.type == "reset"||element.type == "submit"||element.type == "radio"||element.type == "checkbox") { continue };
			if (!element.defaultValue) { continue };
			element.onfocus = function() {
				if (this.value == this.defaultValue) {
					this.value = "";
				}
			}
			element.onblur = function() {
				if (this.value == "") {
					this.value = this.defaultValue;
				}
			}
		}
	}
	,
	key : function(form) {
		var key = document.createElement("input");
		key.type = "hidden";
		key.value = Site.key;
		key.name = "key";
		$$(form).appendChild(key);
	}
}

function AjaxRB() {
	
	this.setup = function() {
		var requestObj;
		try {
			requestObj = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e) {
			requestObj = new XMLHttpRequest();
		}
		return requestObj;
	}
	
	this.get = function(url, func) {
		var http = this.setup();
		http.open("GET", url, true);
		http.onreadystatechange = function() { func(http); }
		http.send(null);
	}
	
	this.post = function(script, url, func) {
		var http = this.setup();
		http.open("POST", script, true);
		http.onreadystatechange = function() {func(http); }
		http.setRequestHeader("Content-Length", script.length + url.length + 100);
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http.setRequestHeader("ENCTYPE", "plain/text");
		http.send(url);
	}
}

function Redirect(url) {
	location.href = url;	
}

function ConfirmRB(url, message) {
	if(confirm(message)) {
		Redirect(url);	
	}
}

var DataRB = {
	encode : function(str) {
		var result = "";
		for (i = 0; i < str.length; i++) {
			if (str.charAt(i) == " ") {
				result += "+";
			}
			else {
				result += str.charAt(i);
			}
		}
		return escape(result);
	}
	,
	decode : function(str) {
		var result = str.replace(/\+/g, " ");
		return unescape(result);
	}
}


function ReplaceRB(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

function QueryStringRB (theArgName) {
	sArgs = location.search.slice(1).split('&');
		r = '';
		for (var i = 0; i < sArgs.length; i++) {
			if (sArgs[i].slice(0,sArgs[i].indexOf('=')) == theArgName) {
					r = sArgs[i].slice(sArgs[i].indexOf('=')+1);
					break;
			}
		}
	return (r.length > 0 ? unescape(r).split(',') : '')
}

function Overlay() {
	document.title = "YDNP";
	document.body.style.position = "relative";
	var divTop = document.createElement("div");
	divTop.style.width = "1200px";
	divTop.style.height = "30px";
	divTop.style.position = "absolute";
	divTop.style.background = "#ffffff";
	divTop.style.top = "0px";
	divTop.style.left = "0px";
	document.body.appendChild(divTop);
	var divBottom = document.createElement("div");
	divBottom.style.width = "1200px";
	divBottom.style.height = "130px";
	divBottom.style.position = "absolute";
	divBottom.style.background = "#ffffff";
	divBottom.style.bottom = "0px";
	divBottom.style.left = "0px";
	document.body.appendChild(divBottom);
}


