var sb = new Object();

// Function to run at start up
sb.run = function() {
	sb.parse_ajax_links();
	sb.round_corners();
	//sb.ksa = setTimeout("sb.keep_session_active()", sb.ksa_time);
}

// Add cutom attributes for click events on tags
sb.parse_ajax_links = function() {
	
	// Parse Anchor Links
	var a = document.getElementsByTagName("a");
	for (var i = 0; i < a.length;i ++) {
		
		// Set variables
		c = a[i];
		c.oc = c.getAttribute("onclick") ? c.getAttribute("onclick") : "";
		c.or = c.oc;
		
		// This will choose which ajax page to load when clicked, and where
		if (c.getAttribute("clicktoload")) {
			c.href = "#";
			c.oc += "sb.load('"+c.getAttribute("clicktoload")+"', '"+c.getAttribute("datatopost")+"', '"+c.getAttribute("wheretoload")+"');";
			c.rf = 1;
		}
		
		// This will show an element with the chosen ID when clicked
		if (c.getAttribute("clicktoshow")) {
			c.href = "#";
			c.oc += "sb.show('"+c.getAttribute("clicktoshow")+"');";
			c.rf = 1;
		}
		
		// Set the onclick event
		if (c.oc && c.or != c.oc) {
			c.click = c.oc;
			c.setAttribute("onclick", c.click+(c.rf ? "return false;" : ""));
			if (ie) {
				c.onclick = sb.onclick_ie;
			}
		}
	}
	
	// Parse Anchor Links
	var b = document.getElementsByTagName("input");
	for (var i = 0; i < b.length;i ++) {
		
		// Set variables
		c = b[i];
		c.oc = c.getAttribute("onclick") ? c.getAttribute("onclick") : "";
		c.or = c.oc;
		
		// This will choose which ajax page to load when clicked, and where
		if (c.getAttribute("clicktosubmit")) {
			c.oc += "sb.formsubmit('"+c.getAttribute("clicktosubmit")+"');";
		}
		
		// Set the onclick event
		if (c.oc && c.or != c.oc) {
			c.click = c.oc+(c.rf ? "return false;" : "");
			c.setAttribute("onclick", c.click);
			if (ie) {
				c.onclick = sb.onclick_ie;
			}
		}
	}
}

// Onclick workaround for IE
sb.onclick_ie = function() {
	eval(this.click);
}

// Round corners using clever images
sb.round_corners = function() {
	d = document.getElementsByTagName("div");
	for (var i = 0; i < d.length; i ++) {
		if (d[i].className.indexOf("contain") > -1) {
			
			/*
			// Create round elements
			r1 = document.createElement("span");
			r1.className = "ci t l";
			r2 = document.createElement("span");
			r2.className = "ci t r";
			r3 = document.createElement("span");
			r3.className = "ci b l";
			r4 = document.createElement("span");
			r4.className = "ci b r";
			
			// Append those elements to the container
			d[i].appendChild(r1);
			d[i].appendChild(r2);
			d[i].appendChild(r3);
			d[i].appendChild(r4);
			*/
			
			d[i].style.MozBorderRadius = "5px";
			
		}
	}
}

// Show element
sb.show = function(e_id) {
	s = e_id.split(";");
	for (var i = 0;i < s.length;i ++) {
		e = document.getElementById(s[i]);
		if (!e) sb.error("That element, "+s[i]+", does not appear to exist.");
		else e.style.display = "block";
	}
}

// Load data into element
sb.load = function (p, d, e) {
	if (d == "null" || !d || d == "undefined") d = "";
	if (e == "null" || !e || e == "undefined") e = false;
	if (e) document.getElementById(e).innerHTML = "loading...";
	Ajax.Request(p, d, e, "sb.parse_ajax_links();");
}

// Display Errors
sb.error = function (t) {
	alert(t);
	return false;
}

// Submit Ajax Form
sb.formsubmit = function (f) {
	var form = document.getElementById(f);
	if (!form) return sb.error("That form ("+f+") doesn't exist.");
	var a = form.getAttribute("action");
	if (!a) return sb.error("This form has no action. ("+f+")");
	var t = sb.merge_array(form.getElementsByTagName("input"), form.getElementsByTagName("textarea"), form.getElementsByTagName("select"));
	var el = [];
	var c = 0;
	for(var i = 0; i < t.length; i ++) {
		var n = t[i].getAttribute("name");
		var v = t[i].value;
		if (n) el[c++] = n+"="+escape(v);
	}
	p = el.join("&");
	Ajax.Request(a, p);
}

// Merge Arrays
sb.merge_array = function (obj1, obj2, obj3) {
	var i;
	var arr = new Array();
	var len1 = obj1.length;
	var len2 = obj2.length;
	var len3 = obj3.length;
	for (i=0; i < len1; i++) {
		arr.push(obj1[i]);
	}
	for (i=0; i < len2; i++) {
		arr.push(obj2[i]);
	}
	for (i=0; i < len3; i++) {
		arr.push(obj3[i]);
	}
	return arr;
}

// Keep session active using timed ajax function
sb.keep_session_active = function() {
	var d = new Date();
	t = (d.getTimezoneOffset() / 60);
	t += 0 - (t * 2);
	Ajax.Request("ksa", "t="+t);
	sb.ksa = setTimeout("sb.keep_session_active();", sb.ksa_time);
}

// Intialize the functions on page load
window.onload = sb.run;


/*  -  -  -  -  -  -  -  -  -  -  -  |
|									 |
|  	  Ajax Script					 |
|	  Programmed by Marc Qualie		 |
|									 |
|  -  -  -  -  -  -  -  -  -  -  -  */

// Variables
var xr = new Object();
var pageToPost = false;
var ajxt = false;
var xri = 0;
var ie = document.all ? true : false;

// Create Ajax Class
var Ajax = new Object();
Ajax.Request = function(ajxp, ajxd, ajxi, ajxe, ajxl){
	
	// Create a while loading function here
	xri ++;
	
	// Prepare the request
	ajaxFolder = "ajax";
	ajxData = ajxd ? "fromAjax=1&reqid="+xri+"&"+ajxd : "fromAjax=1&reqid="+xri ;
	pageToPost = (ajxp.indexOf(".sb") > -1) ? "/"+ajaxFolder+"/"+ajxp : (ajxp.indexOf("http://") == 0 ? "/"+ajaxFolder+"/external.sb?u="+escape(ajxp) : "/"+ajaxFolder+"/"+ajxp+".sb");
	
	// Create Request Object
	xr[xri] = false;
	xr[xri] = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	xr[xri].open("POST", pageToPost, true);
	xr[xri].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xr[xri].setRequestHeader("Content-length", ajxData.length);
	xr[xri].send(ajxData);
	
	// Handle The Response
	xr[xri].temp = [ajxp, ajxi, ajxe];
	xr[xri].onreadystatechange = ie ? new Ajax.Response(xri) : Ajax.Response(xri);
}

// Response Function
Ajax.Response = function(xri_r) {
	
	// Get variables from temp memory
	ajxp_r = xr[xri_r]["temp"][0];
	ajxi_r = xr[xri_r]["temp"][1];
	ajxe_r = xr[xri_r]["temp"][2];
	
	// Make sure data is there
	if (xr[xri_r].readyState == 4) {
		if (xr[xri_r].status == 200) {
			ajxt = xr[xri_r].responseText;
			if (document.getElementById(ajxi_r)) {
				document.getElementById(ajxi_r).setAttribute("current_url", ajxp_r);
				document.getElementById(ajxi_r).innerHTML = ajxt;
				while (ajxt.indexOf("<script") > -1) {
					script_open = ajxt.indexOf('<script');
					script_start = (ajxt.indexOf('>', script_open) + 1);
					end_script = ajxt.indexOf('</script>', script_start);
					sub_str = ajxt.substr(script_start, end_script - script_start);
					sub_str2 = ajxt.substr(script_open, end_script - script_open + 10);
					eval(sub_str);
					ajxt = ajxt.replace(sub_str2, "");
				}
			} else {
				try {
					eval(ajxt);
				}
				catch(err) {
					return false;
				}
			}
			if (ajxe_r) {
				try {
					eval(ajxe_r);
				}
				catch(err) {
					return false;
				}
			}
		} else {
			//alert("Sorry, that page could not be found!");
			return false;
		}
	} else {
		setTimeout("Ajax.Response('"+xri_r+"');", 100);
	}
}