
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

var firstpage = 1;
var globalMonth = new Array('jan','feb','mar','apr','may','june','july','aug','sept','oct','nov','dec');

function mainPriImage(obj) {
	var mn = new Date().getMonth();
	var m = globalMonth[mn];
	if ($('priFormSpecial').hasClassName('mainPriConf')) {
		$('priFormSpecial').setStyle({
			backgroundImage: 'url(/images/backgrounds/pri-confirmation-' + m + '.jpg)',
			backgroundRepeat: 'no-repeat'
		});
	} else {
		$('priFormSpecial').setStyle({
			backgroundImage: 'url(/images/backgrounds/pri-form-' + m + '.jpg)',
			backgroundRepeat: 'no-repeat'
		});
	}
}

function checkParam(paramType){
    var params = document.getElementsByName(paramType);
    for(var i=0;i<params.length;i++){
        if(params[i].checked){
            return true;
        }
    }
    return false;
}

function checkCharacter(){
    if($("charLength").selectedIndex>0) return true;
    if($("hyphenExcluded").checked) return true;
    if($("numbersExcluded").checked) return true;
    if($("words").selectedIndex>0) return true;
    return false;
}

function initPage(){
    changeStatus('narrowSearchKey');
	if(checkParam('tlds')){
        changeStatus('extensionKey');
    }
    if(checkParam('priceRange') || $('requirePrice').checked){
        changeStatus('priceKey');
    }
    if(checkCharacter()){
        changeStatus('charactersKey');
    }
}

function manageCategories(event) {
	Event.stop(event);
	pageTracker._trackPageview('tracking=search-results-manage-categories');
	Lightview.show({
		href: 'manage-categories.jsp',
		rel: 'ajax',
		title: 'Manage Categories',
		options: {
			width: 625,
			height: 400,
			ajax: {
				onComplete: function(){ loadData(); }
			}
		}
	});
}

function manageExtensions(event) {
	Event.stop(event);
	pageTracker._trackPageview('tracking=search-results-manage-extensions');
	Lightview.show({
		href: 'tld.jsp',
		rel: 'ajax',
		title: 'Manage Extensions',
		options: {
			width: 625,
			height: 400,
			ajax: {
				onComplete: function(){ loadTldData(); }
			}
		}
	});
}

function managePrices(event) {
	Event.stop(event);
	pageTracker._trackPageview('tracking=search-results-manage-prices');
	Lightview.show({
		href: 'manage_more_prices.jsp',
		rel: 'ajax',
		title: 'Manage Prices',
		options: {
			width: 420,
			height: 150,
			ajax: {
				onComplete: function(){ loadPriceData(); }
			}
		}
	});
}

function manageLocation(event) {
	Event.stop(event);
	pageTracker._trackPageview('tracking=search-results-manage-location');
	Lightview.show({
		href: 'manage_location.jsp',
		rel: 'ajax',
		title: 'Manage Location',
		options: {
			width: 420,
			height: 200,
			ajax: {
				onComplete: function(){ loadGeoData(); }
			}
		}
	});
}

function exactMatchLB(type, dn, price) {
	pageTracker._trackPageview('tracking=search-results-exact-' + type + '-lightbox');
	
	//alert('open');
	Lightview.show({
		href: 'exactMatch-' + type + '.jsp',
		rel: 'ajax',
		title: '<span class="dark">' + dn + ' is available for ' + price + '!</span>',
		options: {
			width: 475,
			height: 300,
			closeButton: false,
			ajax: {
				onComplete: function(){ 
					if ($('exactMatchBuy')) {
						$('exactMatchBuy').innerHTML = "Buy " + dn + " for " + price;
						$('exactMatchBuy').href = "/AddToCart.do?selectedDomains=" + dn;
					} else {
						$('exactMatchPRI').innerHTML = "Request Price for " + dn;
					}
				}
			}
		}
	});
}

function exactMatchPRI(event) {
	Event.stop(event);
	var kw = $('exactMatchKeyword').innerHTML;
	var dn = kw.strip();
	pageTracker._trackPageview('tracking=search-results-exact-pri-lightbox-click');
	priceRequest(event, dn);
}

function exactMatchClose(type) {
	pageTracker._trackPageview('tracking=search-results-exact-' + type + '-continue');
	Lightview.hide();
}

function validateFormInfo() {
    var errors = new Array();
    if ($("firstName").value.trim() == "") {
        errors[errors.length] = "Please enter a First Name.";
    }
    if ($("lastName").value.trim() == "") {
        errors[errors.length] = "Please enter a Last Name.";
    }
    if ($("phoneNumber").value.trim() == "") {
        errors[errors.length] = "Please enter a Phone Number.";
    }
	var email = $("email").value.trim();
    if (email == "") {
        errors[errors.length] = "Please enter an Email Address.";
    }
    var email2 = $("confirmEmail").value.trim();
    if (email2 == "" || email != email2) {
        errors[errors.length] = "Please enter the exact same email address in Confirm E-mail";
    }
    return errors;
}

function showFormErrors(errors) {
    var errorHtml = "";
    if (errors) {
        var length = errors.length;
        for (var i = 0; i < length; i++) {
            var error = errors[i];
            if (i >= 0) {
	            errorHtml += "<li>" + error + "</li>";
			}
        }
    }
    $("errorMessage").innerHTML = errorHtml;
    $("errorFront").show();
}

function priceRequest(event, domain) {
	Event.stop(event);
	var dn = domain;
	//var r = referrer_id;
	pageTracker._trackPageview('tracking=search-results-lightbox-pri');
	Lightview.show({
		href: '/priForm.do?domain=' + dn,
		rel: 'ajax',
		title: 'Price Request for <b>' + dn + '</b>',
		options: {
			width: 610,
			height: 650,
			overflow: 'hidden',
			ajax: {
				method: 'get',
				onComplete: function(){ mainPriImage(); }
			}
		}
	});
}

function validateFormInfo() {
	var errors = new Array();
	var form = $('lbPRI');
	if ($F('firstName').empty()) {
		errors[errors.length] = "Please enter a First Name.";
	}
	if ($F('lastName').empty()) {
		errors[errors.length] = "Please enter a Last Name.";
	}
	if ($F('phoneNumber').empty()) {
		errors[errors.length] = "Please enter a Phone Number.";
	}
	if ($F('email').empty()) {
	  	errors[errors.length] = "Please enter an Email Address.";
	}
	if ($F('confirmEmail').empty() || $F('email') !== $F('confirmEmail')) {
		errors[errors.length] = "Please enter the exact same email address in Confirm E-mail.";
	}
	if (!form.getInputs('checkbox', 'termsAgree').pluck('checked').any()) {
		errors[errors.length] = "Please agree to Terms of Use.";
	}
	return errors;
}

function showFormErrors(errors) {
	var errorHtml = "";
	if (errors) {
		var length = errors.length;
		for (var i = 0; i < length; i++) {
			var error = errors[i];
			if (i >= 0) {
				errorHtml += "<li>" + error + "</li>";
			}
		}
	}
	$("errorMessage").innerHTML = errorHtml;
	$("errorFront").show();
}

function priceRequestSubmit(event, domain) {
	Event.stop(event);
	var dn = domain;
	var form = $('lbPRI');
	var values = form.serialize(true);
    var firstName = $F('firstName');
    var lastName = $F('lastName');
    var email = $F('email');
    var confirmEmail = $F('confirmEmail');
    var phoneNumber = $F('phoneNumber');
	if (firstName.empty() || lastName.empty() || email.empty() || confirmEmail.empty() || phoneNumber.empty() || email !== confirmEmail || !form.getInputs('checkbox', 'termsAgree').pluck('checked').any()) {
		
		var errors = validateFormInfo();
		showFormErrors(errors);
		
	} else {
		pageTracker._trackPageview('tracking=search-results-lightbox-pri-complete');
		var href='/priFormSubmit.do?optional=company&optional=purchase_timeframe&optional=reason_for_interest&domain=' + dn +'&requestPriceValidation=true&firstname='+ encodeURIComponent(firstName) +'&lastname='+ encodeURIComponent(lastName) +'&email='+ encodeURIComponent(email) +'&confirmEmail='+ encodeURIComponent(confirmEmail) +'&phone='+ encodeURIComponent(phoneNumber) +'&country='+encodeURIComponent($F('country'))+'&mailinglist='+encodeURIComponent($F('mailinglist'))+'&autofill='+encodeURIComponent($F('autofill'))+'&terms_agree='+encodeURIComponent($F('termsAgree'));
		Lightview.show({
		href: href,
		rel: 'ajax',
		title: 'Price Request for <b>' + dn + '</b>',
		options: {
			width: 610,
			height: 500,
			ajax: {
				method: 'post',
				//parameters: Form.serialize('domainForm');, // the parameters from the form
				onComplete: function(){ mainPriImage(); }
			}
		}
		});
	}
}

function downloadList(event) {
	Event.stop(event);
	pageTracker._trackPageview('tracking=search-results-download-results');
	Lightview.show({
		href: 'download-results.jsp',
		rel: 'ajax',
		title: 'Download a List of Your Search Results',
		options: {
			width: 600,
			height: 500,
			ajax: {
				onComplete: function(){ document.getSearchResultsForm.firstName.focus(); }
			}
        }
	});
}

function submitSearchForm(){
	if(validateKeywords($('searchKeywordsForm'))) {
		$('exactMatch_SW').innerHTML = 'false';
		$('searchKeywordsForm').submit();
	}			
}

function updateTaxonomies(taxList){
	var l1s = new Array();
	var tldsBody = $('l1body');
 	dwr.util.removeAllRows(tldsBody);
 	for(var i=0; i < taxList.length; i++){
 		var l1 = taxList[i].l1;

 		var row = tldsBody.insertRow(-1);
 		var cell = row.insertCell(-1);
 		var sb = new Array();
 		sb.push('<div class="sMargLeft">');
		sb.push('<input type="checkbox" checked value="' + l1.id + '" name="categoryL1"');
		sb.push('onclick="selectL1Checkbox(this)" />&nbsp;'+ l1.label);
		sb.push('<span id="catl1_'+l1.id +'">()</span>');
		sb.push('</div>');
		if(taxList[i].level2.length > 0)
			sb.push('<div class="subCat">'+ taxList[i].level2.length + ' sub-categories selected</div>');
			sb.push('<input type="hidden" value="'+ l1.id + '" id="l1_'+i+'" />');
			if(taxList[i].level2 != null && taxList[i].level2.length > 0)
				for(var j=0; j < taxList[i].level2.length; j++){
					sb.push('<input type="hidden" value="'+ taxList[i].level2[j] + '" name="l2_'+ l1.id +'" />');
		}
		//if(i == 0)alert(sb.join(' '));
		cell.innerHTML = sb.join(' ');
 	}
 	$('l1Size').value = taxList.length;
	$('allCategory').checked = false;
	ajaxSearch();
	$('homePageCategoryHeader').innerHTML = 'Premium Domain Name Search Results';				
}

function addNewTld(tlds){
 	var tldsBody = $('tldsBody');
 	dwr.util.removeAllRows(tldsBody);
 	var row;
 	for(var i=0; i < tlds.length;i++){
 		var tld = tlds[i];

 		var sHtml = '<div class="h24 lMargLeft"><input type="checkbox" checked value="'+tld +'" name="tlds" onclick="selectTld(this)"/>&nbsp;' + tld +
 			'&nbsp;<span id="tld_'+ tld.substring(1) + '"></span></div>';
 		var row = tldsBody.insertRow(-1);
 		row.name = 'tr_tld';
 		var cell = row.insertCell(-1);
 		cell.innerHTML = sHtml;
 	}
 	if(tlds.length > 0){
 		$('allTlds').checked = false;
 		ajaxSearch();
 	}
}

var sortHeaders = new Array('domain', 'categoryL1', 'price');

function sort(fieldName){
	$("sort_by").value = fieldName;
	
	if($(fieldName == '' || "sort_direction").value == 'asc'){
		$("sort_direction").value = 'desc'
	} else {
		$("sort_direction").value = 'asc';
	}
	
	for(var i=0; i < sortHeaders.length; i++){
		var span = $('sort'+sortHeaders[i]);
		if(fieldName == sortHeaders[i]){
			if($("sort_direction").value == 'desc') {
				span.innerHTML = '<img src="/images/buttons/arrow_sort_down.gif" width="11" height="6" border="0"/>';
			} else {
				span.innerHTML = '<img src="/images/buttons/arrow_sort_up.gif" width="11" height="6" border="0"/>';
			}
 		} else {
			dwr.util.setValue('sort'+sortHeaders[i], '');
		}
	}
	ajaxSearch();
}



function validateKeywords(form){

var kform = $('searchKeywordsForm');
var kinput = kform['keywords'];
var kw = $F(kinput);

$('errorSearchKeywords').innerHTML = '';
$('errorSearchKeywords').hide();
kw = kw.replace(/^\s+|\s+$/, '');
if(kw == ''){
	$('errorSearchKeywords').innerHTML = 'Keywords field is required';
	$('errorSearchKeywords').show();
	return false;
}
var regexp = /^[0-9a-zA-Z\-]+([.][a-zA-Z]+){0,2}$/;
var pattern = /,|\s/;

var keywords = kw.split(pattern);
for(var i=0; i < keywords.length;i++){
	var s = keywords[i].replace(/^\s+|\	s+$/, '');
	if(s != '' && !regexp.exec(s)){
		$('errorSearchKeywords').innerHTML = 'Wrong input format.';
		$('errorSearchKeywords').show();
		return false;
	}
}
return true;
}

// get array of elements of the same obj type with same class
function getElementsByClass(objArea, thisTag, thisClass) {
if (objArea != "") {
	var obj = $(objArea).s(thisTag);
} else {
	var obj = document.getElementsByTagName(thisTag);
}
var arrElements = new Array();
for (i = 0; i < obj.length; i++) {
	if(obj[i].className == thisClass) {
		arrElements[arrElements.length] = obj[i]
	}
}
return arrElements;
}

function validateExactMatchSearch(form){
var em = $("searchString").getValue();
$('errorExactMatchAO').innerHTML = '';
$('errorExactMatchAO').hide();
em = em.replace(/^\s+|\s+$/, '');
if(em == ''){
	$('errorExactMatchAO').innerHTML = 'Please enter a desired domain name!';
	$('errorExactMatchAO').show();
	return false;
}
var regexp = /^[0-9a-zA-Z\-]+([.][a-zA-Z]+){0,2}$/;
var pattern = /,|\s/;

var keywords = em.split(pattern);
for(var i=0; i < keywords.length;i++){
	var s = keywords[i].replace(/^\s+|\	s+$/, '');
	if(s != '' && !regexp.exec(s)){
		$('errorExactMatchAO').innerHTML = 'Please correctly complete the domain name format!';
		$('errorExactMatchAO').show();
		return false;
	}
}
pageTracker._trackPageview('tracking=search-assistedoffer-button-onsubmit');
return true;
}

function validateExactMatchSearch2(form){
var em = $("searchString2").getValue();
$('errorExactMatchAO2').hide();
em = em.replace(/^\s+|\s+$/, '');
if(em == ''){
	$('aoError').innerHTML = 'Please enter a desired domain name!';
	$('errorExactMatchAO2').show();
	return false;
}
var regexp = /^[0-9a-zA-Z\-]+([.][a-zA-Z]+){0,2}$/;
var pattern = /,|\s/;

var keywords = em.split(pattern);
for(var i=0; i < keywords.length;i++){
	var s = keywords[i].replace(/^\s+|\	s+$/, '');
	if(s != '' && !regexp.exec(s)){
		$('aoError').innerHTML = 'Please correctly complete the domain name format!';
		$('errorExactMatchAO2').show();
		return false;
	}
}
pageTracker._trackPageview('tracking=search-assistedoffer-button-onsubmit');
return true;
}

function clickSearch(){
if (validateKeywords($('searchKeywordsForm'))) {
	$('exactMatch_SW').innerHTML = 'false';
	ajaxSearch();
}
return false;
}

var afternicURL = "<%=afternicURL%>";

function getSearchParameter(paramName){
	
	var search = window.location.search;
	var params = search.substring(1).split("&"); 
	for(var i=0; i < params.length;i++){
		var p = params[i].split('=');
		if(p.length==2 && p[0] == paramName) return p[1];
	}
	return '';
}


function changeCharLength(){
	$('lengthMin').value='';
	ajaxSearch();
}
function scrollRight(pageNum){
	 	//if((firstpage + 10) == pageNum ) firstpage++;
	 	$('currentpage').value = pageNum;
	 	ajaxSearch1(pageNum);
}

function jumpLastPage(){
	var numFound = $('sizeOfResultSet').value;
	var sel = $('pageSizeSel1');
	var pageSize = parseInt(sel.options[sel.selectedIndex].value);
	var nrPages = Math.floor(numFound/pageSize) + 1;
	jumpToPage(nrPages);
}

function jumpFirstPage(){
	jumpToPage(1);
}
function scroll1(pageNum){
 		//if(firstpage > 1 ) firstpage--;
 		$('currentpage').value = pageNum;
 		ajaxSearch1(pageNum);
}
function fillPagination(searchResult){
 		pagination(searchResult, 'pagination1');
 		pagination(searchResult, 'pagination2');
}

function jumpToPage(pageNum){
 		$('currentpage').value = pageNum;
 		ajaxSearch1(pageNum);
}

 	
function pagination(searchResult, name){
	var numFound = searchResult.numFound;
	var span = $(name);
	var sel = $('pageSizeSel1');
	var pageSize = parseInt(sel.options[sel.selectedIndex].value);

	var nrPages = Math.floor(numFound/pageSize) + 1;
	if(Math.floor(numFound/pageSize) == (numFound/pageSize))  nrPages--;

	var pageNum = parseInt($('currentpage').value);
	
	var s = '';
	var last = Math.min(pageSize * pageNum, numFound);
	var firstpage = (pageNum - 3) > 0 ? (pageNum - 3) : 1;
	if(firstpage > nrPages-7 && nrPages-7 >= 0) firstpage = nrPages-6;
	dwr.util.setValue('displaylimits', (pageSize * (pageNum - 1) + 1) + ' - ' + last);
	if(nrPages > 1){
		resetThisPagePath();
		for(var i = firstpage; i < (firstpage+7) && i <= nrPages; i++){
			if(i == pageNum)
				s = s + i + '&nbsp;&nbsp;';
			else
			s = s + '<a href="'+getThisPagePath(i)+'" onclick="javascript:jumpToPage(\'' + i + '\');return false;" >' + i + '</a>'+ '&nbsp;&nbsp;';
		}
		if(pageNum > 1){
			s = '| <a href="'+getThisPagePath(1)+'" onClick="javascript:jumpFirstPage();return false;" ><b><</b></a>&nbsp;&nbsp;'+
				'<a href="'+getThisPagePath(pageNum-1)+'" onclick="javascript:jumpToPage(\''  + (pageNum-1) + '\');return false;" ><b><<</b></a>&nbsp;|&nbsp;' + s;
		}
		if(pageNum < nrPages){
			s = s + '| <a href="'+getThisPagePath(pageNum+1)+'" onclick="javascript:jumpToPage(\''  + (pageNum+1) + '\');return false;" ><b>>></b></a>'+
			'&nbsp;&nbsp;<a href="'+getThisPagePath(nrPages)+'" onClick="javascript:jumpToPage(\'' + nrPages +'\');return false;" ><b>></b></a>&nbsp;|&nbsp;'
		}
	}
	span.innerHTML = s;
}

var thisPagePath = ""; 

function resetThisPagePath() {
    var result = window.location.pathname+"?";
    result+= addParam2URL("searchType",getSearchParameter("searchType"), false); 
    result+= getDownloadParameters();  
    thisPagePath = result;
}	
function addParam2URL(name,value,isEmptyAllowed) {
	return (value != null && (isEmptyAllowed || value != '')) ? '&'+name+'='+value : '';  
}
function getThisPagePath(pageNum) {
	return thisPagePath+"&pageNum="+pageNum;
}

function selectTld(checkbox){
	if(checkbox.checked){
		$('allTlds').checked = false;
	} else {
		var checkAll = true;
		var chks = $$('input[name="tlds"]');
		for(var i=0; i < chks.length;i++)
			if(chks[i].checked) {
				checkAll = false;
				break;
			}
		$('allTlds').checked = checkAll;
	}
	ajaxSearch();
}

function selectPriceRange(checkbox){
	if(checkbox.checked){
		$('allPrices').checked = false;
		//$('requirePrice').checked = false;
	} else {
		var checkAll = true;
		var chks = $$('input[name="priceRange"]');
		for(var i =0; i < chks.length;i++)
			if(chks[i].checked) {
				checkAll = false;
				break;
			}
		$('allPrices').checked = checkAll;
		//$('requirePrice').checked = checkAll;
	}
	ajaxSearch();
}

function selectRequirePriceRange(checkbox){
	if(checkbox.checked){
		$('allPrices').checked = false;
		var chks = $$('input[name="priceRange"]');
		for(var i =0; i < chks.length;i++){
			chks[i].checked = false;
		}
	}else{
		$('allPrices').checked = true;
	}
	ajaxSearch();
}

function selectAllPrices(){
	var chks = $$('input[name="priceRange"]');
	if($('allPrices').checked){
		
		$('requirePrice').checked = false;
		for (var i = 0; i < chks.length; i++) {
  			chks[i].checked = false;
  		}
  		$('minPrice').value = '';
  		$('maxPrice').value = '';

  		ajaxSearch();

	} else {

	}
}

function alreadyAdded(tld){
	var tlds = $$('input[name="tlds"]');
	for(var i =0; i < tlds.length;i++)
		if(tlds[i].value == tld) return true;
	return false;
}
function selectAllTlds(){
	var chks = $$('input[name="tlds"]');
	if($('allTlds').checked){
  		for (var i = 0; i < chks.length; i++) {
  			chks[i].checked = false;
  		}
  		ajaxSearch();
	} else {

	}

}


function selectL1Checkbox(checkbox){
	if(checkbox.checked)
		$('allCategory').checked=false;
	else {
		var checkAll = true;
		var chks = $$('input[name="categoryL1"]');
		for(var i =0; i < chks.length;i++)
			if(chks[i].checked) {
				checkAll = false;
				break;
			}
		$('allCategory').checked = checkAll;
		$('homePageCategoryHeader').innerHTML = 'Premium Domain Name Search Results';
	}
	ajaxSearch();
}
function selectAllCategory(){
	var chks = $$('input[name="categoryL1"]');
	if($('allCategory').checked){
  		for (var i = 0; i < chks.length; i++) {
  			chks[i].checked = false;
  		}
  		ajaxSearch();
		$('homePageCategoryHeader').innerHTML = 'Premium Domain Name Search Results';
	} else {
	}

}

var tdClassNames = new Array('similar', 'domain', 'category', 'price', 'buyReq');

function fillDomainsToRegister(searchResult){
    var domains = searchResult.registralDomains;
    for(var i = 0; i < 2 && i < domains.length; i++){
        if(domains[i].isRegistrationOffer){
            if($('exactMatch_SW').innerHTML == 'false'){
                $('success').hide();
				$('exRegister').show();
                $('nomatch').hide();
				$('featuredDomains').show();
				$('assistedOffer').show();
				$('exactMatchCallout_KW').innerHTML = domains[i].capName+'&nbsp;';
                $('exactMatchCallout_P').innerHTML = '&nbsp;for&nbsp;'+domains[i].priceAsMoneyString + '&#42;';
				$('exactMatchCalloutBuyNow_btn').innerHTML = "<a onclick='pageTracker._trackPageview(\"tracking=search-register-exact-button\");' href='http://buydomainsregistration.com/domains/Register.asp?sld="+domains[i].nameWithoutTld+'&tld='+domains[i].tld+"'><img src='/images/premium/mdg/btn_registerNow.jpg' border='0' style='padding-right:10px' /></a>";
				pageTracker._trackPageview('tracking=search-exact-register-onload');
				$('exactMatch_SW').innerHTML = 'true';
            }
        }
    }
}


function fillTable(searchResult) {
    dwr.util.removeAllRows("searchResultsBody");
	
    if (searchResult.numFound > 0) {
        var cellFuncs = [
            function(data) {
                return '<a href="/find-premium-domains/search-results.jsp?style=s&domain=' +
                       dwr.util.escapeHtml(data.name) + '"><img src="/images/buttons/icon_magnifyingglass.gif" width="13" height="13" border="0" alt="Find Similar Domains to' + dwr.util.escapeHtml(data.name) + '" /></a>';
            },
            function(data) {
                if (data.isExactMatch) {
                    return '<a href="/find-premium-domains/domain-details.jsp?domain='+data.capName + '">'+data.capName +'</a>' + '<span>- exact match</span>';
                } else {
					bannerNoExactMatch();
					return '<a href="/find-premium-domains/domain-details.jsp?domain='+data.capName + '">'+data.capName +'</a>';
                }
            },
            function(data) {
                if (data.categoryL1 != '') {
                    var s = '<a href="/find-premium-domains/search-results.jsp?l1=' + data.categoryID + '">' + data.categoryL1 + '</a>';
                    return s;
                }
                else return '&nbsp;';
            },
            function(data) {
                if (data.isListed)
                    return data.priceAsMoneyString;
                else return '&nbsp;';
            },
            function(data) {
                if (data.isListed) {
                    if (data.isExactMatch && $('exactMatch_SW').innerHTML == 'false') {
                        $('success').show();
						$('exRegister').hide();
				        $('nomatch').hide();
						$('featuredDomains').hide();
						$('assistedOffer').hide();
						$('exactMatchKeyword').innerHTML = data.capName + '&nbsp;';
						$('exactMatchPrice').innerHTML = '&nbsp;for&nbsp;' + data.priceAsMoneyString;
                        $('exactMatchRegister').hide();
						$('exactMatchAdd').innerHTML = '<a onclick="javascript:pageTracker._trackPageview(\'tracking=search-exact-buynow-button\');" href="/AddToCart.do?selectedDomains=' + dwr.util.escapeHtml(data.name) + '"/>Add to Cart</a>';
						$('exactMatchAdd').show();
						$('exactMatchRequest').hide();
						pageTracker._trackPageview('tracking=search-exact-buynow-onload');
                        $('exactMatch_SW').innerHTML = 'true';
						$('priceAsterisk').innerHTML = '';
						pageTracker._trackPageview('tracking=search-results-exact-' + data.capName + '-onload');
                    }
                    return '<a href="/AddToCart.do?selectedDomains=' + dwr.util.escapeHtml(data.name) + '" onclick="pageTracker._trackPageview(\'tracking=search-buynow-' + dwr.util.escapeHtml(data.name) + '-button\');"><img src="/images/buttons/addToCart.png" width="92" height="19" border="0" alt="Add To Cart"/></a>';
                } else {
                    if (data.isExactMatch && $('exactMatch_SW').innerHTML == 'false') {
                        $('success').show();
						$('exRegister').hide();
				        $('nomatch').hide();
						$('featuredDomains').hide();
						$('assistedOffer').hide();
						$('exactMatchKeyword').innerHTML = data.capName + '&nbsp;';
						$('exactMatchPrice').innerHTML = '';
						$('exactMatchRegister').hide();
						$('exactMatchAdd').hide();
						$('exactMatchRequest').innerHTML = '<a onclick="javascript:pageTracker._trackPageview(\'tracking=search-exact-pri-button\');" href="/AddToCart.do?selectedDomains=' + dwr.util.escapeHtml(data.name) + '"/>Request Price</a>';
						$('exactMatchRequest').show();
						pageTracker._trackPageview('tracking=search-exact-pri-onload');
                        $('exactMatch_SW').innerHTML = 'true';
						$('priceAsterisk').innerHTML = '';
						pageTracker._trackPageview('tracking=search-results-exact-' + data.capName + '-onload');
                    }
                    return '<a href="#" onclick="priceRequest(event, \'' + dwr.util.escapeHtml(data.name) + '\')" rel="nofollow"><img src="/images/buttons/requestPrice.png" width="92" height="19" border="0" alt="Request Price"/></a>';
                }
            }
        ];

        dwr.util.addRows("searchResultsBody", searchResult.foundDomains, cellFuncs, {
			rowCreator:function(options) {
				var row = new Element('tr');
                if (options.rowIndex % 2 == 0) {
					row.className = "alternate";
				} else {
					row.className = "";
				} return row;
            },
            cellCreator:function(options) {
                var td = new Element('td');
                td.className = tdClassNames[options.cellNum];
				//alert(td.className);
                return td;
            },
            escapeHtml:false
        });
    } else {
        // Update the top pane separately here if there were no search results produced by this search.
        bannerNoExactMatch();
    }
	var kform = $('searchKeywordsForm');
	var kinput = kform['keywords'];
	var kw = $F(kinput);
}


function bannerExactMatch(data) {
    if ($('exactMatch_SW').innerHTML == 'false') {
        $('success').hide();
		$('exRegister').show();
        $('nomatch').hide();
		$('featuredDomains').hide();
		$('assistedOffer').hide();
        $('exactMatchKeyword').innerHTML = data.capName + '&nbsp;';
		pageTracker._trackPageview('tracking=search-results-exact-' + data.capName + '-onload');
    }
}

function bannerNoExactMatch() {
    if ($('exactMatch_SW').innerHTML == 'false') {
        $('success').hide();
		$('exRegister').hide();
		$('nomatch').show();
		$('featuredDomains').show();
		$('assistedOffer').show();
		var kform = $('searchKeywordsForm');
		var kinput = kform['keywords'];
		var kw = $F(kinput);

        var text;
		// keyword exists
        if (kw.length > 0) {
            text = "Looks like <strong>" + kw + "</strong> is already taken.<br />What now? You have two great options..."
					+"<div class=\"callsteps\">"
					+"1. Give us a call and we can help.<br />"
					+"<div class=\"callstepsphone sPadTop\">"
					+"<strong>"+$('tollPhone1').value+"</strong> (Toll Free)<br />"
					+"<strong>"+$('localPhone1').value+"</strong> (Outside the US)"
					+"</div>"
					+"</div>"
					+"<div class=\"callsteps\">"
					+"2. Refine your search for more targeted results.<br />"
					+"<div class=\"callstepsphone sPadTop\">"
					+"Use the \"Filter Results\" below on the left."
					+"</div>"
		 			+"</div>";
		// no keyword
        } else {
            text = "Did you find what you're looking for?<br />If not, here are a few ideas."
					+"<div class=\"callsteps\">"
					+"1. Give us a call and we can help.<br />"
					+"<div class=\"callstepsphone sPadTop\">"
					+"<strong>"+$('tollPhone1').value+"</strong> (Toll Free)<br />"
					+"<strong>"+$('localPhone1').value+"</strong> (Outside the US)"
					+"</div>"
					+"</div>"
					+"<div class=\"callsteps\">"
					+"2. Refine your search for more targeted results.<br />"
					+"<div class=\"callstepsphone sPadTop\">"
					+"\"Start Keyword Search\" below on the left will help you pinpoint the perfect name to grow your business."
					+"</div>"
		 			+"</div>";
			pageTracker._trackPageview('tracking=search-noexact-nokeyword-onload');
        }
        $('noExactMatchCallout_KW').innerHTML = text;
    }
}

function ajaxSearch(){
	firstpage = 1;
	ajaxSearch1('1');
}

function fillTaxonomyConstraints(searchParams){
	var ref1Ids = new Array();
  	var ref2Ids = new Array();
  	var chks = $$('input[name="categoryL1"]');
  	for (var i = 0; i < chks.length; i++)
			if(chks[i].checked) {
				var l2s = $$('input[name="l2_' + chks[i].value +'"]');
				if(l2s.length == 0) ref1Ids.push(chks[i].value);
				else {
					for(var j=0; j < l2s.length;j++)
						ref2Ids.push(l2s[j].value);
				}
			}
	searchParams.categoryL1 = ref1Ids;
  	searchParams.categoryL2 = ref2Ids;
}

function fillExactMatchesFromAfternic(searchResult){
 	var domains = searchResult.exactMatchesFromAfternic;
 	var elem = $('exactMatchesFromAfternic');
 	var s = '';
	var records = 0;
    if (domains) {
        for (var i = 0; i < 3 && i < domains.length; i++) {
            records++;
            s += '<a class="anPromoLeft" href="' + afternicURL + '/name.php?domain=' + domains[i] + '" onclick="javascript:pageTracker._trackPageview(\'tracking=afternic-exact-match\');">"' + domains[i] + '" is available through auction on</a>';
            s += '<a class="anPromoLogo" href="' + afternicURL + '/name.php?domain=' + domains[i] + '" onclick="javascript:pageTracker._trackPageview(\'tracking=afternic-exact-match\');"><img src="../images/anPromoLogo.jpg" border="0" /></a>';
            s += '<a class="anPromoRight" href="' + afternicURL + '/name.php?domain=' + domains[i] + '" onclick="javascript:pageTracker._trackPageview(\'tracking=afternic-exact-match\');">bid now!</a>';
            s += '\n';
        }
    }
	if(elem) {
		elem.innerHTML = s;
		elem.style.height=''+39*records+'px';
		// elem.style.visibility = records == 0 ? 'hidden':'visible';
	}
}

function createSearchParameters() {
    var searchParams = {keywords:null, tlds:null, sort_by:null, sort_direction:null, charLength:null,
        hyphenExcluded:null, numbersExcluded:null, minPrice:null, maxPrice:null, isInternalUser:null,
        lengthMin:null, geoLocation:null, showExactMatchesFromAfternic:null, requirePrice:null,
        allPriceRanges:null,origTldList:null,words:null };
    dwr.util.getValues(searchParams);
    searchParams.requirePrice = ($('requirePrice').checked);
    searchParams.tlds = getDataFromCheckboxes($$('input[name="tlds"]'));
    searchParams.origTldList = getOrigTldList($$('input[name="tlds"]'));
    searchParams.isInternalUser = getCookie('YD') == '1';
    searchParams.cartId = getCookie('cart_id');
    fillTaxonomyConstraints(searchParams);
    searchParams.priceRange = getPriceRanges();   
    searchParams.allTlds = $('allTlds').checked;
    searchParams.allPriceRanges = $('allPrices').checked;

	var kform = $('searchKeywordsForm');
	var kinput = kform['keywords'];
	
	searchParams.keywords = $F(kinput);
	//searchParams.keywords = document.searchKeywordsForm.keywords.value.toLowerCase();
	
	searchParams.keyword_s = 'contains';
    var radios = $$('input[name="keyword_s"]');
    for(var i=0; i <radios.length;i++)
        if(radios[i].checked) searchParams.keyword_s=radios[i].value;
    if ($('useGeoLocation').checked) {
        searchParams.geoLocation=getGeoLocationArray();
    }
    searchParams.showExactMatchesFromAfternic = false;
//  	searchParams.words = words.selectedIndex > 0 ? $('words').options[words.selectedIndex].value : 0;

    return searchParams;
}

function removeChildNodes(node){
	var len = node.childNodes.length;
	for(var i=len-1; i > -1; i--){
		node.removeChild(node.childNodes[i]);
	}
}


function fillFeaturedDomains(featuredDomains){
	$('fdBody').remove();
	if(featuredDomains.length > 0){
		
		var container = $('fdContainer');
		var tbody = new Element('tbody', { 'id': 'fdBody' });
		var row = new Element('tr');
       	
		var count = featuredDomains.length;
		for(var i = 0; i < count; i++){
			var column = new Element('td');
			var tlink =  new Element('a', { href: '/AddToCart.do?selectedDomains=' + featuredDomains[i].capName, 'onclick': 'pageTracker._trackPageview("tracking=search-featured-'+ featuredDomains[i].capName +'-click");' });
			var blink =  new Element('a', { href: '/AddToCart.do?selectedDomains=' + featuredDomains[i].capName, 'onclick': 'pageTracker._trackPageview("tracking=search-featured-'+ featuredDomains[i].capName +'-button-click");' });
			var br = new Element('br');
			if (featuredDomains[i].isListed) {
				var btn =  new Element('img', { src: '/images/buttons/addToCart.png', 'class': 'buybutton', border: '0', width: '92', height: '19' });
			} else {
				var btn =  new Element('img', { src: '/images/buttons/requestPrice.png', 'class': 'buybutton', border: '0', width: '92', height: '19' });
			}
			
			tlink.appendChild(document.createTextNode(featuredDomains[i].capName));
			blink.appendChild(btn);
			
			column.appendChild(tlink);
			column.appendChild(br);
			column.appendChild(blink);
			
			row.appendChild(column);
		}
		
		tbody.appendChild(row);
		container.appendChild(tbody);
	}
}

function ajaxSearch1(pageNum){
    var searchParams = createSearchParameters();
    searchParams.pageNum = pageNum;
    searchParams.showExactMatchesFromAfternic=(pageNum <= 1);
    var pageSizeSel = $('pageSizeSel1');
    searchParams.pageSize = pageSizeSel.options[pageSizeSel.selectedIndex].value;
    $('currentpage').value = pageNum.toString();
    var pd, domainName;
    dwr.engine.beginBatch();
    $("popupWait").show();

    Search.getResults(searchParams,{
        callback:function(searchResult) {
            $("popupWait").hide();
            fillExactMatchesFromAfternic(searchResult);
            fillDomainsToRegister(searchResult);
            fillTable(searchResult);
            fillRelatedKeywords(searchResult.relatedWords);
            fillPagination(searchResult);
			fillFeaturedDomains(searchResult.featuredDomains);
            dwr.util.setValue('resultSetSize2', searchResult.numFound.toString());
            $('sizeOfResultSet').value=searchResult.numFound.toString()
            //setL1Categories(searchResult);
            setCountersData(searchResult);
            //buildDownloadLink(); now we use lightbox
        },
        errorHandler:function(errorString, exception) {
            //alert(errorString);
            $("popupWait").hide();
        }

        });
        dwr.engine.endBatch();
 }

function fillRelatedKeywords(words){
	dwr.util.removeAllRows("relatedWords");
	var table = $("relatedWords");
	var rowNum = 0;
	for(word in words){
		var row = table.insertRow(rowNum++);
		var bold = document.createElement("b");
		var text = 'Related Keywords for \''+word+'\': ';
		var wordDesc = document.createTextNode(text);
		bold.appendChild(wordDesc);
		var cell = row.insertCell(0);
		cell.appendChild(bold);
		var list = words[word];
		for(var i = 0; i < list.length && i < 5; i++){
			var anchor = document.createElement("a");
			anchor.href =  '/find-premium-domains/search-results.jsp?keywords='+list[i];
			var aText = document.createTextNode(list[i]);
			anchor.appendChild(aText);
			cell.appendChild(anchor);
			if(i+1 < list.length && i+1 < 5){
				var comma = document.createTextNode(" , ");
				cell.appendChild(comma);
			}
			//text += '<a href="/find-premium-domains/search-results.jsp?keywords='+list[i]+'">'+list[i]+'</a>';
		}
		
		
	}
}

 function setL1Categories(searchResult){
 	var body = $('l1body');
 	 dwr.util.removeAllRows("l1body");
 	var facets = searchResult.l1Facets;
 	for(var i=0; i < 3 && i < facets.length; i++){
 		var facet = facets[i];
 		var row = body.insertRow(-1);
 		var cell = row.insertCell(-1);
 		var s = '<input type="checkbox" value="'+ facet.name +'" name="categoryL1" '+
			'onclick="selectCategory(this)" />&nbsp;'+ facet.description +
			'&nbsp;<span id="l1_'+ facet.name +'"></span>'+
			'<input type="hidden" value="'+facet.name + '" id="l1_'+i +'" />';
		cell.innerHTML = s;
 	}
 }
 function getPriceFacets(chks){
 	var ranges = new Array();
  	var count=0;
  	for (var i = 0; i < chks.length; i++){
  		var r = $('priceRange'+chks[i].value);
  		if(r) ranges[count++] = r.value;
  	}
 	return ranges;
 }

 function setCountersData(searchResult){
 	var facets = searchResult.priceFacets;
    var numFound = searchResult.numFound;
    var reqPriceChbx = $("requirePrice");
    var priceElem = $("_require_price");
    if(reqPriceChbx && reqPriceChbx.checked){        
        if(priceElem) priceElem.innerHTML = '('+numFound+')';
    }
     else{
        if(priceElem) priceElem.innerHTML = '';
    }
 	var chks = $$('input[name="priceRange"]');
  	for (var i = 0; i < chks.length; i++) {
  		var facet = $('priceRange'+chks[i].value).value;//hidden
  		var elem = $(facet);
  		if(elem) elem.innerHTML = '';
  	}

 	for(var i =0; i < facets.length; i++){
 		var elem = $(facets[i].name);
 		if(elem)
 			elem.innerHTML = '('+facets[i].value+')';
 	}
 	facets = searchResult.tldFacets;
 	var chks = $$('input[name="tlds"]');
	for(var i =0; i < chks.length;i++){
		var tld = 'tld_'+chks[i].value.substring(1);
 		var elem = $(tld);
 		if(elem)elem.innerHTML = '';
	}
 	for(var i =0; i < facets.length; i++){
 		var facet = facets[i];
 		var tld = 'tld_'+facet.name.substring(1);
 		var elem = $(tld);
 		if(elem)
 			elem.innerHTML = '('+facet.value+')';
 		else{
 			// add new tld
 			if(facet.name.indexOf('.') > -1 && !$('allTlds').checked){
 				var tldsBody = $('tldsBody');
 				var row = tldsBody.insertRow(-1);
 				row.name = 'tr_tld';
 				var cell = row.insertCell(-1);
 				cell.innerHTML = '<div class="h24 lMargLeft"><input type="checkbox"  checked value="'+facet.name +'" name="tlds" onclick="selectTld(this)"/>&nbsp;' + facet.name +
	 				'&nbsp;<span id="tld_'+ facet.name.substring(1) + '">('+facet.value+')</span></div>';
 			}
 		}
 	}

 	facets = searchResult.l1Facets;
 	var l1size = $('l1Size').value;
 	for(var i=0; i < l1size ; i++){
 		var elem = $('l1_'+i);
 		if(elem == null) continue;
 		var catName = elem.value;
 		elem = $('catl1_'+catName);
 		if(elem != null) elem.innerHTML = '';
 	}

 	for(var i =0;i < facets.length; i++){
 		var facet = facets[i];
 		var elem = $('catl1_'+facet.name);
 		if(elem)
 			elem.innerHTML = '('+facet.value+')';
 	}
	for(var i=0; i < level1.length;i++){
		level1[i].count=0;
	}
 	facets = searchResult.l2Facets;
 	for(var i =0;i < facets.length; i++){
 		var facet = facets[i];
 		var lvl1 = getL2Parent(facet.name);
 		if(lvl1) {
 			lvl1.count += facet.value;
 			var elem = $('catl1_'+lvl1.id);
 			if(elem) {
 				elem.innerHTML = '('+lvl1.count+')';
 			}	
 		}
 	}

 }


 function getPriceRanges(){
 	var ranges = new Array();
 	var chks = $$('input[name="priceRange"]');
  	var count=0;
  	//if($('allPrices').checked) return ranges;
  	for (var i = 0; i < chks.length; i++)
			if(chks[i].checked || $('allPrices').checked) {
				if($('priceRange'+chks[i].value))
					ranges[count++] = $('priceRange'+chks[i].value).value;
			}
 	return ranges;

 }

 function getGeoLocationArray(){
	 	var result = new Array();
		result[0]=$('geoLocationCity').value;
		result[1]=$('geoLocationArea').value;
		result[2]=$('geoLocationCountryId').value;
	 	return result;
 }

 function getDataFromCheckboxes(chks){
 	var refIds = new Array();
 	
  	var count=0;
  	for (var i = 0; i < chks.length; i++)
			if(chks[i].checked) refIds[count++]=chks[i].value;
	return refIds;
 }

  function getOrigTldList(chks){
	  var refIds = new Array();
	  	var count=0;
	  	for (var i = 0; i < chks.length; i++)
				refIds[count++]=chks[i].value;
		return refIds;
  }
 
  function getDownloadParameters() {
      var parameters = '';
      var keywordsInput = document.searchKeywordsForm.keywords;
      if(keywordsInput.value.trim() != ''){
          var radios =  $$('input[name="keyword_s"]');
            for(var i=0; i <radios.length;i++)
                if(radios[i].checked){
                    parameters = parameters + '&keyword_s='+ radios[i].value;
                    break;
                }
            parameters = parameters + '&keywords='+keywordsInput.value.trim();
      }
      var minPrice = $('minPrice').value.trim();
      if(minPrice != '') parameters = parameters + '&price_low='+minPrice;
      var maxPrice = $('maxPrice').value.trim();
      if(maxPrice != '') parameters = parameters + '&price_high='+maxPrice;
      var requirePrice = $('requirePrice').value.trim();
      if(requirePrice != '') parameters = parameters + '&require_price='+requirePrice;
      var charLen = $('charLength');
      if(charLen.selectedIndex > 0)
          parameters = parameters + '&length_max='+charLen.options[charLen.selectedIndex].value;
      if($("hyphenExcluded").checked)
          parameters = parameters + '&exclude_hyphens=Y';
      if($("numbersExcluded").checked)
          parameters = parameters + '&exclude_numbers=Y';
      var chks = $$('input[name="tlds"]');
       for (var i = 0; i < chks.length; i++) {
           if(chks[i].checked) {
               parameters = parameters + '&t=' + chks[i].value;
           }
       }
     chks = $$('input[name="categoryL1"]');
       for (var i = 0; i < chks.length; i++) {
           if(chks[i].checked) {
               parameters = parameters + '&l1=' + chks[i].value;
           }
       }
      if ($('useGeoLocation').checked) {
          parameters = parameters + '&geo=Y';
      }
     return parameters;
  }

function buildDownloadLink(){
	var parameters = getDownloadParameters();
    $('downloadlink').innerHTML = '<a href="/find-premium-domains/search-results-text.jsp?searchType=download' + parameters + '">Download Search Results</a>';
}


// pop up additional TLDs
function showTLD() {
	window.open("tld.jsp","doTLD","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width=570,height=450,left=100,top=100,marginwidth=0, marginheight=0");
}
function showCAT() {
	window.open("manage-categories.jsp","doCAT","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=670,height=520,left=100,top=100,marginwidth=0, marginheight=0");
}



	function changePageSize1(sel){
		var otherSel = $('pageSizeSel2').selectedIndex = sel.selectedIndex;
 		document.searchKeywordsForm.pageSize.value = sel.options[sel.selectedIndex].value;
		ajaxSearch();
	}

	function changePageSize2(sel){
 		var otherSel = $('pageSizeSel1').selectedIndex = sel.selectedIndex;
 		document.searchKeywordsForm.pageSize.value = sel.options[sel.selectedIndex].value;
		ajaxSearch();
	}


function FormatNumber(num){
	if(num == '') return '';
	var s = FormatNumber1(num,1,false,false,false);
	if(s.indexOf('.') < 0) s = s //+ '.0';
	return s;
}
/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.

	RETVAL:
		The formatted number!
 **********************************************************************/
function FormatNumber1(num,decimalNum,bolLeadingZero,bolParens,bolCommas){
        if (isNaN(parseInt(num)) && isNaN(parseFloat(num))) return "";

		var tmpNum = num;
		var iSign = num < 0 ? -1 : 1;		// Get sign of number

		// Readjust for sign
		tmpNum *= iSign;	
		
		// Adjust number so only the specified number of numbers after
		// the decimal point are shown.
		tmpNum = new Number(tmpNum).toFixed(decimalNum);
		
		//tmpNum *= Math.pow(10,decimalNum);
		//tmpNum = Math.round(Math.abs(tmpNum))
		//tmpNum /= Math.pow(10,decimalNum);
		
		
		
		
		var tmpNumStr = new String(tmpNum);

		// See if we need to strip out the leading zero or not.
		if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
			if (num > 0)
				tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
			else
				tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);

		// See if we need to put in the commas
		if (bolCommas && (num >= 1000 || num <= -1000)) {
			var iStart = tmpNumStr.indexOf(".");
			if (iStart < 0)
				iStart = tmpNumStr.length;

			iStart -= 3;
			while (iStart >= 1) {
				tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
				iStart -= 3;
			}
		}

		// See if we need to use parenthesis
		if (bolParens && num < 0)
			tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

		return tmpNumStr;		// Return our formatted string!
}

function updatePrice(){
	var minPrice = $('minPrice').value;
	var maxPrice = $('maxPrice').value;
	if(minPrice.trim() != '' || maxPrice.trim() != ''){
		// && parseInt(maxPrice.trim())
		if(minPrice.trim() == '0' && maxPrice.trim() == ''){
			$('allPrices').checked = true;
			return;
		}
		var tbody = $('priceRangesTbody');
		var id = tbody.rows.length-1;
		var t = ' - ';
		var s= FormatNumber(minPrice.trim()) + '_' + FormatNumber(maxPrice.trim());
		if(minPrice.trim() != '') {
			t = '$'+ minPrice.trim();
			if(maxPrice.trim() == '') t = t + ' + ';
			else  t = t + ' - '
		}

		if( maxPrice.trim() != '') t = t + '$' + maxPrice.trim();

        // check if such price range already exists
        var duplicate = false;
        for(var indx=0;indx<id;indx++){
            var pRange = $("priceRange"+indx);
            if(pRange!=null && pRange.value==s){
                duplicate = true;
                var existingCheckbox = $("priceRangeCheckbox"+indx);
                if(existingCheckbox!=null) existingCheckbox.checked = true;
            }
        }
        
        if(!duplicate){
            var row = tbody.insertRow(-1);
		    var cell = row.insertCell(-1);
            cell.innerHTML = '<div class="h24  lMargLeft">'+
                '<input type="checkbox"  checked value="' + id + '" name="priceRange" id = "priceRangeCheckbox"' + id + '" onClick="javascript:selectPriceRange(this)"/>&nbsp;'+
                t +
                '<span id="' +s + '"></span></div>'+
                             
                '<input type="hidden" value="'+ s +'" id="priceRange' + id + '"/>';
        }
		$('minPrice').value = '';
		$('maxPrice').value = '';
		$('allPrices').checked = false;
		ajaxSearch();
//		$('updateMinMaxBttn').disabled = 'disabled';
	}

}

function refreshGeoLocationOut() {
	$("geoLocationOut").innerHTML = $("geoLocationCity").value+', '+$("geoLocationArea").value+', '+$("geoLocationCountryName").value;
}

function updateGeoLocation(){
	setCookie("geoParams", $("geoLocationCity").value+'@'+$("geoLocationArea").value+'@'+$("geoLocationCountryId").value, null, "/", ".buydomains.com", null);
	refreshGeoLocationOut();
	ajaxSearch();
}

function escapeXml(str){
	return str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;").replace(/'/gm,"&#39;");
}

function ajaxGeoSearch(){
		var searchParams = {pageNum:1,isInternalUser:null, geoLocation:null};

  		searchParams.isInternalUser = getCookie('YD') == '1';
        searchParams.geoLocation =  new Array();
        searchParams.geoLocation[0]=$('geoLocationCity').innerHTML;
		searchParams.geoLocation[1]=$('geoLocationArea').innerHTML;
		searchParams.geoLocation[2]=$('country').value;
  		dwr.engine.beginBatch();
//		showPopupWait(100,100);

  		Search.getGeoLocation(searchParams,{
			callback:function(searchResult) {
//				hidePopupWait();
    			fillGeoTableHome(searchResult) ;
			},
			errorHandler:function(errorString, exception) {
				//alert(errorString);
//				hidePopupWait();
			}

			});
  		dwr.engine.endBatch();
 }


function fillGeoTableHome(searchResult) {
  dwr.util.removeAllRows("searchResultsBody");
  var cellFuncs = [
  	function(data) {
       return '<a href="/find-premium-domains/domain-details.jsp?domain='+ data.capName + '" class="noLineLink" onclick="pageTracker._trackPageview(\'home-page-geo-domains-text-link-' + data.capName + '\');">'+ data.capDomainShorted +'</a>';
    },
	function(data) {
		if(data.isListed)
			return '<a href="/AddToCart.do?selectedDomains=' + data.capName + '" class="noLineLink" onclick="pageTracker._trackPageview(\'home-page-geo-domains-price-link-' + data.capName + '\');">' + data.decimalPriceString + '</a>';
		else return '<a href="/AddToCart.do?selectedDomains=' + data.capName + '" class="noLineLink" onclick="pageTracker._trackPageview(\'home-page-geo-domains-price-link-' + data.capName + '\');">Request Price</a>';
    }
	];

  dwr.util.addRows("searchResultsBody", searchResult.foundDomains, cellFuncs, {
  rowCreator:function(options) {
    var row = document.createElement("tr");
    return row;
  },
  cellCreator:function(options) {
    var td = document.createElement("td");
    if(options.cellNum == 1)
    //   td.style.align="right";
	td.style.textAlign="right";
    return td;
  },
  escapeHtml:false
});
}

//lightboxes
function updateTaxonomies2(){
	var taxonomies = new Array();
	for(var i=0; i < level1.length;i++){
		if(level1[i].moved){
			taxonomies.push(new tmpTaxonomy(level1[i], new Array()));
		}
		for(var j=0; j < level1[i].level2.length; j++){
			var lvl2 = level1[i].level2[j];
			if(lvl2.moved){
				var l1;
				var found = false;
				for(var k=0; k < taxonomies.length; k++){
					if(taxonomies[k].l1.id == lvl2.parentId){
						found = true;
						taxonomies[k].level2.push(lvl2.id);
					}
				}
				if(!found){
					taxonomies.push(new tmpTaxonomy(getL1(lvl2.parentId), new Array(lvl2.id)));
				}
			}
		}
	}
	updateTaxonomies(taxonomies);
	Lightview.hide();
}

function getMainPageData(){
	if($('allCategory').checked) return;
	var l1size = $('l1Size').value;
	var catL1List = $$('input[name="categoryL1"]');
	for(var i=0; i < catL1List.length;i++){
		if(!catL1List[i].checked)continue;
		var l1id = catL1List[i].value;
		var l2s = $$('input[name="l2_' + l1id + '"]');
		var l1 = getL1(l1id);
		if(l1 != null){
			if(l2s.length == 0)
				l1.moved = true;
			else{
				for(var j=0; j < l2s.length;j++){
					var l2 = getL2(l2s[j].value);
					l2.moved = true;
				}
			}
		}
	}
}

function loadData(){
	handleEvents();
	var searchParams = {};
	dwr.util.getValues(searchParams);
	searchParams.isInternalUser = getCookie('YD') == '1';
	searchParams.cartId = getCookie('cart_id');
	searchParams.tlds = getDataFromCheckboxes($$('input[name="tlds"]'));
	searchParams.priceRange = getPriceRanges($$('input[name="priceRange"]'));
	
	var kform = $('searchKeywordsForm');
	var kinput = kform['keywords'];
	searchParams.keywords = $F(kinput);
	
	searchParams.hyphenExcluded = $('hyphenExcluded').checked;
	searchParams.numbersExcluded= $('numbersExcluded').checked;
	searchParams.keyword_s='contains';
	var radios = $$('input[name="keyword_s"]');
	for(var i=0; i <radios.length;i++)
		if(radios[i].checked) searchParams.keyword_s=radios[i].value;
	dwr.engine.beginBatch();
	
	Search.getTaxonomyCounts(searchParams,{
		callback:function(searchResults) {
			for(var i=0; i < level1.length;i++){
				level1[i].toBeDisplayed = false;
				for(var k=0; k < level1[i].level2.length;k++)level1[i].level2[k].toBeDisplayed = false;
			}
			var l1Facets = searchResults.l1Facets;
			l1Facets.each(function(lf1, index){
				for(var i=0; i < level1.length;i++)
					if(level1[i].id == lf1.name){level1[i].toBeDisplayed=true;}
			});
			var l2Facets = searchResults.l2Facets;
			l2Facets.each(function(lf2, index){
				var l2 = getL2(lf2.name);
				if(l2 != null) l2.toBeDisplayed=true;
			});
			getMainPageData();
			createTaxonomyTree();
			createSelectedTaxTree();
		},
		errorHandler:function(errorString, exception) { 
			//alert(errorString);
			//hidePopupWait();
		}
		
		});
		dwr.engine.endBatch();
}

function addAllSelectedTlds(from, to){
	//var selectedTlds = $('selectedTlds');
	var from = $(from);
	var to = $(to);
	var len = to.options.length;
	to.show();
	for(var i = from.options.length-1;i>=0;i--){
			var optionName = new Option(from.options[i].value, from.options[i].value, '', '');
			to.options[len++] = optionName;
			optionName.className = 'largeText';
			from.remove(i);
	}
	
}

function addSelectedTlds(from, to){
	//var selectedTlds = $('selectedTlds');
	var from = $(from);
	var to = $(to);
	var len = to.options.length;
	to.show();
	for(var i = from.options.length-1;i>=0;i--){
		if(from.options[i].selected){
			var optionName = new Option(from.options[i].value, from.options[i].value, '', '');
			to.options[len++] = optionName;
			optionName.className = 'largeText';
			from.remove(i);
		}
	}
	
}

function addMoreTlds(){
	var newTlds = new Array();
	var count=0;
	var cc = $('addedTlds');
	cc.show();
	for(var i=0; i < cc.options.length; i++){
		newTlds[count++]=cc.options[i].value;
	}
	addNewTld(newTlds);
	Lightview.hide();
}

var alreadySelectedTlds;

function loadTldData(){
 	alreadySelectedTlds = new Array();
	var tlds = $$('input[name="tlds"]');
	var target = $('addedTlds');
	var len = 0;
	target.show();
	for(var i = 0; i < tlds.length; i++){
		if(tlds[i].checked){
			var optionName = new Option(tlds[i].value, tlds[i].value, '', '');
			alreadySelectedTlds[i] = tlds[i].value;
			target.options[len++] = optionName;
		}
	}
	ajaxSearchTLD();
}

function removeAllSelectedTlds(from, to){
	//var selectedTlds = $('selectedTlds');
	var from = $(from);
	var to = $(to);
	var len = to.options.length;		
	for(var i = from.options.length-1;i>=0;i--){
			var option = new Option();
			option.value = from.options[i].value;
			option.className = 'gray333';
			option.appendChild( document.createTextNode( from.options[i].text ));
			var optGroup = getOptGroup(from.options[i].value);
			optGroup.appendChild(option);
			from.remove(i);
	}
	from.hide();
}

function removeSelectedTlds(from, to){
	//var selectedTlds = $('selectedTlds');
	var from = $(from);
	var to = $(to);
	var len = to.options.length;
	for(var i = from.options.length-1;i>=0;i--){
		if(from.options[i].selected){
			var option = new Option();
			option.className = 'gray333';
			option.value = from.options[i].value;
			option.appendChild( document.createTextNode( from.options[i].text ));
			var optGroup = getOptGroup(from.options[i].value);
			optGroup.appendChild(option);
			from.remove(i);				
			}
		if (len == 0) {
			from.hide();
		}	
	}
}


function ajaxSearchTLD(){
	var searchParams = {};
	dwr.util.getValues(searchParams);
	searchParams.isInternalUser = getCookie('YD') == '1';
	searchParams.cartId = getCookie('cart_id');
	fillTaxonomyConstraints(searchParams);
	searchParams.priceRange = getPriceRanges($$('input[name="priceRange"]'));

	//searchParams.keywords =	$('keywords').getValue();
	
	var kform = $('searchKeywordsForm');
	var kinput = kform['keywords'];
	searchParams.keywords = $F(kinput);
	
	searchParams.hyphenExcluded = $('hyphenExcluded').checked;
	searchParams.numbersExcluded= $('numbersExcluded').checked;
	searchParams.keyword_s='contains';
	var radios =  $$('input[name="keyword_s"]');
	for(var i=0; i <radios.length;i++)
		if(radios[i].checked) searchParams.keyword_s=radios[i].value;
	var pd, domainName;
	dwr.engine.beginBatch();
	
	Search.getTldsCount(searchParams,{
		callback:function(tldArray) {
			for(var i=0; i < tldArray.length;i++){
				if(alreadySelectedTlds.indexOf(tldArray[i].name) >= 0)continue;
				var option = new Option();
				option.value = tldArray[i].name;
				option.className = 'gray333';
				option.appendChild(document.createTextNode( tldArray[i].name ));
				var optGroup = getOptGroup(tldArray[i].name);
				optGroup.appendChild(option);
			}
		},
		errorHandler:function(errorString, exception) { 
			alert(exception);
			//hidePopupWait();
		}
		
		});
		dwr.engine.endBatch();
}

function loadPriceData(){
	var parentMinPrice = $('minPrice');
	var parentMaxPrice = $('maxPrice');
	var minPrice = $('minPriceLB');
	var maxPrice = $('maxPriceLB');
	minPrice.value = parentMinPrice.value;
	maxPrice.value = parentMaxPrice.value;
}


function IsNumeric(sText) {
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function validatePrice(){
		var minPrice = $('minPriceLB').getValue();
		var maxPrice = $('maxPriceLB').getValue();
		var parentMinPrice = $('minPrice');
		var parentMaxPrice = $('maxPrice');
		
		$('errorPrice').hide();
		if ((minPrice.trim() != '') && (!IsNumeric(minPrice))) {
			$('minPriceLB').focus();
			$('errorPrice').show();
			$('errorPrice').innerHTML = 'Min price value has wrong number format.';
			return false;
		}
		if ((maxPrice.trim() != '') && (!IsNumeric(maxPrice))) {
			$('maxPriceLB').focus();
			$('errorPrice').show();
			$('errorPrice').innerHTML = 'Max price value has wrong number format.';
			return false;
		}
		if ((minPrice == '') && (maxPrice == '0')) {
			$('maxPriceLB').focus();
			$('errorPrice').show();
			$('errorPrice').innerHTML = 'Please enter a max price geater than 0.';
			return false;
		}
		if ((minPrice == '0') && (maxPrice == '0')) {
			$('minPriceLB').focus();
			$('errorPrice').show();
			$('errorPrice').innerHTML = 'Please enter a price geater than 0.';
			return false;
		}
		if (parseFloat(maxPrice) < parseFloat(minPrice))
		{
			$('maxPriceLB').focus();
			$('errorPrice').show();
			$('errorPrice').innerHTML = 'Max value should not be less than Min value.';
			return false;
		}
        if((maxPrice != '0')&&(minPrice == '0')){
             $('minPriceLB').value = "";
             minPrice = "";
        }
		
		parentMinPrice.value = minPrice;
		parentMaxPrice.value = maxPrice;
		
		updatePrice();
		Lightview.hide();
}

function loadGeoData(){
	var parentCity = $('geoLocationCity');
	var parentArea = $('geoLocationArea');
	var parentCountryId = $('geoLocationCountryId');
	var city = $('city');
	var area = $('area');
	var country = $('country');
	city.value = parentCity.value;
	area.value = parentArea.value;
	var indx=0; 
	for(var i=0; i<country.options.length; i++) {
		if (country.options[i].value==parentCountryId.value) {
			indx=i;
			break;
		}
	}
	country.selectedIndex = indx;
}

function updateLocation(){
	var city = $('city').value;
	var area = $('area').value;
	var country = $('country');
	$('errorGeo').hide();
	var validRegexp = /^[a-zA-Z\-,. ]{1,}$/;
	if (city != '' && !validRegexp.exec(city)) {
		$('city').focus();
		$('errorGeo').show();
		$('errorGeo').innerHTML = 'City/Town has wrong input format.';
		return false;
	}
	if (area != '' && !validRegexp.exec(area)) {
		$('area').focus();
		$('errorGeo').show();
		$('errorGeo').innerHTML = 'Region/State/Province has wrong input format.';
		return false;
	}
	
	$('geoLocationCity').value = escapeXml(city);
	$('geoLocationArea').value = escapeXml(area);
	$('geoLocationCountryId').value = country.value;
	$('geoLocationCountryName').value = country.options[country.selectedIndex].text;
	$('useGeoLocation').checked = true;
	updateGeoLocation();
	Lightview.hide();	
}
