var map = null;
var geocoder = null;
var keywordPoint = null;
var blueIcon = null;
var keywordLanguage = "";
var keywordCountry = "";
var punyCodeMap = [];

var userKeywordPlacement = 0;
var includeCountry = 0;
var includeState = 0;
var hideExtended = 0;
var userKeyword = "";
var limitCountry = "";
var limitState = "";
var limitAdmin2 = "";
var tldSelection = "ALL";
var limitFeature = "P";
var limitFeatureCode = "ALL";
var displayCount = "50";
var getAdwordResults = 0;
var hideUnavailable = 0;
var limitStart = 0;

var isAvailable = new Array;
var adwordProgressTracker = new Array;
var notAvailableDomains = new Array;
var tempString = "";

var displayedDomains = new Array;
var displayedDomainsCount = 0;

var resultsDomains = new Array;
var resultsDomainsCount = 0;

var nextStart = 0;
var currentStartIndex = 0;
var displayCountOverride = 0;
var stillNeededResults = 0;

var noMoreResults = 0;

function hideUnavailableF()
{
    var date = new Date();
    var year = date.getFullYear();

    if(document.getElementById("hideUnavailable").checked)
    {
        setCookie("geoDomainsHideUnavailable", "1", year+1, '', '', '', 'name.com');
	hideUnavailable = 1;
    }
    else
    {
        setCookie("geoDomainsHideUnavailable", "0", year+1, '', '', '', 'name.com');
	hideUnavailable = 0;
    }
}

var humanInteraction = 0;

// owen
function processSearch(start, count, hi)
{
    if(hi)
    {
        humanInteraction = 1;

        document.getElementById("suggestions2_checkboxes_container").innerHTML = "";
        document.getElementById("suggestions2_domains_container").innerHTML = "";
        document.getElementById("suggestions2_population_container").innerHTML = "";
        document.getElementById("suggestions2_adword_container").innerHTML = "";

	resultsDomains = new Array;
	resultsDomainsCount = 0;
	noMoreResults = 0;

	setDisplayCount();
    }
    else
        humanInteraction = 0;

    if(start) 
	limitStart = start;
    else
	limitStart = 0;

    if(count > 0)
    {
	displayCountOverride = count;
    }
    else
    {
	displayedDomains = new Array;
        displayedDomainsCount = 0;

	displayCountOverride = 0;
	stillNeededResults = 0;
        notAvailableDomains = new Array;
    }

    userKeyword = jQuery.trim(document.getElementById("userKeyword").value);
    setCookie("geoDomainsUserKeyword", userKeyword, year+1, '', '', '', 'name.com');

    $('#JqueryLoadingDiv').dialog('open');
    initialize("", 1);
}

function JQcheckAll(e)
{
    var checked_status = e.checked;

    if(checked_status)
        addRemoveProductForAll("check_", "registration", "add", "");
    else
        addRemoveProductForAll("check_", "registration", "remove", "");
}

function setDisplayCount()
{
    var date = new Date();
    var year = date.getFullYear();

    displayCount = jQuery.trim(document.getElementById("displayCount").value);
    setCookie("geoDomainsDisplayCount", displayCount, year+1, '', '', '', 'name.com');
}

function showHideOptions()
{
    var date = new Date();
    var year = date.getFullYear();

    var showHideOptions = jQuery.trim(document.getElementById("showHideOptions").innerHTML);

    if(showHideOptions == "-")
    {
	document.getElementById("showHideOptions").innerHTML = "+";
	document.getElementById("suggestionOptions").style.display = "none";
    }
    else if(showHideOptions == "+")
    {
	document.getElementById("showHideOptions").innerHTML = "-";
	document.getElementById("suggestionOptions").style.display = "";
    }
}

function limitTldF()
{
    var date = new Date();
    var year = date.getFullYear();

    tldSelection = jQuery.trim(document.getElementById("tldSelection").value);
    setCookie("geoDomainsTldSelection", tldSelection, year+1, '', '', '', 'name.com');
}

function getAdwordResultsF()
{
    var date = new Date();
    var year = date.getFullYear();

    if(document.getElementById("getAdwordResults").checked)
    {
        setCookie("geoDomainsGetAdwordResults", "1", year+1, '', '', '', 'name.com');
	getAdwordResults = 1;
    }
    else
    {
 	setCookie("geoDomainsGetAdwordResults", "0", year+1, '', '', '', 'name.com');
	getAdwordResults = 0;
    }
}

function limitFeatureCodeF()
{
    var date = new Date();
    var year = date.getFullYear();

    limitFeatureCode = jQuery.trim(document.getElementById("limitFeatureCode").value);
    setCookie("geoDomainsLimitFeatureCode", limitFeatureCode, year+1, '', '', '', 'name.com');
}

function limitFeatureF()
{
    var date = new Date();
    var year = date.getFullYear();

    limitFeature = jQuery.trim(document.getElementById("limitFeature").value);
    setCookie("geoDomainsLimitFeature", limitFeature, year+1, '', '', '', 'name.com');
    setCookie("geoDomainsLimitFeatureCode", "", year+1, '', '', '', 'name.com');
    document.getElementById("limitFeatureCodeDiv").innerHTML = "";
    getFeatureCodes();
}

function limitCountryF()
{
    var date = new Date();
    var year = date.getFullYear();

    limitCountry = jQuery.trim(document.getElementById("limitCountry").value);

    if(document.getElementById("limitState")) limitState = jQuery.trim(document.getElementById("limitState").value);
    else limitState = "";

    limitAdmin2 = "";
    setCookie("geoDomainsLimitAdmin2", "", year+1, '', '', '', 'name.com');
    document.getElementById("limitAdmin2Div").innerHTML = "";

    var limitCountryCode = limitCountry.substring(0,2);
    var limitStateCode = limitState.substring(0,2);

    if(limitCountryCode != limitStateCode)
        setCookie("geoDomainsLimitState", "", year+1, '', '', '', 'name.com');

    setCookie("geoDomainsLimitCountry", limitCountry, year+1, '', '', '', 'name.com');

    getAdmin1codeStates();

    setCookie("geoDomainsZoomLevel", 2, year+1, '', '', '', 'name.com');
}

function limitStateF()
{
    var date = new Date();
    var year = date.getFullYear();

    if(document.getElementById("limitState")) limitState = jQuery.trim(document.getElementById("limitState").value);
    else limitState = "";

    limitAdmin2 = "";
    setCookie("geoDomainsLimitAdmin2", "", year+1, '', '', '', 'name.com');
    document.getElementById("limitAdmin2Div").innerHTML = "";

    setCookie("geoDomainsLimitState", limitState, year+1, '', '', '', 'name.com');

    getAdmin2Features();

//    initialize("", 1);
}

function limitAdmin2F()
{
    var date = new Date();
    var year = date.getFullYear();

    if(document.getElementById("limitAdmin2")) limitAdmin2 = jQuery.trim(document.getElementById("limitAdmin2").value);
    else limitAdmin2 = "";

    setCookie("geoDomainsLimitAdmin2", limitAdmin2, year+1, '', '', '', 'name.com');

//    initialize("", 1);
}

function userKeywordPlacementF()
{
    userKeyword = jQuery.trim(document.getElementById("userKeyword").value);

    var date = new Date();
    var year = date.getFullYear();

    if(document.getElementById("userKeywordPrepend").checked)
    {
        setCookie("geoDomainsUserKeywordPlacement", "1", year+1, '', '', '', 'name.com');
	userKeywordPlacement = 1;
    }
    else if(document.getElementById("userKeywordAppend").checked)
    {
        setCookie("geoDomainsUserKeywordPlacement", "2", year+1, '', '', '', 'name.com');
	userKeywordPlacement = 2;
    }
    else
    {
 	setCookie("geoDomainsUserKeywordPlacement", "0", year+1, '', '', '', 'name.com');
	userKeywordPlacement = 0;
    }

//    if(userKeyword)
//        setTarget(4);
}

function processKeyword(e)
{
    var date = new Date();
    var year = date.getFullYear();

    if(e)
    {
        if((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13))
        {
        }
        else
	    return;
    }

//    userKeyword = jQuery.trim(document.getElementById("userKeyword").value);
//    setCookie("geoDomainsUserKeyword", userKeyword, year+1, '', '', '', 'name.com');
//    setTarget(4);
}

function includeStateF()
{
    var date = new Date();
    var year = date.getFullYear();

    if(document.getElementById("includeState").checked)
    {
        setCookie("geoDomainsIncludeState", "1", year+1, '', '', '', 'name.com');
	includeState = 1;
    }
    else
    {
 	setCookie("geoDomainsIncludeState", "0", year+1, '', '', '', 'name.com');
	includeState = 0;
    }

//    setTarget(4);
}       

function hideExtendedF()
{
    var date = new Date();
    var year = date.getFullYear();

    if(document.getElementById("hideExtended").checked)
    {
        setCookie("geoDomainsHideExtended", "1", year+1, '', '', '', 'name.com');
	hideExtended = 1;
    }
    else
    {
 	setCookie("geoDomainsHideExtended", "0", year+1, '', '', '', 'name.com');
	hideExtended = 0;
    }

//    setTarget(4);
}       

function includeCountryF()
{
    var date = new Date();
    var year = date.getFullYear();

    if(document.getElementById("includeCountryName").checked)
    {
        setCookie("geoDomainsIncludeCountry", "1", year+1, '', '', '', 'name.com');
	includeCountry = 1;
    }
    else if(document.getElementById("includeCountryCode").checked)
    {
        setCookie("geoDomainsIncludeCountry", "2", year+1, '', '', '', 'name.com');
	includeCountry = 2;
    }
    else
    {
 	setCookie("geoDomainsIncludeCountry", "0", year+1, '', '', '', 'name.com');
	includeCountry = 0;
    }

//    setTarget(4);
}

function detectedCountry(code)
{
    $('#dialog_countries').dialog('close');
    
    var country = 'unknown';
    
    keywordCountry = code;
 
    // document.getElementById("adwordCountry").innerHTML = code;

//    setTarget(2);
}

function showMoreCountries()
{
    $('#dialog_countries').dialog('open');
}

function detectedLanguage(code)
{
    $('#dialog_languages').dialog('close');
    
    var language = 'unknown';
    
    for (l in google.language.Languages)
    {
        if(google.language.Languages[l].substring(0,2) == code.substring(0,2))
        {
            language = l;
            break;
       }
    }

    keywordLanguage = code;
 
//    document.getElementById("adwordLanguage").innerHTML = language;
//    setTarget(2);
}

function showMoreLanguages()
{
    var innerHTML = "";
    
    innerHTML = "<br><br>What language are you trying to target?<br><br>We attempt to auto detect the language of the keywords but sometimes it doesn't work properly. You can manually set the language of the keywords you want to target here.<br><br>";
    innerHTML += "<select id='selectedLanguage' onchange='detectedLanguage(this.value);'>"
        
    for (l in google.language.Languages)
    {
        var code = google.language.Languages[l];
        var language = l;

        if(code == "")
            continue;
    
        innerHTML += "<option value='"+code+"'> "+language+"\n";
    }

    innerHTML += "</select>"
    document.getElementById("dialog_languages_container").innerHTML = innerHTML;
    $('#dialog_languages').dialog('open');
}

function processLocationOverride()
{
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=getstatecountry'), processLocationOverrideHandler);
}

function processLocationOverrideHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
	resetLoadingDiv();
        return;
    }

    var results = eval('('+content+')');
    var result = results["statecountry"];

    initialize(result, 1);
}

function getAdmin1codeStates()
{
    document.getElementById("limitStateDiv").style.display = "none";
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=getadmin1codestates'), getAdmin1codeStatesHandler);
}

function getAdmin1codeStatesHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
	resetLoadingDiv();
        return;
    }

    var results = eval('('+content+')');
    var admin1codeStates = results["admin1codeStates"];
    var innerHTML = "";
    var limitState = getCookie("geoDomainsLimitState");

    for(state in admin1codeStates)
    {
	state = admin1codeStates[state];
	var code = state["code"];
	var name = state["name"];

        innerHTML += "<option value='"+code+"' "+(limitState == code ? "selected" : "")+"> "+name;
    }

    if(innerHTML)
    {
	innerHTML = "Limit results by state:<br><select id='limitState' onchange='limitStateF();'><option value=''> All States"+innerHTML;
	innerHTML += "</select>";
        document.getElementById("limitStateDiv").innerHTML = innerHTML;
        document.getElementById("limitStateDiv").style.display = "";
    }
}

function getFeatureCodes()
{
    document.getElementById("limitFeatureCodeDiv").style.display = "none";
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=getfeaturecodes'), getFeatureCodesHandler);
}

function getFeatureCodesHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
	resetLoadingDiv();
        return;
    }

    var results = eval('('+content+')');
    var featureCodes = results["featureCodes"];
    var innerHTML = "";
    var limitFeatureCode = getCookie("geoDomainsLimitFeatureCode");

    for(featureCode in featureCodes)
    {
	featureCode = featureCodes[featureCode];
	var code = featureCode["featureCode"];
	var name = featureCode["name"];

        innerHTML += "<option value='"+code+"' "+(limitFeatureCode == code ? "selected" : "")+"> "+name+" ("+code+")";
    }

    if(innerHTML)
    {
	innerHTML = "Limit geo feature to: (<a href='http://www.geonames.org/export/codes.html' target='_new' style='color:blue;'>more information</a>)<br><select id='limitFeatureCode' onchange='limitFeatureCodeF();'><option value=''> All"+innerHTML;
	innerHTML += "</select>";
        document.getElementById("limitFeatureCodeDiv").innerHTML = innerHTML;
        document.getElementById("limitFeatureCodeDiv").style.display = "";
    }
}

function getAdmin2Features()
{
    document.getElementById("limitAdmin2Div").style.display = "none";
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=getadmin2features'), getAdmin2FeaturesHandler);
}

function getAdmin2FeaturesHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
	resetLoadingDiv();
        return;
    }

    var results = eval('('+content+')');
    var admin2Features = results["admin2Features"];
    var innerHTML = "";
    var limitAdmin2 = getCookie("geoDomainsLimitAdmin2");

    for(feature in admin2Features)
    {
	feature = admin2Features[feature];
	var code = feature["admin2Code"];
	var name = feature["name"];

        innerHTML += "<option value='"+code+"' "+(limitAdmin2 == code ? "selected" : "")+"> "+name;
    }

    if(innerHTML)
    {
	innerHTML = "Limit results by county:<br><select id='limitAdmin2' onchange='limitAdmin2F();'><option value=''> All"+innerHTML;
	innerHTML += "</select>";
        document.getElementById("limitAdmin2Div").innerHTML = innerHTML;
        document.getElementById("limitAdmin2Div").style.display = "";
    }
}

function nextSuggestion(currentFirst, tld)
{
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=nextsuggestion&currentfirst='+currentFirst+'&tld='+tld), mapDragEndHandler);
}
    
function previousSuggestion(currentFirst, tld)
{
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=previoussuggestion&currentfirst='+currentFirst+'&tld='+tld), mapDragEndHandler);
}
        
function lastSuggestion(tld)
{
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=lastsuggestion'+'&tld='+tld), mapDragEndHandler);
}
            
function firstSuggestion(tld)
{
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=nextsuggestion&currentfirst=0'+'&tld='+tld), mapDragEndHandler);
}

function nextLocation(currentFirst, tld)
{
    $('#JqueryLoadingDiv').dialog('open');
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=nextlocation&currentfirst='+currentFirst+'&tld='+tld+"&displayCount="+displayCount), mapDragEndHandler);
}
    
function previousLocation(currentFirst, tld)
{
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=previouslocation&currentfirst='+currentFirst+'&tld='+tld+"&displayCount="+displayCount), mapDragEndHandler);
}
        
function lastLocation(tld)
{
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=lastlocation'+'&tld='+tld+"&displayCount="+displayCount), mapDragEndHandler);
}
            
function firstLocation(tld)
{
    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=nextlocation&currentfirst=0'+'&tld='+tld+"&displayCount="+displayCount), mapDragEndHandler);
}

function importanceOrder (marker,b) 
{
    return marker.importance;
}

function createMarker(point, string, isKeywordPoint, fullPlace) 
{
    var marker;

    if(keywordPoint && (isKeywordPoint))
    {
	var markerOptions = { zIndexProcess:importanceOrder, icon:blueIcon };
        marker = new GMarker(point, markerOptions);
	marker.importance = 1;
    }
    else
    {
	var markerOptions = { zIndexProcess:importanceOrder };
        marker = new GMarker(point);
	marker.importance = 0;
    }
 
    GEvent.addListener(marker, "click", function() {
      window.location.href = "/geo-domains/?keywords="+fullPlace;
    });

    GEvent.addListener(marker, "mouseover", function() {
      marker.openInfoWindowHtml(string);
    });

    return marker;
}

function mapClick(latlng, overlay)
{
    if(overlay) return;
    $('#JqueryLoadingDiv').dialog('open');

    if(!latlng)
	return;

    var lat = latlng.lat();
    var lng = latlng.lng();

    map.setCenter(latlng);
    setTarget(1);
}

function mapZoom()
{
    $('#JqueryLoadingDiv').dialog('open');
    setTarget(3);
}

function mapMoveEnd()
{
    $('#JqueryLoadingDiv').dialog('open');
    var latlng = map.getCenter();

    if(!latlng)
	return;

    if(!keywordCountry)
        geocoder.getLocations(latlng, setTarget);
    else
	setTarget(0);
}

function mapDragEnd()
{
    $('#JqueryLoadingDiv').dialog('open');
    setTarget(1);
}

function setTarget(response)
{
    document.getElementById("mapInterface").style.display = "";
    $('#JqueryLoadingDiv').dialog('open');

    var date = new Date();
    var year = date.getFullYear();
    var targetCountry = keywordCountry;
    var targetLanguage = keywordLanguage;
    var adWordKeywordsType = "Exact";

    if(document.getElementById("adWordKeywordsType")) adWordKeywordsType = document.getElementById("adWordKeywordsType").value;

    var zoom = map.getZoom();

    var latlng = map.getCenter();
    var lat = "";
    var lng = "";
    if(latlng)
    {
        lat = latlng.lat();
        lng = latlng.lng();
    }

    var bound = map.getBounds();

    var swLatLng = bound.getSouthWest();
    var swLat = "";
    var swLng = "";
    if(swLatLng)
    {
        swLat = swLatLng.lat();
        swLng = swLatLng.lng();
    }

    var neLatLng = bound.getNorthEast();
    var neLat = "";
    var neLng = "";
    if(neLatLng)
    {
        neLat = neLatLng.lat();
        neLng = neLatLng.lng();
    }

    var distance = "";
    if(swLatLng && neLatLng)
    {
        distance = swLatLng.distanceFrom(neLatLng);
    }

    var keywordString = jQuery.trim(document.getElementById("keywords").value);
    var wrangle = 0;
    var wrangleOnly = 0;

    includeState = getCookie("geoDomainsIncludeState");
    includeCountry = getCookie("geoDomainsIncludeCountry");
    userKeywordPlacement = getCookie("geoDomainsUserKeywordPlacement");
    hideExtended = getCookie("geoDomainsHideExtended");
    hideUnavailable = getCookie("geoDomainsHideUnavailable");
    userKeyword = getCookie("geoDomainsUserKeyword");
    limitCountry = getCookie("geoDomainsLimitCountry");
    limitState = getCookie("geoDomainsLimitState");
    limitAdmin2 = getCookie("geoDomainsLimitAdmin2");
    tldSelection = getCookie("geoDomainsTldSelection");
    limitFeature = getCookie("geoDomainsLimitFeature");
    limitFeatureCode = getCookie("geoDomainsLimitFeatureCode");
    displayCount = getCookie("geoDomainsDisplayCount");

    if(!includeState) includeState = 0;
    if(!includeCountry) includeCountry = 0;
    if(!userKeywordPlacement) userKeywordPlacement = 0;
    if(!hideExtended) hideExtended = 0;
    if(!hideUnavailable) hideUnavailable = 0;
    if(!userKeyword) userKeyword = "";
    if(!limitCountry) limitCountry = "";
    if(!limitState) limitState = "";
    if(!limitAdmin2) limitAdmin2 = "";
    if(!tldSelection) tldSelection = "ALL";
    if(!limitFeature) limitFeature = "P";
    if(!limitFeatureCode) limitFeatureCode = "ALL";
    if(!displayCount) displayCount = "50";

    if(response === 1 || response === 2)
    {
    }
    else if(response === 4)
    {
    }
    else if(response === 3)
    {
	if(zoom)
	{
            setCookie("geoDomainsZoomLevel", zoom, year+1, '', '', '', 'name.com');
	}
    }
    else if(!response || response.Status.code != 200)
    {
        targetCountry = keywordCountry;
    }
    else
    {
	place = response.Placemark[0];
	keywordCountry = place.AddressDetails.Country.CountryNameCode;
    }

    if(!targetCountry) targetCountry = "US";
    if(!targetLanguage) targetLanguage = "";

    document.getElementById("zoomLevel").innerHTML = zoom;
    document.getElementById("centerLat").innerHTML = lat;
    document.getElementById("centerLng").innerHTML = lng;
    document.getElementById("swLat").innerHTML = swLat;
    document.getElementById("swLng").innerHTML = swLng;
    document.getElementById("neLat").innerHTML = neLat;
    document.getElementById("neLng").innerHTML = neLng;
    document.getElementById("distance").innerHTML = distance;

    if(keywordPoint || response === 0 || response === 2) wrangle = 1;
    if(response === 2) wrangleOnly = 1;

    getURL(encodeURI('/geo-domains/services/geo-domains.php?action=getdomains&limitStart='+limitStart+'&zl='+zoom+"&swlat="+swLat+"&swlng="+swLng+"&nelat="+neLat+"&nelng="+neLng+"&kw="+keywordString+"&tc="+targetCountry+"&tl="+targetLanguage+"&w="+wrangle+"&wo="+wrangleOnly+"&kwt="+adWordKeywordsType+"&ic="+includeCountry+"&is="+includeState+"&uk="+userKeyword+"&ukp="+userKeywordPlacement+"&hideUnavailable="+hideUnavailable+"&he="+hideExtended+"&lc="+limitCountry+"&ls="+limitState+"&tldSelection="+tldSelection+"&limitAdmin2="+limitAdmin2+"&limitFeature="+limitFeature+"&limitFeatureCode="+limitFeatureCode+"&displayCount="+displayCount), mapDragEndHandler);
}

function mapDragEndHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
	resetLoadingDiv();
        return;
    }

    var date = new Date();
    var year = date.getFullYear();
    var results = eval('('+content+')');
    var detectedLanguage = results["detectedLanguage"];
    var detectedLanguageCode = results["detectedLanguageCode"];
    var targetCountries = results["targetCountries"];
    var locations = results["locations"];
    var locationsSetFirst = results["locationsSetFirst"];
    var locationsSetLast = results["locationsSetLast"];
    var totalLocationsCount = results["totalLocationsCount"];
    var wrangledDomains = results["wrangledDomains"];
    var totalWrangledCount = results["totalWrangledCount"];
    var suggestionDisplayCount = results["suggestionDisplayCount"];
    var wrangledSetFirst = results["wrangledSetFirst"];
    var wrangledSetLast = results["wrangledSetLast"];
    var displayCount = results["displayCount"];
    var tld = "";
    var places = "";
    var locationDomainMap = [];

    tldSelection = jQuery.trim(getCookie("geoDomainsTldSelection"));
    if(!tldSelection || tldSelection == "ALL") tld = "com";
    else tld = tldSelection;

    document.getElementById("initialSuggestionContainer").style.display = "none";

    if(locations)
    {
        document.getElementById("emptySuggestionContainer").style.display = "none";
        document.getElementById("suggestionContainer").style.display = "";

        var locationsLength = locations.length;

        document.getElementById("suggestionCountInfo2").innerHTML = "";
        document.getElementById("suggestionCountInfoB2").innerHTML = "";

	var pages = Math.ceil(totalLocationsCount / displayCount);
	var pagesString = "";

// owen
	var selectedPage = 0;

	if(pages > 1)
	{
	    var displayRange = 3;
	    var preElipse = 0;
	    var postElipse = 0;
	
	    selectedPage = Math.round(((limitStart / displayCount)));
	    nextStart = displayCount * (selectedPage + 1);

	    pagesString = "<div id='pages' style='float:left; white-space:nowrap;'>";

	    if(selectedPage < 1) 
		pagesString += "&lt;&lt; previous ";
	    else
		pagesString += "<a href='javascript:processSearch("+(displayCount * (selectedPage - 1))+", 0, 1);'>&lt;&lt; previous </a>";

	    pagesString += " | <b>Page: </b>";
	    for(var i = 0; i < pages; i++)
	    {
	        var pageIndex = parseInt((i * displayCount) - (displayCount - 1));
	        var indexCheck = parseInt(parseInt(pageIndex) + parseInt(displayCount));

	        pagesString += " <span id='page_"+parseInt(i+1)+"'>";

		if(i == selectedPage) 
			pagesString += "<b>"+parseInt(i+1)+"</b>";
		else if(i == 0 || i == (pages - 1) || Math.abs(selectedPage - i) <= displayRange)
			pagesString += "<a href='javascript:processSearch("+(displayCount * i)+", 0, 1);'>"+parseInt(i+1)+"</a>";
	   	else if(i < selectedPage && !preElipse)
		{
			pagesString += " ... ";
			preElipse = 1;
		}
	   	else if(i > selectedPage && !postElipse)
		{
			pagesString += " ... ";
			postElipse = 1;
		}

		pagesString += "</span> ";
	    }
	    pagesString += " | ";

	    if(selectedPage >= (pages - 1)) 
		pagesString += " next &gt;&gt;";
	    else
		pagesString += "<a href='javascript:processSearch("+nextStart+", 0, 1);'> next &gt;&gt;</a>";

	    pagesString += "</div><div style='clear:both;'></div>";
	}

	var endPage = (displayCount * (selectedPage + 1));
	var startIndex = ((displayCount * (selectedPage)) + 1);

	if(displayCountOverride > 0)
	    startIndex = currentStartIndex;
	else
	    currentStartIndex = startIndex;

	if(endPage >= totalLocationsCount)
	{
	    endPage = totalLocationsCount;
	    displayCount = endPage
	    noMoreResults = 1;
	}

	document.getElementById("suggestionCountInfo2").innerHTML += "Showing <b>"+startIndex+"</b> - <b>"+endPage+"</b> out of <b>"+totalLocationsCount+"</b><br>";
	document.getElementById("suggestionCountInfo2").innerHTML += pagesString;
	document.getElementById("suggestionCountInfoB2").innerHTML += "<br>Showing <b>"+startIndex+"</b> - <b>"+endPage+"</b> out of <b>"+totalLocationsCount+"</b><br>";
	document.getElementById("suggestionCountInfoB2").innerHTML += pagesString;

        var innerHTMLPlace = "";
        var innerHTMLPlaceCheckboxes = "";
        var innerHTMLPlaceDomains = "";
        var innerHTMLPlacePopulation = "";
        var innerHTMLPlaceAdword = "";
	var word = "";
	var displayWord = "";
        var counter = 0;
	var tld = "";
	var tag = "geo-back";

        tldSelection = jQuery.trim(getCookie("geoDomainsTldSelection"));
        if(!tldSelection || tldSelection == "ALL") tld = "com";
        else tld = tldSelection;

        document.getElementById("places").innerHTML = places;
        map.clearOverlays();

	if(displayCountOverride > 0)
	{
            document.getElementById("suggestions2_checkboxes_container").innerHTML += innerHTMLPlaceCheckboxes;
            document.getElementById("suggestions2_domains_container").innerHTML += innerHTMLPlaceDomains;
            document.getElementById("suggestions2_population_container").innerHTML += innerHTMLPlacePopulation;
            document.getElementById("suggestions2_adword_container").innerHTML += innerHTMLPlaceAdword;
	}
	else
	{
            document.getElementById("suggestions2_checkboxes_container").innerHTML = innerHTMLPlaceCheckboxes;
            document.getElementById("suggestions2_domains_container").innerHTML = innerHTMLPlaceDomains;
            document.getElementById("suggestions2_population_container").innerHTML = innerHTMLPlacePopulation;
            document.getElementById("suggestions2_adword_container").innerHTML = innerHTMLPlaceAdword;
	}

        for(var i = 0; i < locationsLength; i++)
        {
	    var place = locations[i][0];
   	    var name = place["name"];
   	    var asciiname = place["asciiname"];
	    var latitude = place["latitude"];
	    var longitude = place["longitude"];
	    var population = place["population"];
	    var countryCode = place["countryCode"];
	    var countryName = place["countryName"];
	    var admin1Name = place["admin1Name"];
	    var admin1NameAscii = place["admin1NameAscii"];
	    var sld = place["sld"];
	    var sldWords = place["sldWords"];
   	    var fullPlace = "";
   	    var checkPlace = sld;

	    fullPlace = name;
	    if(admin1Name && !admin1Name.match("(general)")) fullPlace += ", "+admin1Name;
	    if(countryName) fullPlace += ", "+countryName;
   	    places += "<a href='/geo-domains/?keywords="+fullPlace+"'>"+fullPlace+"</a> | ";

	    counter = i;
	    word = checkPlace;
	    displayWord = checkPlace;
	    var language = "";
	    if(parseInt(population) == 0) population = "";

            punyCodeMap[word] = displayWord;
	    locationDomainMap[word] = word;

	    if(displayedDomains[word])
		continue;
	    if(resultsDomains[word])
		continue;

	    displayedDomains[word] = true;
	    displayedDomainsCount++;

	    resultsDomains[word] = true;
	    resultsDomainsCount++;

            innerHTMLPlaceCheckboxes += "<div id='div_checkbox_"+word+"_word'><div style='width:100%; border-bottom:1px solid #CCCCCC; height:18px;' id='div_checkbox_"+word+"."+tld+"'><input disabled='true' type='checkbox' id='check_"+word+"."+tld+"' value='"+word+"."+tld+"' onclick='wrangleProductCartSwap(this.checked, \""+word+"."+tld+"\", 1, \"registration\", \""+tag+"\");' style='display:none;'></div></div>\n";
            innerHTMLPlaceDomains += "<div id='div_domain_"+word+"_word'><div style='width:100%; border-bottom:1px solid #CCCCCC; height:18px;' id='div_domain_"+word+"."+tld+"'><a target='_new' href='/search.php?domain="+encodeURI(displayWord)+"."+tld+"'><span id='displayDomain_"+displayWord+"'>"+displayWord+"</span></a><span style='font-size:10px' id='avail_"+word+"."+tld+"'>&nbsp;searching...</span></div></div>\n";
	    innerHTMLPlacePopulation += "<div id='div_population_"+word+"_word'><div style='width:70px; border-bottom:1px solid #CCCCCC; height:18px; padding:0px 0px 0px 5px;' id='div_population_"+word+"."+tld+"'>"+population+"</div></div>\n";
	    innerHTMLPlaceAdword += "<div id='div_adword_"+word+"_word'><div style='width:50px; border-bottom:1px solid #CCCCCC; height:18px;' id='div_adword_"+word+"."+tld+"'><span id='adwordResult_"+word+"' style='font-size:10px; color:gray;'></span><span id='sldWords_"+word+"' style='display:none;'>"+sldWords+"</span></div></div>\n";

            var point = new GLatLng(latitude, longitude);
	    var markerContent = "<br><b>"+name+"</b><br>";
	    if(population > 0) markerContent += "Population: "+population+"<br>";
	    if(countryName) markerContent += "Country Name: "+countryName+"<br>";
	    if(admin1Name && !admin1Name.match("(general)")) markerContent += "State / Province: "+admin1Name+"<br>";
            map.addOverlay(createMarker(point, markerContent, 0, fullPlace));

	    if(i % 100 == 0)
	    {
	        document.getElementById("suggestions2_checkboxes_container").innerHTML += innerHTMLPlaceCheckboxes;
	        document.getElementById("suggestions2_domains_container").innerHTML += innerHTMLPlaceDomains;
	        document.getElementById("suggestions2_population_container").innerHTML += innerHTMLPlacePopulation;
	        document.getElementById("suggestions2_adword_container").innerHTML += innerHTMLPlaceAdword;

	        innerHTMLPlaceCheckboxes = "";
	        innerHTMLPlaceDomains = "";
	        innerHTMLPlacePopulation = "";
	        innerHTMLPlaceAdword = "";
	    }
        }

        document.getElementById("suggestions2_checkboxes_container").innerHTML += innerHTMLPlaceCheckboxes;
        document.getElementById("suggestions2_domains_container").innerHTML += innerHTMLPlaceDomains;
        document.getElementById("suggestions2_population_container").innerHTML += innerHTMLPlacePopulation;
        document.getElementById("suggestions2_adword_container").innerHTML += innerHTMLPlaceAdword;

        if(keywordPoint)
        {
	    var keywordString = jQuery.trim(document.getElementById("keywords").value);
	    var marker = null;

	    if(marker)
	    {
                map.addOverlay(marker);
	        marker.openInfoWindowHtml("<br><b>"+keywordString+"</b>");
 	    }
        }
        keywordPoint = null;

        document.getElementById("places").innerHTML = places;

        var code = results["locationDomains"]["searchCode"];
        var domainCount = results["locationDomains"]["searchCount"];
        if(code && domainCount > 0)
	{
	    isAvailable = new Array();
	    adwordProgressTracker = new Array;
	    document.getElementById("adwordProgress").style.display = "none";
	    if(document.getElementById("adwordProgressFrom") && document.getElementById("adwordProgressTo"))
	    {
	        document.getElementById("adwordProgressFrom").innerHTML = "0";
	        document.getElementById("adwordProgressTo").innerHTML = "0";
	    }
            var url = "getURL(encodeURI('/domain-suggestions/services/availability.php?code="+code+"&domainCount="+domainCount+"'), availabilityHandler);";
	    setTimeout(url, 1);
	}
    }
    else
    {
        var zoom = map.getZoom();
        var keywordString = jQuery.trim(document.getElementById("keywords").value);

        limitCountry = getCookie("geoDomainsLimitCountry");
        limitState = getCookie("geoDomainsLimitState");
        limitAdmin2 = getCookie("geoDomainsLimitAdmin2");

        if(!limitCountry) limitCountry = "";
        if(!limitState) limitState = "";
        if(!limitAdmin2) limitAdmin2 = "";

//	if(humanInteraction)
//	{
            document.getElementById("emptySuggestionContainer").style.display = "";
            document.getElementById("suggestionContainer").style.display = "none";
//	}
    }

    if(detectedLanguageCode) keywordLanguage = detectedLanguageCode;
    if(wrangledDomains) wrangledDomains = wrangledDomains["adWord"];

    resetLoadingDiv();
}

function geoCoderGetLatLng(point)
{
    var zoom = parseInt(getCookie("geoDomainsZoomLevel"));

    if(point)
    {
	keywordPoint = point;
        document.getElementById("basicLocationInformation").innerHTML = "<b>lat:</b> "+point.lat()+" <b>lng:</b> "+point.lng();
	if(!zoom) zoom = 6;
        map.setCenter(point, zoom);
    }
    else
    {
        document.getElementById("basicLocationInformation").innerHTML = "";
	if(!zoom) zoom = 2;
        map.setCenter(new GLatLng(21.943045533438166, -33.75), zoom);
    }
}

function initialize(keywords, searchSubmit)
{
    document.getElementById("mapInterface").style.display = "";
    var date = new Date();
    var year = date.getFullYear();

    keywordPoint = null;
    keywords = jQuery.trim(keywords);

    if (GBrowserIsCompatible())
    {
        includeState = getCookie("geoDomainsIncludeState");
        includeCountry = getCookie("geoDomainsIncludeCountry");
        userKeywordPlacement = getCookie("geoDomainsUserKeywordPlacement");
        hideExtended = getCookie("geoDomainsHideExtended");
        hideUnavailable = getCookie("geoDomainsHideUnavailable");
        userKeyword = getCookie("geoDomainsUserKeyword");
        limitCountry = getCookie("geoDomainsLimitCountry");
        limitState = getCookie("geoDomainsLimitState");
        limitAdmin2 = getCookie("geoDomainsLimitAdmin2");
	tldSelection = getCookie("geoDomainsTldSelection");
	limitFeature = getCookie("geoDomainsLimitFeature");
	limitFeatureCode = getCookie("geoDomainsLimitFeatureCode");
	displayCount = getCookie("geoDomainsDisplayCount");

        if(!includeState) includeState = 0;
        if(!includeCountry) includeCountry = 0;
        if(!userKeywordPlacement) userKeywordPlacement = 0;
        if(!hideExtended) hideExtended = 0;
        if(!hideUnavailable) hideUnavailable = 0;
        if(!userKeyword) userKeyword = "";
        if(!limitCountry) limitCountry = "";
        if(!limitAdmin2) limitAdmin2 = "";
        if(!tldSelection) tldSelection = "ALL";
        if(!limitFeature) limitFeature = "P";
        if(!limitFeatureCode) limitFeatureCode = "ALL";
        if(!displayCount) displayCount = "50";

	if(displayCountOverride)
	    displayCount = displayCountOverride;

        var zoom = parseInt(getCookie("geoDomainsZoomLevel"));
	var userLat = null;
	var userLng = null;

	if(google.loader.ClientLocation)
	{
	    userLat = google.loader.ClientLocation.latitude;
	    userLng = google.loader.ClientLocation.longitude;
	}

        map = new GMap2(document.getElementById("map_canvas"));
        map.setMapType(G_NORMAL_MAP);
	geocoder = new GClientGeocoder();

        blueIcon = new GIcon(G_DEFAULT_ICON);
        blueIcon.image = "/geo-domains/images/markers/blue/blank.png";

	if(keywords && searchSubmit == 1)
	{
	    document.getElementById("keywords").value = jQuery.trim(keywords);
	    geocoder.getLatLng(keywords, geoCoderGetLatLng);
	}
	else if(keywords && searchSubmit == 2)
	{
	    limitCountry = "";
	    limitState = "";
	    limitAdmin2 = "";
            setCookie("geoDomainsLimitCountry", "", year+1, '', '', '', 'name.com');
            setCookie("geoDomainsLimitState", "", year+1, '', '', '', 'name.com');
            setCookie("geoDomainsLimitAdmin2", "", year+1, '', '', '', 'name.com');
    	    document.getElementById("limitCountry").selectedIndex = 0;
   	    document.getElementById("limitStateDiv").innerHTML = "";
   	    document.getElementById("limitAdmin2Div").innerHTML = "";

	    document.getElementById("keywords").value = keywords;
	    geocoder.getLatLng(keywords, geoCoderGetLatLng);
	}
	else if(limitCountry || limitState || limitAdmin2)
	{
	    processLocationOverride();
	    return;
	}
	else if(userLat && userLng && (!searchSubmit || searchSubmit == 2))
	{
	    keywordPoint = new GLatLng(userLat, userLng);

    	    var userCity = google.loader.ClientLocation.address.city;
    	    var userCountry = google.loader.ClientLocation.address.country;
    	    var userCountryCode = google.loader.ClientLocation.address.country_code;
    	    var userRegion = google.loader.ClientLocation.address.region;
	    var addressInfo = "";

	    if(userCity) addressInfo += userCity+" ";	    
	    if(userRegion) addressInfo += userRegion+" ";	    
	    if(userCountry) addressInfo += userCountry+" ";	    

	    if(addressInfo) document.getElementById("keywords").value = jQuery.trim(addressInfo);
	    document.getElementById("basicLocationInformation").innerHTML = "<b>lat:</b> "+userLat+" <b>lng:</b> "+userLng;

	    if(!zoom) zoom = 6;

            map.setCenter(new GLatLng(userLat, userLng), zoom);
    	    mapDragEnd();
	}
	else
	{
	    if(!zoom) zoom = 2;

	    document.getElementById("basicLocationInformation").innerHTML = "";
            map.setCenter(new GLatLng(21.943045533438166, -33.75), zoom);
    	    mapDragEnd();
	}

        map.setUIToDefault();

	GEvent.addListener(map, "click",   function(overlay, latlng, overlaylatlng) { mapClick(latlng, overlay); });
	GEvent.addListener(map, "dragend", function() { mapDragEnd(); });
	GEvent.addListener(map, "zoomend", function() { mapZoom(); });
	map.disableScrollWheelZoom();
    }
}

function wrangleProductCartSwap(add, name, duration, type, tag)
{
    var action = "";
    if(!tag){ tag = "";}
             
    if(add)
     	action = "add";
    else
        action = "remove";
	    
    getURL(encodeURI('/products-pricing/services/productCart.php?action='+action+'&name='+name+'&duration='+duration+'&type='+type+'&tld=&tag='+tag+'&billing_interval='), wrangleProductCartSwapHandler);
}
             	
function wrangleProductCartSwapHandler(status, content, contentType)
{
    if(status != 200 && status !== 0)
    {    
        return;
    }
        
    var results = eval('('+content+')');
    setShoppingCartInfo(results.productTotalPrice, results.productCount);
}

function availabilityHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
	return;
    }

    var results = eval('('+content+')');

    var isInCart = results["isInCart"];
    var domains = results["domains"];
    var prices = results["prices"];
    var searchId = results["search_id"];
    var domainCount = results["domainCount"];
    var done = results["done"];
    var notAvailable = new Array();
    var counter = 0;
    var availableCounter = 0;
    var tag = "wrangled-back";
    var getAdwords = new Array();

    var tldReplacementArray = [];

    tldSelection = jQuery.trim(getCookie("geoDomainsTldSelection"));
    var lastTld = "";

    if(!tldSelection || tldSelection == "ALL")
    {
        tldReplacementArray["net"] = "com";
        tldReplacementArray["org"] = "net";
        tldReplacementArray["info"] = "org";
        tldReplacementArray["biz"] = "info";
        tldReplacementArray["us"] = "biz";
        tldReplacementArray["tv"] = "us";
        tldReplacementArray["me"] = "tv";
        tldReplacementArray["im"] = "me";
        tldReplacementArray["in"] = "im";
        tldReplacementArray["tel"] = "in";
        lastTld = "tel";
    }
    else
    {
        lastTld = tldSelection;
    }

    for(var domain in domains)
    {
	var price = prices[domain];
        var displayDomain = domains[domain];
        var displayDomainParts = displayDomain.split(".");
        var domainParts = domain.split(".");
        var tld = domainParts[1];
        var sld = domainParts[0];
        var displaySld = punyCodeMap[sld];
        var available = domains[domain];
        var inCart = isInCart[domain];

        if(tldReplacementArray[tld])
        {
            var word = sld;
            var oldTld = tldReplacementArray[tld];
            var tmpDomain = sld+"."+oldTld;
            var displayTmpDomain = displaySld+"."+oldTld;

	    if(document.getElementById("div_checkbox_"+sld+"_word")) document.getElementById("div_checkbox_"+sld+"_word").innerHTML = document.getElementById("div_checkbox_"+sld+"_word").innerHTML.replaceAll(tmpDomain, domain);
	    if(document.getElementById("div_domain_"+sld+"_word")) document.getElementById("div_domain_"+sld+"_word").innerHTML = document.getElementById("div_domain_"+sld+"_word").innerHTML.replaceAll(tmpDomain, domain);
	    if(document.getElementById("div_population_"+sld+"_word")) document.getElementById("div_population_"+sld+"_word").innerHTML = document.getElementById("div_population_"+sld+"_word").innerHTML.replaceAll(tmpDomain, domain);
	    if(document.getElementById("div_adword_"+sld+"_word")) document.getElementById("div_adword_"+sld+"_word").innerHTML = document.getElementById("div_adword_"+sld+"_word").innerHTML.replaceAll(tmpDomain, domain);
        }

	if(available == 1) 
	{
	    if(document.getElementById("check_"+domain)) 
	    {
		document.getElementById("check_"+domain).disabled = false;
		document.getElementById("check_"+domain).style.display = "";
		if(inCart != 0) document.getElementById("check_"+domain).checked = true;

		document.getElementById("div_checkbox_"+domain).style.backgroundColor = "#d9f9d8";
		document.getElementById("div_domain_"+domain).style.backgroundColor = "#d9f9d8";
		document.getElementById("div_population_"+domain).style.backgroundColor = "#d9f9d8";
		document.getElementById("div_adword_"+domain).style.backgroundColor = "#d9f9d8";

		document.getElementById("avail_"+domain).innerHTML = "";
                document.getElementById("displayDomain_"+displaySld).innerHTML = displaySld+"."+tld;

	        if(!isAvailable[displaySld])
		{
		    isAvailable[displaySld] = 1;
	  	    getAdwords[availableCounter] = document.getElementById("sldWords_"+displaySld).innerHTML;
	  	    availableCounter++;
		}
	    }
	}
	else
	{
	    if(document.getElementById("check_"+domain)) 
	    {
		document.getElementById("check_"+domain).style.display = "none";
                notAvailable[counter] = domain;

		hideUnavailable = parseInt(getCookie("geoDomainsHideUnavailable"));
		if(!hideUnavailable)
		{
		    document.getElementById("div_checkbox_"+sld+"_word").style.backgroundColor = "#DDDDDD";
		    document.getElementById("div_domain_"+sld+"_word").style.backgroundColor = "#DDDDDD";
		    document.getElementById("div_population_"+sld+"_word").style.backgroundColor = "#DDDDDD";
		    document.getElementById("div_adword_"+sld+"_word").style.backgroundColor = "#DDDDDD";
		}

                if(tld == lastTld)
                {
       	            if(!notAvailableDomains[sld])
		    {
	            	displayedDomainsCount--;
			tempString += sld+",";
		    }

            	    notAvailableDomains[sld] = true;

		    if(hideUnavailable)
		    {
		        document.getElementById("div_checkbox_"+sld+"_word").style.display = "none";
		        document.getElementById("div_domain_"+sld+"_word").style.display = "none";
		        document.getElementById("div_population_"+sld+"_word").style.display = "none";
		        document.getElementById("div_adword_"+sld+"_word").style.display = "none";
		    }

                    document.getElementById("avail_"+domain).innerHTML = "&nbsp;<a target='_new' href='/search.php?domain="+displaySld+"' style='text-decoration: underline; color: blue;'>search more TLDs</a>";
                }
                else
                {
                    document.getElementById("avail_"+domain).innerHTML = "&nbsp;searching "+tld+"..."
		counter++;
                }
	    }
	}
    }

    getAdwordResults = parseInt(getCookie("geoDomainsGetAdwordResults"));
    if(availableCounter > 0 && getAdwordResults)
    {
	getURL(encodeURI('/geo-domains/services/geo-domains.php?action=getadwordresults&names='+getAdwords), getAdwordResultsHandler);
    }

// owen
    if(done == 1)
    {
        if(counter > 0)
	{
            getURL(encodeURI('/domain-suggestions/services/domain-suggestions.php?action=getmoreresults&names='+notAvailable), getMoreResultsHandler);
	}
	else
	{
	    stillNeededResults = displayCount - displayedDomainsCount;
	    if(document.getElementById('testing')) document.getElementById('testing').innerHTML += "stillNeededResults: "+stillNeededResults+", displayCount: "+displayCount+", displayedDomainsCount: "+displayedDomainsCount+"<br>";

	    if(displayedDomainsCount < displayCount && stillNeededResults > 0 && hideUnavailable && !noMoreResults)
	    {
		processSearch(nextStart, stillNeededResults, 0);
	    }
	}

	return;
    }
    else
    {
	var url = "getURL(encodeURI('/domain-suggestions/services/availability.php?code="+searchId+"&domainCount="+domainCount+"'), availabilityHandler)";
        setTimeout(url, 1000);
    }
}

function getAdwordResultsHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
        return;
    }

    var results = eval('('+content+')');

    if(results["status"] != 1)
	return;

    var searchCode = results["searchCode"];
    var searchCount = results["searchCount"];

    adwordProgressTracker[searchCode] = 0;
    document.getElementById("adwordProgress").style.display = "";
    document.getElementById("suggestions2_adword").style.display = "";
    document.getElementById("adwordProgressTo").innerHTML = (parseInt(document.getElementById("adwordProgressTo").innerHTML) + parseInt(searchCount));

    getAdwordResults = parseInt(getCookie("geoDomainsGetAdwordResults"));
    if(searchCode && searchCount && getAdwordResults)
        getURL(encodeURI('/geo-domains/services/geo-domains.php?action=checkadwordresults&code='+searchCode+'&count='+searchCount), checkAdwordResultsHandler);
}

function checkAdwordResultsHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
        return;
    }

    var results = eval('('+content+')');

    if(results["status"] != 1)
	return;

    var searchCode = results["searchCode"];
    var searchCount = results["searchCount"];
    var adwordsCount = results["adwordsCount"];
    var adwords = results["adwords"];
    adwordsCount = adwords.length;

    var adwordsCountDiff = 0;
    if(adwordsCount > adwordProgressTracker[searchCode])
    {
	adwordsCountDiff = parseInt(adwordsCount) - parseInt(adwordProgressTracker[searchCode]);
        adwordProgressTracker[searchCode] = parseInt(adwordsCount);
    }

    if(adwordsCountDiff > 0)
        document.getElementById("adwordProgressFrom").innerHTML = (parseInt(document.getElementById("adwordProgressFrom").innerHTML) + parseInt(adwordsCountDiff));

    for(var i = 0; i < adwordsCount; i++)
    {
	var adwordInfo = adwords[i];
	var id = adwordInfo["id"];
	var process_id = adwordInfo["process_id"];
	var element_id = adwordInfo["element_id"];
	var word = adwordInfo["word"];
	var status = adwordInfo["status"];
	var results = adwordInfo["results"];

	if(results)
	{
            results = results.split(":");

	    if(!document.getElementById(element_id).innerHTML)
	    {
		if(results[1])
	            document.getElementById(element_id).innerHTML = "<font color='red'>"+results[1]+"</font>";
		if(results[3])
	            document.getElementById(element_id).innerHTML += "<font color='red'>/"+results[3]+"</font>";
	    }
	}
	else
	{
	    if(!document.getElementById(element_id).innerHTML)
	        document.getElementById(element_id).innerHTML = "<font color='red'>0</font>";
	}
    }

    getAdwordResults = parseInt(getCookie("geoDomainsGetAdwordResults"));
    if(searchCode && searchCount && adwordsCount < searchCount && getAdwordResults)
    {
        setTimeout("getURL(encodeURI('/geo-domains/services/geo-domains.php?action=checkadwordresults&code="+searchCode+"&count="+searchCount+"'), checkAdwordResultsHandler)", 2000);
    }
}

function getMoreResultsHandler(status, content, contentType)
{
    if(status != 200 && status != 0)
    {
        return;
    }

    var results = eval('('+content+')');
    var code = results["wrangledDomains"]["searchCode"];
    var domainCount = results["wrangledDomains"]["searchCount"];

    if(code && domainCount > 0)
    {
        getURL(encodeURI('/domain-suggestions/services/availability.php?code='+code+'&domainCount='+domainCount), availabilityHandler);
    }
}

String.prototype.replaceAll = function(strTarget, strSubString)
{
    var strText = this;
    var intIndexOfMatch = strText.indexOf( strTarget );

    while (intIndexOfMatch != -1)
    {
        strText = strText.replace( strTarget, strSubString )
        intIndexOfMatch = strText.indexOf( strTarget );
    }

    return(strText);
}

function getCookie(cookieName)
{
    var results = document.cookie.match ( '(^|;) ?' + cookieName + '=([^;]*)(;|$)' );
    
    if ( results )
        return ( unescape ( results[2] ) );
    else
        return null;
}

function setCookie (name, value, exp_y, exp_m, exp_d, path, domain, secure)
{
    var cookie_string = name + "=" + escape ( value );
    
    if ( exp_y )
    {
        var expires = new Date ( exp_y, exp_m, exp_d );
        cookie_string += "; expires=" + expires.toGMTString();
    }
    
    if ( path )
        cookie_string += "; path=" + escape ( path );
            
    if ( domain )
        cookie_string += "; domain=" + escape ( domain );
                
    if ( secure )
        cookie_string += "; secure";
        
    document.cookie = cookie_string;
}   

