/**
 * Toggle the default text... userfriendly = yes
 */
function toggleDefaultVal(oInput,bClick){
	oSubmit = document.getElementById('free_check_submit');
	
	if (!bClick && oInput.value == ""){
		oInput.cleared = false;
		oInput.value = "Hey, enter a site!";
		document.getElementById('example_domain').style.display = 'block';
	
	} else if(!oInput.cleared) {
		oInput.cleared = true;
		oInput.value = "";
		document.getElementById('example_domain').style.display = 'none';
	
	}//-if (oInput.cleared)
	
}//-function toggleDefaultVal

/**
 * Handles pseudo form submit
 */
function submitCheck(){
	//Ajax call is already running... exit
 	if(bRunning){return false;}
	
	//Get and validate the domain name
	sDomain = validateDomain();
	
	//No domain??? Something is wrong! Abort!!
	if(!sDomain){
		return false;
	}
	
	//Send user to upup w/ domain in uri
	window.location = "http://" + sUpupDomain + "/" + (sDomain);
}//-function submitCheck


/**
 * Do the check already, would you!
 */
function doCheck(bNew){
 	if(typeof bNew == "undefined") bNew = false;
 	
 	//New user submitted request?
 	if(bNew){
	 	//Ajax call is already running... exit
 		if(bRunning){return false;}
	 	
	 	//Reset array tracker
	 	iLocal = 0;
	 	
	 	//We're running
	 	bRunning = true;
	}//-if(bNew)
 	
 	//Get and validate the domain name
 	sDomain = validateDomain();
 	
 	if(!sDomain) return false;
 	
 	//Handle http on domain
	if("http" != sDomain.substr(0,4) && "ftp" != sDomain.substr(0,3)){
 		sDomain = "http://" + sDomain;
 	}
	 	
 	oAjax.Reset();
 	oAjax.SetVar("domain", sDomain);
 	oAjax.SetVar("proxy_url", "http://" + aLocations[iLocal].subdomain + "upup.com/API/Monitor.php");
 	oAjax.Method = "GET";
 	oAjax.RequestFile = "http://" + sUpupDomain + "/proxy.php";
 	oAjax.ResponseType = "json";
 	oAjax.onLoading = doCheck_onLoaded;
 	oAjax.onCompletion = doCheck_onCompleted;
 	oAjax.onFail = doCheck_onCompleted;
 	oAjax.RunAJAX();
		//oAjax.DebugAJAX();
 
}//-function doCheck
//---------------------------------------------------------------
	 function doCheck_onLoaded(){
	 	oSubmit = document.getElementById('free_check_submit');
	 	oSubmit.value = 'checking';
	 }//-function doCheck_onLoaded
	 
	 function doCheck_onCompleted(){
	 	switch (iLocal){
		 	case (aLocations.length - 1):
			 	oSubmit = document.getElementById('free_check_submit');
			 	oSubmit.value = 'Recheck';
			 	bRunning = false;
			 	//drop trhough
			 	
		 	default:
		 		oContainer = document.getElementById('response_container');
		 		oContainer.style.display = "block";
		 		
		 		//handle json response here to build new response_loc
		 		oCheck = oAjax.Response;
		 		
		 		/*if(oAjaxError.message){
		 			document.getElementById('time_' + iLocal).innerHTML = oCheck.error;
		 		}else{*/
			 		//Correct Returned Time
			 		if(oCheck.direction == 0){ 
			 			sDisplayTime = "DOWN";
			 			oArrow = document.getElementById('status_arrow_' + iLocal + '_down');
			 		}else{
			 			sDisplayTime = oCheck.time + "ms";
			 			oArrow = document.getElementById('status_arrow_' + iLocal + '_up');
			 		}
			 		
			 		//set load time
			 		document.getElementById('time_' + iLocal).innerHTML = sDisplayTime;
			 		
			 		//set arrow
			 		oArrow.style.display = 'block';
			 		
		 		//}//-if(oCheck.error)
		 		
		 		iLocal++;
		 		
		 		if(iLocal < aLocations.length){ 
		 			doCheck();
		 		}//-if(iLocal < aLocations.length)
	 	}//-switch (iLocal)
	 	
	 }//-function doCheck_onCompleted()
//---------------------------------------------------------------

 /**
  * Check if a valid domain has been entered
  */ 
function validateDomain(){ 	
 	//Get Domain
	var oDomain = document.getElementById('domain_field');
 	var sDomain = oDomain.value;
	
	//Check that user entered something
	if(sDomain == "Check if your site is upup!" || sDomain == "Hey, enter a site!" || sDomain == ""){
 		showError('Try typing something in the box first...');
 		
 		return false;
 	}
 	
 	//Remove the protocol from the submitted domain
 	iProtocol = sDomain.indexOf("://")
 	
 	if(iProtocol >= 0){
 		sDomain = sDomain.substr(iProtocol+3);
 	}//if(iProtocol >= 0)
	
	//Validate domain name	
	var reg = new RegExp("^(http[s]?://)?(www\.)?([a-zA-Z0-9-\.]+)([\.])(aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw|arpa)$", "i");
		
	if(!reg.test(sDomain)){
		//Show error
		showError('<img src="http://upup.com/images/dialog-warning.png" width="22px" height="22px" style="margin: -2px auto;"/> Yo bro! We need a valid domain name. Capisce?');
		
		return false;
	}//-if(!reg.test(sDomain))
	
	return sDomain;
}//-function validateDomain()

/**
 * Show submission error messages
 */
function showError(sMessage){
	
	aLocations = getElementsByClassName('response_location',document.getElementById('response_container'));
	
	for(i=0, goTo = aLocations.length; i < goTo; i++){
		oLocation = aLocations[i];
		oLocation.style.display	= 'none';
	}

	oError = document.getElementById('err_msg');
	oError.innerHTML		= sMessage;
	oError.style.display	= 'block';
}//-function showError
 
/**
 * Get elements by classname, start with the parent node...
 */
function getElementsByClassName(classname, node) {
	if(!node) node = document.getElementsByTagName("body")[0];
	
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");

	for(var i=0,j=els.length; i<j; i++)
		if(re.test(els[i].className))a.push(els[i]);

	return a;
}//function getElementsByClassName(classname, node)
