var http = window.location.protocol;

function isNumber (val) {
	return !isNaN (val-0);
}
function isSSL() {
	return window.location.protocol == 'https:';
}
/* Pop window */
function popup(theURL,winName,features) {
	window.open(theURL,winName,features);
	return false;
}
/* confirm link warning */
function confirmLink(theLink, text){
	 var is_confirmed = confirm(text);
	 return is_confirmed;
}
function confirmLink2(link, text){
	 answer = confirm(text);
	 if (answer!=0) {
		  location = link;
	 }
}
/* rollover background functions */
/* using background colour */
function bgOver(obj, over, click, fontover, fontclick) {
	var r = obj.style.backgroundColor;
	
	if(!r.compareColor(click)) {
		obj.style.backgroundColor=over;
		if(fontover)
			obj.style.color=fontover;
	}else{
		obj.style.backgroundColor=click;
		if(fontclick)
			obj.style.color=fontclick;
	}
}
function bgOut(obj, out, click, fontout, fontclick) {
	obj.style.backgroundImage='';
	var r = obj.style.backgroundColor;
	if(!r.compareColor(click)) {
		obj.style.backgroundColor=out;
		if(fontout)
			obj.style.color=fontout;
	}else{
		obj.style.backgroundColor=click;
		if(fontclick)
			obj.style.color=fontclick;
	}
}
function bgClick(obj, out, click, fontout, fontclick) {
	obj.style.backgroundImage='';
	var r = obj.style.backgroundColor;
	if(!r.compareColor(click)) {
		obj.style.backgroundColor=click;
		if(fontclick)
			obj.style.color=fontclick;
	}else{
		obj.style.backgroundColor=out;
		if(fontout)
			obj.style.color=fontout;
	}
}
/* using background image */
function bgImgOver(obj, over, click) {
	var r = obj.style.backgroundImage;
	r = r.replace(/^[^\/]*(?:\/[^\/]*){2}/, "");
	r = r.slice(0, -1) ;
	r = 'url('+r+')';
	// firefox strip
	r = r.replace(/"/g, "");
	if(r != click) {
		obj.style.backgroundImage=over;
	}else{
		obj.style.backgroundImage=click;
	}
}
function bgImgOut(obj, out, click) {
	var r = obj.style.backgroundImage;
	r = r.replace(/^[^\/]*(?:\/[^\/]*){2}/, "");
	r = r.slice(0, -1) ;
	r = 'url('+r+')';
	// firefox strip
	r = r.replace(/"/g, "");
	if(r != click) {
		obj.style.backgroundImage=out;
	}else{
		obj.style.backgroundImage=click;
	}
}
function bgImgClick(obj, out, click) {
	var r = obj.style.backgroundImage;
	r = r.replace(/^[^\/]*(?:\/[^\/]*){2}/, "");
	r = r.slice(0, -1) ;
	r = 'url('+r+')';
	// firefox strip
	r = r.replace(/"/g, "");
	if(r != click) {
		obj.style.backgroundImage=click;
	}else{
		obj.style.backgroundImage=out;
	}
}
/* END rollover background functions */


/* Compare HEX color value with rgb color value (Firefox and Chrome)
 * from http://radio.javaranch.com/pascarello/2005/05/19/1116513366466.html
 */
String.prototype.compareColor = function() {
	if((this.indexOf("#") != -1 && arguments[0].indexOf("#") != -1) || 
	(this.indexOf("rgb") != -1 && arguments[0].indexOf("rgb") != -1)) {
		return this.toLowerCase() == arguments[0].toLowerCase()
	} else {
		xCol_1 = this;
		xCol_2 = arguments[0];
		if(xCol_1.indexOf("#") != -1)xCol_1 = xCol_1.toRGB();
		if(xCol_2.indexOf("#") != -1)xCol_2 = xCol_2.toRGB();
		return xCol_1.toLowerCase() == xCol_2.toLowerCase()
	}
}

	String.prototype.toRGB = function(){
		var R = parseInt(this.substring(1,3), 16);
		var G = parseInt(this.substring(3,5), 16);
		var B = parseInt(this.substring(5,7), 16);
		return "rgb(" + R + ", " + G + ", " +  B + ")";
	}
	/* another way of doing toRGB */
	String.prototype.toRGB2 = function() {
		var r = function () {
		 	return parseInt( g.substring( b , ( b += 2 ) ), 16 ); 
		},
		g = this.replace( /#/, '' ), 
		b = 0;
		return [ 'rgb(' + r(), r(), r() + ')' ].join( ', ' );
}

/* find XMLHttpRequest object and library */
function GetXmlHttpObject(){
	var xmlHttp=null;
	try{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch(e){
		// Internet Explorer
		try{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	if (xmlHttp==null) {
		alert ("Your browser does not support AJAX!");
		return;
	}
	return xmlHttp;
}

var element_id;
var form_name;
var removeElement=0;

function getHtml(url, response_element_id, formName, displayFunc) {
	element_id = response_element_id;
	form_name = formName;		
	xmlHttpObj=GetXmlHttpObject();
	if (url.indexOf("?")==-1) url += "?";
	else url += "&";
	var file = url + Math.random();
	
	if(sendXMLget(file, displayFunc)) {
		return true;
	}else {
		return false;
	}
} 
 
function sendXMLget(file, displayFunc) { 
	if (displayFunc)
		xmlHttpObj.onreadystatechange = window[displayFunc];
	else
		xmlHttpObj.onreadystatechange = displayState;
	xmlHttpObj.open( "GET", file, true ); 
	if(xmlHttpObj.send(null)){
		return true;
	}else {
		return false;
	}
}
 
function displayState(){ 
	$('#'+element_id).fadeIn(500);
	if(xmlHttpObj.readyState == 0) {		
		document.getElementById(''+element_id+'').innerHTML = "<div class=\"ProgressIndicator\"><img src=\"" + rbbUrl[6] + "img/indicator.gif\" alt=\"\">Sending Request...</div>";
	}
	if(xmlHttpObj.readyState == 1)	{
		document.getElementById(''+element_id+'').innerHTML = "<div class=\"ProgressIndicator\"><img src=\"" + rbbUrl[6] + "img/indicator.gif\" alt=\"\">Searching...</div>";
	}
	if(xmlHttpObj.readyState == 4)	{
		if(xmlHttpObj.status == 200) {
			document.getElementById(''+element_id+'').innerHTML= "<div id=\"getHtml-Response-Inner-"+element_id+"\" style=\"display:none\">"+xmlHttpObj.responseText+"</div>";
			var f = document.forms[form_name];
			if(f)
				f.reset();
			if(!removeElement) {
				$('#getHtml-Response-Inner-'+element_id).fadeIn(500);
			}else {
				$('#'+element_id).remove();
			}
			return true;
		} else if(xmlHttpObj.status == 404) {
			/* Add a custom message or redirect the user to another page */
			document.getElementById(''+element_id+'').innerHTML = "File not found";
			return false;
		} else {
			document.getElementById(''+element_id+'').innerHTML = "There was a problem retrieving the XML.";
			return false;
		}
	}
}
/* END find XMLHttpRequest object and library */

function getFormValues(f) { 
	var str = ""; 
	for(var i = 0;i < f.elements.length;i++){ 
		 switch(f.elements[i].type) 
		 { 
			  case "text": 
					 str += f.elements[i].name + "=" + encodeURI(escape(f.elements[i].value)) + "&";
					 break; 
			  case "textarea": 
					 str += f.elements[i].name + "=" + encodeURI(escape(f.elements[i].value)) + "&";
					 break; 
			  case "hidden": 
					 str += f.elements[i].name + "=" + encodeURI(escape(f.elements[i].value)) + "&";
					 break; 
			  case "radio": 
			  		if(f.elements[i].checked==true){
					 	str += f.elements[i].name + "=" + encodeURI(escape(f.elements[i].value)) + "&";
			  		}
					 break; 
			  case "checkbox": 
			  		if(f.elements[i].checked==true){
					 	str += f.elements[i].name + "=" + encodeURI(escape(f.elements[i].value)) + "&";
			  		}
					 break; 
			  case "select-one": 
					 str += f.elements[i].name + "=" + encodeURI(f.elements[i].options[f.elements[i].selectedIndex].value) + "&"; 
					 break; 
		 } 
	}
	str = str.substr(0,(str.length - 1));
	return str; 
}

function json_decode(str) {
	arr = eval(' (' + str + ') ');
  return arr;
}

/* disable form and button fields */
function disableForm(theform) {
	if (document.all || document.getElementById) {
		for (i = 0; i < theform.length; i++) {
			var obj = theform.elements[i];
			if (obj.type.toLowerCase() == "submit" || obj.type.toLowerCase() == "button")
				/*obj.value = '	Process Payment	';*/
				obj.disabled = true;
		}		
	}
}
function disable(thisform, element) {
	thisform.elements[element].disable;
}

function showE(show, hide) { // requires class '#' or '.' at beginning of vars
	if(!show)
		show = ''; 
	if(!hide)
		hide = '';
	 if (show!='') {
	 	var a = show.split(",");	
		 for (var i = 0; i < a.length; i++)
		 	if($(a[i]))
				$(a[i]).fadeIn(500);
	 }
	 if (hide!='') {
	 	var b = hide.split(",");	
		 for (var i = 0; i < b.length; i++)
		 	if($(b[i]))
				$(b[i]).fadeOut(500);
	 }
} 
/* show element and hide others */
/* 'hide' is array of elementID's to hide */
function showElement(show, hide) { 
	var a = show.split(",");	
	var b = hide.split(",");
	 if (show)
		 for (var i = 0; i < a.length; i++)
		 	if(document.getElementById(a[i])) {
		 		//document.getElementById(a[i]).style.display = 'block';
				$('#'+a[i]).fadeIn(500);
		 	}
	 if (hide)
		 for (var i = 0; i < b.length; i++)
		 	if(document.getElementById(b[i])) {
		 		//document.getElementById(b[i]).style.display = 'none';
				$('#'+b[i]).fadeOut(500);
		 	}
} 
function showElementOnOff(show) {
	if(document.getElementById(show))
		if (document.getElementById(show).style.display == 'none') {
			//document.getElementById(show).style.display = 'none';;
			$('#'+show).fadeIn(300);
		}
		else {
			//document.getElementById(show).style.display = 'block'
			$('#'+show).fadeOut(300);
		}		
} 

/* make form input elements hoverable in IE */
function inputHover(id, color, bgcolor) {
	var i = document.getElementById(id);
	if(!color) var color = '#fff';
	if(!bgcolor) var bgcolor = '#000000';
	i.style.background = bgcolor;
	i.style.color = color;
	/* i.style.borderColor = color; */
	/* i.style.border = "1px solid " + color; */
}
function inputHoverOff(id, color, bgcolor) {
	var i = document.getElementById(id);
	if(!color) var color = '#000000';
	if(!bgcolor) var bgcolor = '#ffffff';
	i.style.background = bgcolor;
	i.style.color = color;
	/* i.style.borderColor = color; */
	/* i.style.border = "1px solid " + color; */
}

function validateGeneralText(t) {
	return t.match(/^[\s_\-.&A-Za-z0-9]+$/);
}
function validateUrl(url) {
	return url.match(/^[a-zA-Z0-9-\.]+\.[a-zA-Z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/);
}

function validateSubdomain(url) {
	return url.match(/^(?:https?:\/\/)?(?:[a-z0-9][-]?\.|[a-z0-9][-a-z0-9]{0,61}[a-z0-9]\.)*(?:[a-z]+[.]?[a-z])$/);
}

function validateDomain1(domain1) {
	return domain1.match(/^[a-zA-Z0-9]+([-]?[a-zA-Z0-9]+[\-]?)*[a-zA-Z0-9]+$/);
}
function validateDomainName(url) {
	return url.match(/^[a-zA-Z0-9]+([\-]?[a-zA-Z0-9]+[\-]?)*[a-zA-Z0-9]+(\.[a-zA-Z]{2,4})+\/?$/);
}

function cancelBubbleProp(e) {
	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation)
		e.stopPropagation();
	if (e.stopImmediatePropagation)
		e.stopImmediatePropagation();
}

function getKeyPressed(e){ /* e = event */
	if(window.event)
		return window.event.keyCode; /* IE */
	else
		return e.which; /* Firefox */
}

function focusElement(id) {
	if(document.getElementById(id))
		document.getElementById(id).focus();
}

/* simulate php in_array function */ 
Array.prototype.in_array = function(val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == val)
			return true;
	}
	return false;
}
function MultiArraySortFirst(a,b) {
	a = a[0];
	b = b[0];
	return a == b ? 0 : (a < b ? -1 : 1)
}

function setCheckboxes(form, do_check, element) {	
	 var elts = document.forms[form].elements[element];
	 var elts_cnt  = elts.length;	
	 for (var i = 0; i < elts_cnt; i++)
	 	elts[i].checked = do_check;
	return true;	
}
function toggleCheckbox(id) {
	 var cid = document.getElementById(id);
	if (cid.disabled == true)
		return;
	if (cid.checked == false)
		cid.checked = true;
	else
		cid.checked = false;
}
function toggleCheckboxOn(id) {
	var cid = document.getElementById(id);
	if(cid.disabled == true)
		return;
	cid.checked = true;		
}
function toggleDomainCheckboxSelect(id,type,event) {
	var cid = document.getElementById(id);
	cancelBubbleProp(event);
	if(cid.disabled == true || cid.checked == true)
		return;		
	toggleCheckboxOn(id);
	toggleDomainBg(id,'DomainRow_'+id,type);
	if(document.getElementById('AddWebHosting_Container_'+id))
		toggleDomainHosting(id,type);
}
function toggleDomainCheckbox(id,type) {
	var cid = document.getElementById(id);
	if(cid.disabled == true)
		 return;	
	toggleCheckbox(id);
	var f = document.DomainSearch;
	for (var i = 0; i < f.elements.length; i++ ) {
		if (f.elements[i].type == 'checkbox') {
			var d = f.elements[i].getAttribute('id');
			if(d==id) {
				toggleDomainBg(d,'DomainRow_'+id,type,id);
				if(document.getElementById('AddWebHosting_Container_'+id)) 
					toggleDomainHosting(d);
			}
		}
	}
}
function toggleDomainHosting(id) {
	var speed = 500;
	$('#AddWebHosting_Container_'+id).animate({"height": "toggle"}, speed);
//	if (document.getElementById(id).checked == true) {
//		if(id.substring(id.length-2) != 'au') {
//			$('#AddWebHosting_Container_'+id).animate({"height": "toggle"}, 500);
//		}
//	}else {
//		if(id.substring(id.length-2) != 'au') {
//			$('#AddWebHosting_Container_'+id).animate({"height": "toggle"}, 500);
//		}
//	}
}
function toggleDomainRadios(id,type) {	
	var cid = document.getElementById(id);
	if(cid.disabled == true)
		 return;		 
	toggleCheckboxOn(id);
	var f = document.DomainSearch;
	for (var i = 0; i < f.elements.length; i++ ) {
		 if (f.elements[i].type == 'radio') {
			var d = f.elements[i].getAttribute('id');
			if(d!=id)
				 toggleDomainBg(d,'DomainRow_'+d,type,id);
		 }
	}
	toggleDomainBg(id,'DomainRow_'+id,type,id);
}	
function toggleDomainBg(id,rowid,type,originalid) {		
	var speed = 500;
	var getid = document.getElementById(id);		
	if (getid.checked == true) { 
		var bgcolor = '#C6FFC5';
		var color = '#000'; 
		var fade = 'in';
	}else{ 	 
		var bgcolor = '';
		var color = '#000'; 
		var fade = 'out';
	}
	setElementBg(rowid, bgcolor, color);

	if(document.getElementById('ABN_Container_'+id) && id.substring(id.length-2) == 'au') {
		if (!type) {
			$('#ABN_Container_'+id).animate({"height": "toggle"}, speed);
			return
		}
		if(originalid==id && fade=='in' && $('#ABN_Container_'+id).css('display')=='none')
			$('#ABN_Container_'+id).animate({"height": "toggle"}, speed);
		if(originalid!=id && fade=='out' && $('#ABN_Container_'+id).css('display')!='none')
			$('#ABN_Container_'+id).animate({"height": "toggle"}, speed);
	}
}
function setElementBg(id, bgcolor, color) {
	if(document.getElementById(id)) {
		document.getElementById(id).style.backgroundColor = bgcolor;
		if(color)
			document.getElementById(id).style.color = color;
	}
}

/* multidropbox select */
function append_Element(id, num, html, calling_element_Cnt, show_add_link) {
	var contentID = document.getElementById(id+'Container');
	var newTBDiv = document.createElement('div');
	newTBDiv.setAttribute('id',id+'_'+num);
	//newTBDiv.setAttribute('class','AutoAddItem');
	newTBDiv.innerHTML = html;	
	
	var h = "<div id=\""+id+"_"+num+"\">"+html+"</div>";
	currID=0;
	if (calling_element_Cnt) {
		currID = document.getElementById(id+'_'+calling_element_Cnt);
	}
	if (currID) {
		$(h).insertAfter('#'+id+'_'+calling_element_Cnt);
		//contentID.insertBefore(newTBDiv, currID.nextSibling);
		$('#'+id+'_'+num).hide().fadeIn(1000);
	} else {
		contentID.appendChild(newTBDiv); 
		$('#'+id+'_'+num).hide().fadeIn(1000);
		//$('#'+id+'_'+num).animate({'height': '30px'}, 1000);
	}

	if (!show_add_link)
		document.getElementById('add_'+id+'_Link').style.display = 'none';
	if (complete)
		focusElement(id+num);
}
function set_Element(id, num, extra_element, extra_element_value) {
	var d = document.getElementById(id+window[id+'_Cnt']);
	
	d.value = num;
	d.options[d.selectedIndex].style.background = "pink";
	
	if(extra_element!=0){
		var d = document.getElementById(extra_element+window[id+'_Cnt']);
		//if(!d) document.write(extra_element+window[id+'_Cnt']);
		d.value = extra_element_value;
	}
}
function set_Element_2(num, element, element_value) {
	for(var i = 0;i < element.length;i++) {
		var d = document.getElementById(element[i]+window[id+'_Cnt']);
		d.value = element_value[i];
		
		 switch(d.type) 
		 { 
			  case "text": 
		  		d.value = element_value[i];
					 break; 
			  case "textarea": 
		  		d.value = element_value[i];
					 break; 
			  case "hidden": 
		  		d.value = element_value[i];
					 break; 
			  case "radio": 
			  		if(d.checked==true){
			  			d.value = element_value[i];
			  		}
					 break; 
			  case "checkbox": 
			  		if(d.checked==true){
			  			d.value = element_value[i];
			  		}
					 break; 
			  case "select-one": 
		  		d.value = element_value[i];
		  		d.options[d.selectedIndex].style.background = "pink"; 
					 break; 
		 }
	}
}
function remove_Element(id, num) {
	if(window[id+'_Cnt'] != 0) {
		var contentID = document.getElementById(id+'Container');
		if (id+'_'+num) {
			$('#'+id+'_'+num).animate({"height": "toggle"}, 500, function() {
				$(this).fadeOut(500);
				$('#'+id+'_'+num).remove();
			});
			//contentID.removeChild(document.getElementById(id+'_'+num));
		}else {
			contentID.removeChild(contentID.lastChild);
		}
		
		if (window[id+'_Cnt_tmp']) {
			window[id+'_Cnt_tmp'] = window[id+'_Cnt_tmp'] - 1;
		} else {
			window[id+'_Cnt'] = window[id+'_Cnt'] - 1;
		}
		window[id+'_nextInt'].push(num);
		window[id+'_realCnt'] = window[id+'_realCnt'] - 1;
		//picCount(realCnt);
	}

	if (!window[id+'_realCnt']) {
		document.getElementById('add_'+id+'_Link').style.display = '';
	}
}
// END multidropbox select

// domain
var Cnt=0;
var domain1;
var DomainArray = new Array();

function keypressDomainSearch(e,form,t) {
	var key;
	key = getKeyPressed(e);		
	if(key == 13){
		if(!t)
			var t = 0;
		
		getSearchResults(form,t);
		return false;
	}else{
		return true;
	}
}
function getInboundSearchResults(tld, domain1, t, domainpage) {
	// reset
	xmlreqs = new Array();
	
	if(!domainpage)
		var domainpage = 'domain.search_write';
	
	if(!t)
		var t = 0;

	domain1 = $.trim(domain1);
	
	if (!validateDomain1(domain1)) {
		showElement('InvalidDomain','');
		return;
	}

	// clear result pane for next run
	showElement('domainResults-2,domainResults-3','InvalidDomain');
	if($.trim($('#domainResults').html())!="") {		
		$('#domainResults').fadeOut(500, function() { 
				$(this).html('');
				showElement('domainResults','');
				showElement('ProgressInd','');
		});
	}else {
		showElement('ProgressInd','');
	}
	
	var Cnt=0;
	
	for(var i = 0;i < tld.length;i++)	{
			var url = ''+rbbUrl[0]+'domain/search.php?rbb_page='+domainpage+'&domain1=' + encodeURI(domain1) + '&tld=' + tld[i]+'&t='+t+'&'+Math.random()+'';
			var domain = domain1 + tld[i];
			DomainArray[Cnt] = new Array (url, domain);
			Cnt++;
	}
	if (Cnt > 0 && DomainArray.length > 0) {
		for (var i=0; i < DomainArray.length; i++)
			xmlreqGET(DomainArray[i][0], DomainArray[i][1]);
	}
}
function getSearchResults(form, t, domainpage) {
	// reset
	xmlreqs = new Array();
	
	if(!domainpage)
		var domainpage = 'domain.search_write';
	
	if(!t)
		var t = 0;
	
	domain1 = unescape(form.elements['domain1'].value);
	domain1 = $.trim(domain1);
	domain1 = domain1.toLowerCase();

	if (validateDomainName(domain1)) {
		var domain_array = domain1.split(".");
		domain1 = domain_array[0];
		var ext = '.'+domain_array[1];
		if (domain_array[2])
			ext = ext+'.'+domain_array[2];
		for(var i = 0;i < form.elements.length;i++)	{
			if(form.elements[i].name == 'tld[]' && form.elements[i].value==ext && form.elements[i].checked!=true) {
				form.elements[i].checked = true;
			}
		}
	}else {
		if (!validateDomain1(domain1)) {
			showElement('InvalidDomain','');
			return;
		}
	}

	// clear result pane for next run
	showElement('domainResults-2,domainResults-3','InvalidDomain');
	if($.trim($('#domainResults').html())!="") {
		//$('div#domainResults').has('div').fadeOut(500, function() { 
		$('#domainResults').fadeOut(500, function() { 
				$(this).html('');
				showElement('domainResults','');
				showElement('ProgressInd','');
		});
	}else {
		showElement('ProgressInd','');
	}
		
	var Cnt=0;
	var ssl = isSSL();
	for(var i = 0;i < form.elements.length;i++)	{
		if(form.elements[i].name == 'tld[]' && form.elements[i].checked==true) {
			if(!ssl)
				var path = rbbUrl[0];
			else
				var path = rbbUrl[2];
			var url = ''+path+'domain/search.php?rbb_page='+domainpage+'&domain1=' + encodeURI(escape(domain1)) + '&tld=' + form.elements[i].value+'&t='+t+'&'+Math.random()+'';
			var domain = domain1 + form.elements[i].value;
			DomainArray[Cnt] = new Array (domain, url);
			Cnt++;
		}
	}
	if (Cnt > 0 && DomainArray.length > 0) {
		for (var i=0; i < DomainArray.length; i++)
			xmlreqGET(DomainArray[i][1], DomainArray[i][0]);
	}
}

/* XMLHTTPRequest Objects Redux - http://drakware.com/?e=3 */
var xmlreqs = new Array();

function CXMLReq(freed) {
	this.url = ""; // rbb addition
	this.domain = "";  // rbb addition
	this.freed = freed;
	this.xmlhttp = false;
	if (window.XMLHttpRequest) {
		this.xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function xmlreqGET(url, domain) {
	var pos = -1;
	for (var i=0; i < xmlreqs.length; i++) {
		if (xmlreqs[i].freed == 1) {
			pos = i;
			break;
		}
	}
	if (pos == -1) {
		pos = xmlreqs.length;
		xmlreqs[pos] = new CXMLReq(1);
	}
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].url = url;
		xmlreqs[pos].domain = domain;
		xmlreqs[pos].freed = 0;
		xmlreqs[pos].xmlhttp.open("GET",url,true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function() {
			if (typeof(xmlhttpChange) != 'undefined') {
				xmlhttpChange(pos);
			}
		}
		if (window.XMLHttpRequest) {
			xmlreqs[pos].xmlhttp.send(null);
		} else if (window.ActiveXObject) {
			xmlreqs[pos].xmlhttp.send();
		}
	}
}

function xmlreqPOST(url,data) {
	var pos = -1;
	for (var i=0; i<xmlreqs.length; i++) {
		if (xmlreqs[i].freed == 1) {
			pos = i; break;
		}
	}
	if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new CXMLReq(1); }
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].freed = 0;
		xmlreqs[pos].xmlhttp.open("POST",url,true);
		xmlreqs[pos].xmlhttp.onreadystatechange = function() {
			if (typeof(xmlhttpChange) != 'undefined') {
				xmlhttpChange(pos);
			}
		}
		xmlreqs[pos].xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlreqs[pos].xmlhttp.send(data);
	}
}

var xmlReqRetryCount = 0; // rbb addition

function xmlhttpChange(pos) {
	if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) {
		if (xmlreqs[pos].xmlhttp.status == 12029 ||
			xmlreqs[pos].xmlhttp.status == 12030 ||
			xmlreqs[pos].xmlhttp.status == 12031 ||
			xmlreqs[pos].xmlhttp.status == 12152 ||
			xmlreqs[pos].xmlhttp.status == 12159) {
			// rbb addition
			// IE failed (bug maybe), try sending again as connection should be established after this first failed run, I guess.
			// Usually happens after running function then leaving browser page idol and coming back with out refreshing page.
			// 12029 is the problem I had.
			// Could add Connection : close to request headers.
			xmlReqRetryCount++;
			if (xmlReqRetryCount >= 100)
				handle_error;
			xmlreqGET(xmlreqs[pos].url, xmlreqs[pos].domain);

		} else if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
			handle_response(xmlreqs[pos].xmlhttp.responseText);
		} else {
			handle_error(pos);
		}
		xmlreqs[pos].freed = 1;
		checkProgress(); // rbb addition
	}
}
/* END XMLHTTPRequest Objects Redux */


function handle_error(pos) {
	var contentID = document.getElementById('domainResults');
	var newTBDiv = document.createElement('div');
	newTBDiv.setAttribute('id','Domain'+Cnt);
	var h = '';
	h = "<div class=\"DomainRow RegistryUnavailable\"> \n";
		h += "<ul> \n";
			h += "<li class=\"Column\"><img src=\"" + rbbUrl[6] + "theme-1/img/cross-1.png\"></li> \n";
			h += "<li class=\"Column1\">" + xmlreqs[pos].domain + "<div>Registry temporarily unavailable. Please try again.</div></li> \n";
			h += "<li class=\"Column4\">ID: " + xmlreqs[pos].xmlhttp.status + "</li> \n";
		h += "</ul> \n";
		h += "<div class=\"Clear\"></div> \n";
	h += "</div> \n";
	newTBDiv.innerHTML = h;
	//contentID.appendChild(newTBDiv);
	$('#domainResults').append(newTBDiv).children(':last').hide().fadeIn(500);
}

function handle_response(h) {
	var contentID = document.getElementById('domainResults');
	var newTBDiv = document.createElement('div');
	newTBDiv.setAttribute('id','Domain'+Cnt);
	newTBDiv.innerHTML = h;
	//contentID.appendChild(newTBDiv);
	$('#domainResults').append(newTBDiv).children(':last').hide().fadeIn(500);
}

function checkProgress() {
	var progress = 1;

	for (var i=0; i<xmlreqs.length; i++) {
		if (xmlreqs[i].xmlhttp.readyState != 4)
			progress = 0;
	}

	if (progress) {
		//$('#ProgressIndImg').show().fadeOut(750);		
		$('#ProgressInd').animate({
			height: 'hide'
		}, 750);
		
		//document.getElementById('domainResults-3').style.display = '';
		xmlreqs = new Array(); // rbb addition, may not be needed.
		DomainArray = new Array();
	}
}
// END domain functions

// Add domains and hosting to cart functions
function checkHostingDomainRegister(f) {
	if (!checkHostingPlan(f))
		return false;
		
	for (i = 0; i < f.elements.length; i++) {

		var obj = f.elements[i];		
		if (obj.name.substring(0,5) != 'domid')
			continue;
		
		var val=obj.value;
		var p='plan['+val+']';
		var d='domain['+val+']';
		
		//if(f.elements[p] && f.elements[d])
		if(f.elements[d])
			if (obj.checked == true)
				//if (validateUrl(f.elements[d].value))
					f.elements['domain[]'].value = f.elements[d].value;
	}

	if (f.elements['domain[]'].value == "") {
		window.alert('Search and select a new domain name.');
		return false;
	}

	if(!DomainRegisterDisable(f))
		return false;
}
function checkHostingDomainExisting(f) {
	if (!checkHostingPlan(f))
		return false;
	
	if (f.elements['domain[]'] && validateUrl(f.elements['domain[]'].value))
		return true;
	
	window.alert('Please enter an existing domain name.');
	return false;
}
function checkDomainRegister(f) {	
	for (var i = 0; i < f.elements.length; i++ ) {
		 if (f.elements[i].name.substring(0,5) == 'domid' && f.elements[i].type == 'checkbox' && f.elements[i].checked == true)
			var domainChecked = 1;
	}	
	if (!domainChecked) {	
		window.alert('At least one domain must be selected before adding to cart.');
		return false;
	}
	if(!DomainRegisterDisable(f))
		return false;
}

function checkHostingPlan(f) {
	for(var i = 0;i < f.elements.length;i++) {
			if (f.elements[i].name == 'plan[]' && f.elements[i].type == 'select-one' && f.elements[i].options[f.elements[i].selectedIndex].value == 0) {
			window.alert('Please select a hosting plan.');
		 		return false;
		}
	}
	return true;
}
function DomainRegisterDisable(f) {
	
	for (i = 0; i < f.elements.length; i++) {	
		
		var obj = f.elements[i];		
		if (obj.name.substring(0,5) != 'domid')
			continue;
		
		var val = obj.value;
		var id  = f.elements[i].getAttribute('id');
		var p	= 'plan['+val+']';
		var d	= 'domain['+val+']';

		if(f.elements[p] && f.elements[d])			
			if(obj.checked == true && f.elements['abn_type['+val+']'])				
				if(id.substring(id.length-2) == 'au')
					if(!abn_validation(f,val))
						return false;
	}	

	for (i = 0; i < f.elements.length; i++) {

		var obj = f.elements[i];		
		if (obj.name.substring(0,5) != 'domid')
			continue;
		
		var val = obj.value;
		var id  = f.elements[i].getAttribute('id');
		var p	= 'plan['+val+']';
		var d	= 'domain['+val+']';
		var qty = 'qty['+val+']';
		
		var c = obj.checked ? false : true;	
		obj.disabled == c;
		if(f.elements[p])
			f.elements[p].disabled = c;
		if(f.elements[d])
			f.elements[d].disabled = c;
		if (f.elements[qty])
			f.elements[qty].disabled = c;

			if(id.substring(id.length-2) == 'au') {
			if (f.elements['abn_type['+val+']'])
				f.elements['abn_type['+val+']'].disabled = c;
			if (f.elements['abn['+val+']'])
				f.elements['abn['+val+']'].disabled = c;
			if (f.elements['abn_name['+val+']'])
				f.elements['abn_name['+val+']'].disabled = c;
			}						
		if (document.getElementById('Hosting_Plan_'+val)) {
			document.getElementById('Hosting_Plan_'+val).disabled = c;
			document.getElementById('Hosting_Plan_Qty'+val).disabled = c;
			document.getElementById('Hosting_Plan_Domain_'+val).disabled = c;
		}		
	}
	return true;
}
function abn_validation(f,val) {		
	if (!f.elements['abn_type['+val+']'] || f.elements['abn_type['+val+']'].options[f.elements['abn_type['+val+']'].selectedIndex].value == '' || f.elements['abn_type['+val+']'].options[f.elements['abn_type['+val+']'].selectedIndex].value.match(/^[\s]+$/)) {
		window.alert('An ABN Type is required when registering .au domains.');
		return false;
	}
	if (!f.elements['abn['+val+']'] || f.elements['abn['+val+']'].value=='' || f.elements['abn['+val+']'].value.match(/^[\s]+$/)) {
		window.alert('A valid Australian business number is required when registering .au domains.');
		return false;
	}
	if (!f.elements['abn_name['+val+']'] || f.elements['abn_name['+val+']'].value=='' || f.elements['abn_name['+val+']'].value.match(/^[\s]+$/)) {
		window.alert('A valid Australian organisation name is required when registering .au domains.');
		return false;
	}
	return true;
}

function SSLValidate(form) {
	var val = $(form).find("[name='domain[]']").val();
	if (val=='') {
		alert('You must enter a domain for the SSL to registered to. For single domain certificates we recommend using www.yourdomain.com.au (with the www.). ')
		return false;
	}
	if (!validateSubdomain(val)) {
		alert('You must enter a valid domain or subdomain.')
		return false;
	}
	var plan_ischecked = 0;
	$(form).each(function(){
		if($(this).find("input:radio").is(':checked'))
			plan_ischecked = 1;
	});
	if(plan_ischecked)
		 form.submit();
	else
		alert('You must select an SSL to continue.');
	return false;
}

// pop window with fade background
var winPop = new winPopFade();
var winPopWidth = 600;
var winPopHeight = 480;
var winPopTop = 90;
var winPopUrl = "policy.php";
var winPopDisplayFunc = "displayPop";
var winPopBgFadeIn = 300;
var winPopDivDelay = 300;

function showPop(data,width,height,top) {
	if(width) winPopWidth = width;
	if(height) winPopHeight = height;	
	if(top) winPopTop = top;	
	winPop.popOut(data);
}
function showPopData(url,width,height,top,func) {
	if(url) winPopUrl = url;
	if(width) winPopWidth = width;
	if(height) winPopHeight = height;	
	if(top) winPopTop = top;	
	if(func) winPopDisplayFunc = func;	
	getHtml(rbbUrl[0]+winPopUrl,0,0,winPopDisplayFunc);
}
function displayPop() {
	if(xmlHttpObj.readyState == 4)
		if(xmlHttpObj.status == 200)
			winPop.popOut(xmlHttpObj.responseText);
}
function winPopFade(data) {
	this.PopDiv = null;
	this.PopBg = null;		

	this.popOut = function(data) {
		this.PopBg = document.createElement("div");
		this.PopBg.className = "PopBg";
		this.PopBg.setAttribute('onmousedown','PopRemove()');

		this.PopDiv = document.createElement("div");
		this.PopDiv.className = "PopDiv";
		this.PopDiv.innerHTML = data;
		this.PopDiv.Code = this;

		var scrollLeft = getScrollLeft();
		var x = Math.round(scrollLeft+(document.body.clientWidth/2)-(winPopWidth/2));
		var scrollTop = getScrollTop();
		var y = Math.round(scrollTop + winPopTop);
		
		this.PopDiv.style.left = x + "px";
		this.PopDiv.style.top = y + "px";
		this.PopDiv.style.display = 'none';		
		this.PopBg.style.display = 'none';
	
		document.body.appendChild(this.PopBg);
		document.body.appendChild(this.PopDiv);
		
		$(this.PopBg).fadeIn(winPopBgFadeIn);
		var t = setTimeout ("$('.PopDiv').css('display', 'block')", winPopDivDelay);

		var bodyWidth = getBodyWidth();
		this.PopBg.style.width = bodyWidth+"px";
		var bodyHeight = getBodyHeight();
		this.PopBg.style.height = bodyHeight+"px";		
	}
	this.popResize = function() {
		if (this.PopDiv == null || this.PopBg == null)
			return;

		var scrollLeft = getScrollLeft();
		var x = Math.round(scrollLeft+(document.body.clientWidth/2)-(winPopWidth/2));
		var scrollTop = getScrollTop();
		var y = Math.round(scrollTop + winPopTop);
		
		this.PopDiv.style.left = x + "px";
		this.PopDiv.style.top = y + "px";

		var bodyWidth = getBodyWidth();
		this.PopBg.style.width = bodyWidth+"px";
		var bodyHeight = getBodyHeight();
		this.PopBg.style.height = bodyHeight+"px";
	}
}
function getBodyWidth() {
	var bodyWidth = document.getElementById('Content').offsetWidth + 10;
	if(document.body.clientWidth > bodyWidth)
		var bodyWidth = document.body.clientWidth;
	return bodyWidth;
}
function getBodyHeight() {
	var h = document.getElementById('Header').offsetHeight;
	var c = document.getElementById('Content').offsetHeight;
	var f = document.getElementById('Footer').offsetHeight;
	return h+c+f;
}
function getScrollLeft() {
	var scrollLeft = document.body.scrollLeft;		 
	if (scrollLeft == 0) {
		if (window.pageYOffset)
			scrollLeft = window.pageXOffset;
		else
			scrollLeft = (document.body.parentElement) ? document.body.parentElement.scrollLeft : (document.documentElement) ? document.documentElement.scrollLeft : 0;
	}
	return scrollLeft;
}
function getScrollTop() {
	var scrollTop = document.body.scrollTop;		 
	if (scrollTop == 0) {
		if (window.pageYOffset)
			scrollTop = window.pageYOffset;
		else
			scrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : (document.documentElement) ? document.documentElement.scrollTop : 0;
	}
	return scrollTop;
}
function PopRemove() {
	$('.PopDiv').remove();
	$('.PopBg').fadeOut(winPopBgFadeIn+100);
	var t = setTimeout ("$('.PopBg').remove();", winPopDivDelay+200);
}
var addEvent = function(element, type, eventHandle) {
	if (element==null || element==undefined)
		return;
	if (element.addEventListener)
		element.addEventListener(type, eventHandle, false);
	else if (element.attachEvent)
		element.attachEvent("on"+type, eventHandle);
};
addEvent(window, "resize", function() { winPop.popResize(); } );
//end pop fade

//$(document).ready(function() {	 

//	$(".box3").hover(
//		function(){
//			$(this).css('background-color','#4C4C4C');
//			$(this).css('color','#fff');
//			$(this).find("h3").css('color','#ffcc00');
//			$(this).find("li").css('color','#CEECFD');
//		},
//		function() { 
//			$(this).css('background-color','#D6D3CE');
//			$(this).css('color','#7B7B7B');
//			$(this).find("h3").css('color','#464646');
//			$(this).find("li").css('color','#004B84');
//	});

//});
