function isNumber (val) {
	return !isNaN (val-0);
}

/* Pop window */
function popup(theURL,winName,features) {
	window.open(theURL,winName,features);
}
/* toggle click on off */
function toggle_swap(obj,i) {			
	var a = document.getElementById(obj);
	if ( a.style.display != 'none' ) {
		a.style.display = 'none';
	} else {
		window.swap(i);
	}			
}
/* 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;
	// 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;
	// 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;
	// 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;

function getHtml(url, response_element_id, formName) {
	element_id = response_element_id;
	form_name = formName;		
	xmlHttpObj=GetXmlHttpObject();
	if (url.indexOf("?")==-1) url += "?";
	else url += "&";
	var file = url + Math.random();
	sendXMLget(file);
} 
 
function sendXMLget(file) { 
	xmlHttpObj.onreadystatechange = displayState;
	xmlHttpObj.open( "GET", file, true ); 
	xmlHttpObj.send(null);
}
 
function displayState(){ 
	$('#'+element_id).fadeIn(2500);
	if(xmlHttpObj.readyState == 0) {		
		document.getElementById(''+element_id+'').innerHTML = "<div class=\"ProgressIndicator\"><img src=\"" + rbbUrl[4] + "theme/ch/img/pi.gif\" alt=\"\" width=\"40\">Sending Request...</div>";
	}
	if(xmlHttpObj.readyState == 1)	{
		document.getElementById(''+element_id+'').innerHTML = "<div class=\"ProgressIndicator\"><img src=\"" + rbbUrl[4] + "theme/ch/img/pi.gif\" alt=\"\" width=\"40\">Searching...</div>";
	}
	if(xmlHttpObj.readyState == 4)	{
		if(xmlHttpObj.status == 200) {
			document.getElementById(''+element_id+'').innerHTML= "<div id=\"getHtml-Response-Inner\" style=\"display:none\">"+xmlHttpObj.responseText+"</div>";
			var f = document.forms[form_name];
			if(f)
				f.reset();
			$('#getHtml-Response-Inner').fadeIn(1500);
			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";
		} else {
			document.getElementById(''+element_id+'').innerHTML = "There was a problem retrieving the XML.";
		}
	}
}
/* 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 showClass(show, hide) { 
	var a = show.split(",");	
	var b = hide.split(",");
    if (show)
	    for (var i = 0; i < a.length; i++)
	    	if($('.'+a[i])) 
				$('.'+a[i]).fadeIn(750);	    	
    if (hide)
	    for (var i = 0; i < b.length; i++)
	    	if($('.'+b[i]))
				$('.'+b[i]).fadeOut(750);
} 
/* 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(750);
	    	}
    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(750);
	    	}
} 
function showElementOnOff(show) {
	if(document.getElementById(show))
		if (document.getElementById(show).style.display == 'block') {
			//document.getElementById(show).style.display = 'none';
			$('#'+show).fadeOut(500);
		}
		else {
			//document.getElementById(show).style.display = 'block';
			$('#'+show).fadeIn(500);
		}		
} 

/* 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-z0-9-\.]+\.[a-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 cancelBubbleProp(e) {
	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation)
		e.stopPropagation();
}

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) {
	var cid = document.getElementById(id);
	if(cid.disabled == 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);
    			if(document.getElementById('AddWebHosting_Container_'+id))
    				toggleDomainHosting(d,type);
    		}
    	 }
    }
}
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);
    	 }
    }
	toggleDomainBg(id,'DomainRow_'+id,type);
}
function toggleDomainHosting(id,type) {
	if (document.getElementById(id).checked == true) {
		if(id.substring(id.length-2) != 'au') {
			var height = type==0 ? '47' : '33';
			$('#DomainRow_'+id).animate({"height": height+"px"}, 500);
		}
		$('#AddWebHosting_Container_'+id).fadeIn(500);
		//document.getElementById('AddWebHosting_Container_'+id).style.display = 'block';
	}else {
		if(id.substring(id.length-2) != 'au') {
			var height = type==0 ? '19' : '19';
			$('#DomainRow_'+id).animate({"height": height+"px"}, 500);
		}
		$('#AddWebHosting_Container_'+id).fadeOut(500);
		//document.getElementById('AddWebHosting_Container_'+id).style.display = 'none';
	}
}	
function toggleDomainBg(id,rowid,type) {		
	var getid = document.getElementById(id);		
	if (getid.checked == true) { 
		var bgcolor = '#11ca0d';
		var color = '#000'; 
		var fade = 'in';
		var height = type==0 ? '127' : '97';
	}else{ 	 
		var bgcolor = 'lightyellow';
		var color = '#000'; 
		var fade = 'out';
		var height = type==0 ? '19' : '19';
	}
	setElementBg(rowid, bgcolor, color);

	if(document.getElementById('ABN_Container_'+id) && id.substring(id.length-2) == 'au') {
		if(fade=='in') {
			$('#DomainRow_'+id).animate({"height": height+"px"}, 750);
			$('#ABN_Container_'+id).fadeIn(750);
			return;
		}
		$('#DomainRow_'+id).animate({"height": height+"px"}, 750);
		$('#ABN_Container_'+id).fadeOut(750);		
	}
}
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 (domain, url);
			Cnt++;
	}
	if (Cnt > 0 && DomainArray.length > 0) {
		for (var i=0; i < DomainArray.length; i++)
			xmlreqGET(DomainArray[i][1], DomainArray[i][0]);
	}
}
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);

	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;
	
	for(var i = 0;i < form.elements.length;i++)	{
		if(form.elements[i].name == 'tld[]' && form.elements[i].checked==true) {
			var url = ''+rbbUrl[0]+'domain/search.php?rbb_page='+domainpage+'&domain1=' + encodeURI(escape(form.elements['domain1'].value)) + '&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 = ""; // coasthost.net addition
	this.domain = "";  // coasthost.net 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; // coasthost.net 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) {
			// coasthost.net 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(); // coasthost.net addition
	}
}
/* END XMLHTTPRequest Objects Redux */


function handle_error(pos) {
	var contentID = document.getElementById('domainResults');
	var newTBDiv = document.createElement('div');
	newTBDiv.setAttribute('id','Domain'+Cnt);
	newTBDiv.innerHTML = '<table id=\"SearchResultsTable\"><tr style=\"background-color: #FFD7D7\"><td class=\"Column1\">' + xmlreqs[pos].domain + '</td><td>Registry temporarily unavailable. Please try again.</td><td>(ID Check: ' + xmlreqs[pos].xmlhttp.status + ')</tr></table>';
	//contentID.appendChild(newTBDiv);
	$('#domainResults').append(newTBDiv).children(':last').hide().fadeIn(2000);
}

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(2000);
}

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(); // coasthost.net 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+']';
		
		if(obj.checked == false) {
			obj.disabled == true;
			if(f.elements[p])
				f.elements[p].disabled = true;
			if(f.elements[d])
				f.elements[d].disabled = true;
			if (f.elements[qty])
				f.elements[qty].disabled = true;

	   		if(id.substring(id.length-2) == 'au') {
				if (f.elements['abn_type['+val+']'])
					f.elements['abn_type['+val+']'].disabled = true;
				if (f.elements['abn['+val+']'])
					f.elements['abn['+val+']'].disabled = true;
				if (f.elements['abn_name['+val+']'])
					f.elements['abn_name['+val+']'].disabled = true;
	   		}			   		
			if (document.getElementById('Hosting_Plan_'+val)) {
				document.getElementById('Hosting_Plan_'+val).disabled = true;
				document.getElementById('Hosting_Plan_Domain_'+val).disabled = true;
			}
		}
	
		if(obj.checked == true) {
			obj.disabled == false;
			if(f.elements[p])
				f.elements[p].disabled = false;
			if(f.elements[d])
				f.elements[d].disabled = false;
			if (f.elements[qty])
				f.elements[qty].disabled = false;
			
			if(id.substring(id.length-2) == 'au') {					
				if (f.elements['abn_type['+val+']'])
					f.elements['abn_type['+val+']'].disabled = false;
				if (f.elements['abn['+val+']'])
					f.elements['abn['+val+']'].disabled = false;
				if (f.elements['abn_name['+val+']'])
					f.elements['abn_name['+val+']'].disabled = false;
			}
			
			if (document.getElementById('Hosting_Plan_'+val)) {
				document.getElementById('Hosting_Plan_'+val).disabled = false;
				document.getElementById('Hosting_Plan_Domain_'+val).disabled = false;
			}									
		}
		
	}
	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 ABN 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;
}
// END Add domains and hosting to cart functions
// Tabs
// hide all
$(document).ready(function() {
	$(".TabContent").hide();
	$(".TabsHolder").fadeIn(750);
	// show active tab
	var active = $(".active").find("a").attr("href");
	// fadein active content
	$(active).fadeIn(750);
	
	$("ul.Tabs li").click(function() {
		// remove all active classes
		$("ul.Tabs li").removeClass("active");
		// add active class to selected tab
		$(this).addClass("active");
		// hide all Tab Content
		$(".TabContent").hide();
		// find href attribute value to identify active content and tab
		var active_Tab = $(this).find("a").attr("href");
		// fadein active content
		$(active_Tab).fadeIn(750);
		// prevent link
		return false;
	});
});
//END Tabs
// Plan matrix order button
$(document).ready(function() {
	$('.PlanOrder').click(function(){
		var href = $(this).find("a").attr("href");
		var id = '?plan=';
		var plan = $(this).find("input").attr("value");
		var val = $('input:radio[name=plan_col_'+plan+']:checked').val();
		window.location=href+id+val;
		return false;
	});
	$('.PlanOrder').mouseover(function(){
		var plan = $(this).find("input").attr("value");
		$('.plan_col_'+plan).css('background','url('+rbbUrl[0]+'members/theme/ch/img/trans-1.png) repeat');
		return false;
	});
	$('.PlanOrder').mouseout(function(){
		var plan = $(this).find("input").attr("value");
		$('.plan_col_'+plan).css('background','none');
		return false;
	});
	$('[class^=plan_col_]').mouseover(function(){
		var plan = $(this).find("input").attr("name");
		$('.'+plan).css('background','url('+rbbUrl[0]+'members/theme/ch/img/trans-1.png) repeat');
		return false;
	});
	$('[class^=plan_col_]').mouseout(function(){
		var plan = $(this).find("input").attr("name");
		$('.'+plan).css('background','none');
		return false;
	});
});
// Moving Menu Light
function MenuLight() {
	$('#menu-light').animate({
	  marginLeft: '900'
	}, 1000, function() {
		$('#menu-light').css("margin-left", "-251px");
		setTimeout(function(){MenuLight();},4500);
	});
}
$(document).ready(function() {
//	$('.scrollDown-1').cycle({
//	    fx:     'scrollDown',
//	    easing: 'easeOutBounce',
//	    delay:  -2000
//	});
	// Selected plan input color individual plan pages
	$('.PlanInput li').click(function() {
		$(this).find("input:radio").attr("checked", "checked");
		setPlanInput();		
	});
	
	$('.PlanLinks li').click(function(){
		window.location=$(this).find("a").attr("href");
		return false;
	});
	$('.PlanTableView').click(function(){
		window.location=$(this).find("a").attr("href");
		return false;
	});
	
	$('.SSLPriceList').mouseover(function(){
		$(this).css('background','url('+rbbUrl[0]+'members/theme/ch/img/trans-1.png) repeat');
		return false;
	});
	$('.SSLPriceList').mouseout(function(){
		$(this).css('background','none');
		return false;
	});
	
	$('.SSLRollover li').mouseover(function(){
		$(this).css('background-color','#eeeeee');
		return false;
	});
	$('.SSLRollover li').mouseout(function(){
		$(this).css('background-color','');
		return false;
	});
	$('.SSLRollover li').click(function(){
		window.location=$(this).find("a").attr("href");
		return false;
	});
});
function setPlanInput() {		
	$(".PlanInput li").each(function(){
		if($(this).find("input:radio").is(':checked'))
			$(this).addClass('PlanSelectColor');
		else
			$(this).removeClass('PlanSelectColor');
	});
}
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;
}
