var INVALID_CHARS_REGEXP = /[^abcdefghijklmnopqrstuvwxyz .01234567890-]/gi;

var validTlds = new Array('.ac','.ac.il','.ac.uk','.aero','.ag','.am','.arpa','.as','.at','.au','.be','.bg','.biz','.br','.br.com','.bt','.bz','.ca','.cc','.cd','.ch','.ck','.cl','.cn','.cn.com','.co.il','.co.nz','.co.uk','.com','.com.br','.com.cn','.coop','.cx','.cz','.de','.de.com','.dk','.edu','.edu.cn','.ee','.eu','.eu.com','.fi','.fj','.fm','.fr','.gb.com','.gb.net','.gg','.gm','.gov','.gov.il','.gov.uk','.gs','.hk','.hm','.hn','.hu','.hu.com','.id','.id.au','.ie','.in','.info','.int','.ir','.is','.it','.je','.jobs','.jp','.k12.il','.ke','.kr','.la','.li','.lk','.lt','.lu','.lv','.mc','.md','.me.uk','.mil','.mobi','.ms','.mu','.muni.il','.museum','.mx','.my','.name','.nc','.net','.net.cn','.net.il','.nl','.no','.no.com','.nu','.nz','.org','.org.cn','.org.il','.org.uk','.pl','.pt','.pw','.qc.com','.re','.ro','.ru','.ru.com','.sa.com','.sc','.se','.se.com','.se.net','.sg','.sh','.si','.sk','.sm','.sr','.st','.tc','.tf','.th','.tj','.tm','.to','.tr','.tv','.tw','.ua','.uk','.uk.com','.uk.net','.us','.us.com','.uy.com','.vc','.ve','.vg','.web.com','.ws','.za.com'); 

var usedTlds = new Array('com','net','org','info','biz','us','name','tv','mobi','ca','eu','cc');







var OnKeyRequestBuffer = 

{

        bufferText: false,

        bufferTime: 900,

        

        modified : function(strId)

        {

           setTimeout('OnKeyRequestBuffer.compareBuffer("'+strId+'","'+xajax.$(strId).value+'");', this.bufferTime);

        },

        

        compareBuffer : function(strId, strText)

        {

            if (strText == xajax.$(strId).value && strText != this.bufferText)

            {

                this.bufferText = strText;

                OnKeyRequestBuffer.makeRequest(strId);

            }

        },

        

        makeRequest : function(strId)

        {

            

            var domain = xajax.$(strId).value;

			var domainValue = trim(domain).toLowerCase();

			if(domainValue.indexOf("www.")==0||domainValue.indexOf("http://")==0||domainValue.indexOf("https://")==0)

			domainValue = domainValue.substring(domainValue.indexOf("www.")+4);

			domainValue = domainValue.replace(INVALID_CHARS_REGEXP,'');

			

			var tld = getTld(domainValue);

				

			if(tld!=null&&tld.length>0){

				enterOneDomainLookupMode(tld);

				domain = getDomain(domainValue);

				if(validateDomain(domainValue)){

					xajax_doSearchDomain(domain,tld);

				}

			}else{

				leaveOneDomainLookupMode();

				for(var i=0;i<usedTlds.length;i++){		

					var check_box = getObjectByID(usedTlds[i]+'_tpl');			

					if(check_box.checked){				

						if(validateDomain(domainValue +'.'+check_box.value)){

						 	xajax_doSearchDomain(domainValue,check_box.value);

						}

					}

				}

			}

        }

}





function doLookup(tld){

			var domain = xajax.$('domain').value;

			var domainValue = trim(domain).toLowerCase();

			if(domainValue.indexOf("www.")==0||domainValue.indexOf("http://")==0||domainValue.indexOf("https://")==0)

			domainValue = domainValue.substring(domainValue.indexOf("www.")+4);

			domainValue = domainValue.replace(INVALID_CHARS_REGEXP,'');

			

			//var tld = getTld(domainValue);

				

			if(tld!=null&&tld.length>0){

				enterOneDomainLookupMode(tld);

				domain = getDomain(domainValue);

				if(validateDomain(domainValue)){

					xajax_doSearchDomain(domain,tld);

				}

			}else{

				leaveOneDomainLookupMode();

				for(var i=0;i<usedTlds.length;i++){		

					var check_box = getObjectByID(usedTlds[i]+'_tpl');			

					if(check_box.checked){				

						if(validateDomain(domainValue +'.'+check_box.value)){

						 	xajax_doSearchDomain(domainValue,check_box.value);

						}

					}

				}

			}

}



function getInputValue(){

	var domain=getObjectByID('domain').value;

	var output=trim(domain).toLowerCase();

	if(output.indexOf("www.")==0||output.indexOf("http://")==0||output.indexOf("https://")==0)

	output=output.substring(output.indexOf("www.")+4);

	output=output.replace(INVALID_CHARS_REGEXP,'');

	return output;

}



function getTld(domain){

	if(domain.indexOf(".")==-1)

		return null;

	else

		return domain.substring(domain.indexOf(".")+1,domain.length);

}



function getDomain(domain){

	var output=null;

	if(domain==null)

		output=null;

	else if(domain.indexOf(".")==-1)

		output=domain;

	else

		output=domain.substring(0,domain.indexOf('.'));

	return output;

}

function hasTld(domain){

	return domain.indexOf('.')>-1;

}





function checkspace(checkstr) {

  var str = '';

  for(i = 0; i < checkstr.length; i++) {

    str = str + ' ';

  }

  return (str == checkstr);

}



function getObjectByID(id){

	var theObject;

	if(document.getElementById)

		theObject=document.getElementById(id);

	else

		theObject=document.all[id];

	return theObject;

}



function trim(str)

{

	return str.replace(/^\s*|\s*$/g,"");

}

function validateDomain(nname)

{

	var arr=validTlds;

	var mai=nname;

	var val=true;

	var dot=mai.lastIndexOf(".");

	var dname=mai.substring(0,dot);

	var ext=mai.substring(dot,mai.length);





   







	if(dot>2&&dot<57){

		for(var i=0;i<arr.length;i++){

			if(ext==arr[i]){

				val=true;

				break;

			}else{

				val=false;

			}

		}

		if(val==false){

			return false;

		}else{

			for(var j=0;j<dname.length;j++){

				var dh=dname.charAt(j);

				var hh=dh.charCodeAt(0);

				if((hh>47&&hh<59)||(hh>64&&hh<91)||(hh>96&&hh<123)||hh==45||hh==46){

					if((j==0||j==dname.length-2)&&hh==45){

						return false;

					}

				}

				else{

					return false;

				}

			}

		}

	}

	else{

		return false;

	}

	return true;

}

function enterOneDomainLookupMode(tld){

	for(var i=0;i<usedTlds.length;i++){		

		var result_box = getObjectByID(usedTlds[i]+'_result_box');

		result_box.style.display='none';

	}

	var check_box = getObjectByID(tld+'_tpl');			

	if(check_box.checked){	

		var result_box = getObjectByID(tld+'_result_box');

		if(result_box)

			result_box.style.display='block';

	}	

}

function leaveOneDomainLookupMode(){

	for(var i=0;i<usedTlds.length;i++){

		var check_box = getObjectByID(usedTlds[i]+'_tpl');			

		if(check_box.checked){		

			var result_box = getObjectByID(usedTlds[i]+'_result_box');

			result_box.style.display='block';

		}

	}	

	

}



function toggle_result_box(result_box){	

	var result_box = getObjectByID(result_box+'_result_box');

	if(result_box.style.display=='none'){

		result_box.style.display='block';

		doLookup(result_box);

	}

	else{

		result_box.style.display='none';

	}

}
