// domain-search javascript

window.addEvent('domready', function() {
	domainSearch = new DomainSearch();
});

// Important: If you edit the supportedSpaces list you must also update the Domainz_Model_Domain_Name array list.

var DomainSearch = new Class({

    //prompt: 'Enter keyword or domain',
	prompt: 'Search for a domain...',
    supportedSpaces: new RegExp("\.(co.nz|net.nz|org.nz|gen.nz|geek.nz|maori.nz|ac.nz|school.nz|com.au|net.au|org.au|com|net|org|info|biz|travel|mobi|us|ca|co.uk|asia|eu)$", "gi"),

	initialize: function() {
		if($defined($('DomainNameSearch'))) {
			if ($('DomainNameSearch').value == '' || $('DomainNameSearch').value == this.prompt) { // add prompt to input
				$('DomainNameSearch').value = this.prompt; 				
				$('DomainNameSearch').setStyle('color', '#9ab7b9');
			}
			
			$('DomainNameSearch').addEvent('focus', function(e) { // clear prompt on focus
				if($('DomainNameSearch').value == this.prompt) {
					$('DomainNameSearch').value = ''; $('DomainNameSearch').setStyle('color', '#142b4b');
				}
			}.bind(this));

			$('DomainNameSearch').addEvent('blur', function(e) { // restore prompt on blur
				if($('DomainNameSearch').value == '') {
					$('DomainNameSearch').value = this.prompt;
					$('DomainNameSearch').setStyle('color', '#9ab7b9');
				}
			}.bind(this));
			
			/*
			 * Temporarily disabling to resolve bug in IE
			$('DomainNameSearch').addEvent('mouseover', function(e) { // clear prompt on focus
				if ($('DomainNameSearch').value == this.prompt) {
					$('DomainNameSearch').setStyle('color', '#9cacad');
				} else {
					$('DomainNameSearch').setStyle('color', '#142b4b');
				}
			}.bind(this));
			
			$('DomainNameSearch').addEvent('mouseout', function(e) { // clear prompt on focus
				$('DomainNameSearch').setStyle('color', '#9ab7b9');
			}.bind(this));
			*/
			
			$('submit').addEvent('click', function(e) { // add some validation
				if($('DomainNameSearch').value == this.prompt || $('DomainNameSearch').value.trim() == '') {
					alert('Please enter a domain name'); $('DomainNameSearch').focus(); return false;
				} else if(!$('DomainNameSearch').value.match(/^[A-Za-z0-9\.-]{2,63}$/) || $('DomainNameSearch').value.match(/^-/) || $('DomainNameSearch').value.match(/-\./) || $('DomainNameSearch').value.match(/^.{2}--/) || $('DomainNameSearch').value.match(/\.\./)) {
					alert('Please enter a valid domain name'); $('DomainNameSearch').focus(); return false;
				} else if($('DomainNameSearch').value.match(/\./) && !$('DomainNameSearch').value.match(this.supportedSpaces)) {
					alert('This domain space is unsupported'); $('DomainNameSearch').focus(); return false;
				}
			}.bind(this));
		}
		
		if($defined($('frm_search_results'))) {
			$$('table.alt-domains tr.tr_available').each(function(tr) { // loop each element
				var checkbox = $(tr.id.replace(/tr/, 'items-domain'));
				checkbox.addEvent('click', function() { this.checkRow(tr); }.bind(this));
				tr.setStyles({
					cursor: 'pointer'
				});
				tr.addEvents({
			        'mouseover': function() { tr.addClass('over'); }.bind(this),
			        'mouseout': function() { tr.removeClass('over'); }.bind(this),
			        'click': function(e) { this.checkRow(tr); }.bind(this)
			    });
			}.bind(this));
		}
 	},
 	
 	checkRow: function(tr) {
 		var checkbox = $(tr.id.replace(/tr/, 'items-domain'));
 		if(!checkbox.checked) {
 	      checkbox.checked = true;
 	      tr.addClass('checked');
 		} else {
 		  checkbox.checked = false;
 		  tr.removeClass('checked');
 		}
 	}

});
