
window.addEvent('domready', function(){
	
	var wiDn = $('whois_dn');
	var wiTld = $('whois_tld');
	var wiGet = 	$('whois_get');
	var wiClear = $('whois_clear');
	var wiForm = $('whoisForm');
	
	var allTlds = [];
	wiTld.getElements("option").each(function(op){if(!op.value.test(/all[uk]*/i)) allTlds.push(op.value);});
	
	// input value validation
	function domainSearchInputValid(el){
		var regDomainSearch = /^[A-Z0-9-]+$/i;
		if(el.value.match(regDomainSearch)){
			return true;
		}else{
			return false;
		}
	}

	// checks input state and sets 'check' button disabled value
	function setInputState(){
		if(wiDn.get('value').length > 0){
			if(domainSearchInputValid(wiDn)){				
				wiDn.removeClass('badSearchDomain');
				wiGet.erase('disabled');
			}
			else{
				if(wiDn.get('value') != wiDn.get('alt')) wiDn.addClass('badSearchDomain');
				wiGet.set('disabled', 'disabled');
			}
		}
		else
		{
			wiGet.set('disabled', 'disabled');
		}		
	}	
	
	function doWhois(){
		if(domainSearchInputValid(wiDn)){		
			var selTld = wiTld.get('value').toLowerCase();
			var searchVal = wiDn.get('value').toLowerCase();
			switch(selTld){
				case 'all':
					whois.clearResults();
					allTlds.each(function(tld){whois.addRequest(searchVal, tld)});
					wiClear.setStyle('display','inline');
					break;
				
				case 'alluk':
					whois.clearResults();
					allTlds.each(function(tld){if(tld.test(/\.uk$/))whois.addRequest(searchVal, tld)});
					wiClear.setStyle('display','inline');
					break;
				
				default:
					whois.addRequest(searchVal, selTld)
			}
		}
		else{
			wiDn.focus();
		}		
	}


	new DefaultFieldValue({collection: $$('input.defaultValue')});
		
	setInputState();
	
	var smoodalBox = new SmoodalBox({boxWidth:600, boxHeight:500, boxDuration:300, overlayOpacity:0.75, overlayDuration:200});
	var whois = new WhoisRequestHandler('whois_results', {onResult: smoodalBox.bindElements.bind(smoodalBox)});

	// input event handler
	wiDn.addEvent('keyup', function(){
		setInputState();
	});
	
	// 'check' button click handler	
	wiGet.addEvent('click', function(e){
		e.stop();
		doWhois();
	});
	
	wiForm.addEvent('submit', function(e){
		e.stop();
		doWhois();
	});	
	
	// 'clear' button click
	$('whois_clear').addEvent('click', function(e){
		e.stop();
		whois.clearResults();
		wiClear.setStyle('display','none');
		wiDn.focus();
	});

});


