/* last ver */

var apiDomain = "http://"+window.location.hostname;
var submitURL = "";

$.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});

var years = {
    "period_12": "1 year",
    "period_24": "2 years",
    "period_36": "3 years",
    "period_48": "4 years",
    "period_60": "5 years",
    "period_72": "6 years",
    "period_84": "7 years",
    "period_96": "8 years",
    "period_108": "9 years",
    "period_120": "10 years"
}

var tldLists = {
	"list10": {"com":1, "net":1, "org":1, "info":1, "biz":1, "us":1, "tv":1, "net.cn":1, "org.cn":1, "cc":1},
	"listMostPopular": {"com":1, "net":1, "org":1, "info":1, "biz":1, "co.uk":1, "com.au":1, "co.nz":1, "co.za":1, "us":1, "ca":1, "de":1, "jp":1, "se":1, "be":1, "eu":1},
	"listUniversal": {"com":1, "net":1, "org":1, "info":1, "biz":1, "name":1, "mobi":1, "asia":1},
	"listCountryCode": {"us":1, "tv":1, "net.cn":1, "org.cn":1, "cc":1, "cn":1, "me.uk":1, "eu":1, 
						"org.tw":1, "idv.tw":1, "org.uk":1, "ca":1, "com.tw":1, "co.uk":1, "com.cn":1, 
						"com.mx":1, "de":1, "me":1, "in":1, "net.au":1, "net.nz":1, "org.nz":1, "be":1, 
						"jp":1, "nu":1, "we.bs":1, "tw":1, "se":1, "ws":1, "nl":1, "com.au":1, "co.nz":1, "at":1},
	"listNone": {},
	"listAll": 1
};

var domainCache = {};

var selectedList;
var see_also = true;

var getScriptCache = false;

/*
$.getScript(apiDomain + "/api-domains/js/jquery.alphanumeric.pack.js");
$.getScript(apiDomain + "/api-domains/js/facebox/facebox.js");
$.getScript(apiDomain + "/api-domains/js/sprintf.js");
*/

$.getScript = function(url, callback, data, cache)
{
	$.ajax({ 
		type: "GET", 
		url: url, 
		success: callback,
		data: data,
		dataType: "script", 
		cache: getScriptCache 
	}); 
}; 



var domainsInfo, productsGetDomains, productsGetRegisterdomains, productsGetIdProtect;
var faceboxInput, homepageInput;
var selectedTld = false;

$(document).ready(function() {
	$('#search-box-input').keyup(function() {
		if (this.value.match(/[^a-zA-Z0-9- ]/g)) {
			this.value = this.value.replace(/[^a-zA-Z0-9- ]/g, '');
		}
	});
	$('#search-box-submit').facebox();
});


function initFacebox()
{
	homepageInput = $('#search-box-input');
	submitURL = $("#search-box-form").attr("action") + "/?";

	if ($.getUrlVar('variant') == 1)
	{
		$("#facebox-results-tabs").css("display", "block");
		$("#see_also").css("display", "block");
		$("#facebox-extensions").css("display", "none");
	} else {
		$("#facebox-results-tabs").css("display", "none");
		$("#see_also").css("display", "none");
		$("#facebox-extensions").css("display", "block");
	}


			faceboxInput = $('#facebox-input');
			homepageInput.removeAttr('disabled');
			$("#apiPreview").removeAttr('disabled');
			$('#search-box-input, #facebox-input').change(function() { domainCache = {}; });

			if (true) //bez tabove
			{
				$("#facebox-tld").addClass("hidden");
				selectedList = $("#facebox-extensions input[name=rExtensions]").val();
				$("#facebox-extensions input[name=rExtensions]").bind("click", function(){
					$("#facebox-extensions label").removeClass("selected");
					$(this).parent().addClass("selected");
					selectedList = $(this).val();

					var selectedTR = $("#tlds-results-table tr.selected");
					if(selectedTR.length != 0) 
					{
						trId = selectedTR[0].id;
						var selTld = $("#"+trId+" td.radioTd input").val();
						tldLists[selectedList][selTld] = 1;
					}

					$('#tld-checkboxes input').each(function(index) {
						if (selectedList == "listNone") tldLists[selectedList][$(this).val()] = null;
						if ((selectedList == "listAll") || (tldLists[selectedList][$(this).val()] != null)) {
							$(this).attr('checked', true);
							$(this).parent().addClass("selected");
						} else {
							$(this).attr('checked', false);
							$(this).parent().removeClass("selected");
						}
					});
					if (selectedList != "listNone") {
						var searchedName = faceboxInput.val();
						domainSearch(searchedName);
					} else $("#facebox .content").html("<table id='tlds-results-table'></table>");
				});
			} else {
				selectedList = "list10";
			}
			$("input[name=rExtensions]:checked").parent().addClass("selected");


			for (tld in domainsInfo) {
				if (tldLists[selectedList][tld] != null) {
					checkedTxt = ' checked="checked"';
					labelTxt = ' class="selected"';
				} else {
					checkedTxt = '';
					labelTxt = '';
				}
				$('#tld-checkboxes').append('<li>' +
				'<label'+labelTxt+'><input type="checkbox" name="extension[' +	tld + ']" value="'+ tld +'"' + checkedTxt + ' />' +
				'.' + tld +
				'</label></li>');
			}
			
			$('#tld-checkboxes input').bind("click", function(){
				if ($(this).attr('checked')) {
					tldLists[selectedList][$(this).val()] = 1;
					$(this).parent().addClass("selected");
				} else {
					$(this).parent().removeClass("selected");
					tldLists[selectedList][$(this).val()] = null;
				}
					
				var searchedName = faceboxInput.val();
				domainSearch(searchedName);
			});

			$("#search_10").click(function(){ 
				see_also = true;
				selectedList = "list10"; 
				$("#search_10").addClass("selected");
				$("#search_all").removeClass("selected");
				$("#see_also").css("display", "inline");
				var searchedName = faceboxInput.val();
				domainSearch(searchedName);
			});
			$("#search_all, #see_also").click(function(){
				see_also = false;
				selectedList = "listAll"; 
				$("#search_all").addClass("selected");
				$("#search_10").removeClass("selected");
				$("#see_also").css("display", "none");
				var searchedName = faceboxInput.val();
				domainSearch(searchedName);
			});
			
			$('#facebox-form-reg').submit(function() {
				var searchedName = faceboxInput.val();
				homepageInput.val(searchedName);
				domainSearch(searchedName);
				return false;
			});

			$("#facebox-tld").change(function() {
				$("#search-box-tld").val($("#facebox-tld").val());
				selectedTld = $("#facebox-tld").val();
			});			

			$("#search-box-tld").change(function() {
				$("#facebox-tld").val($("#search-box-tld").val());
				selectedTld = $("#search-box-tld").val();
			});	

			$("#orderTld").click(function() {
				var selectedTR = $("#tlds-results-table tr.selected");
				if(selectedTR.length == 0) return false;
				trId = selectedTR[0].id;
				orderURL = submitURL 
						+ "tld=" + $("#"+trId+" td.radioTd input").val()
						 + "&domain_type=" + $("#"+trId+"_domain_type").val() 
						 + "&sld=" + $("#"+trId+"_sld").val()
						 +"&dperiod=" + parseInt(years[$("#"+trId+" td.period select").val()]);
				if ($("#" + trId + " p.epp input").val() != undefined) 
					orderURL = orderURL + "&epp=" + $("#" + trId + " p.epp input").val();
				if ($("#" + trId + " p.idp input").val() != undefined) 
					orderURL = orderURL + "&" + $("#" + trId + " p.idp input").attr("name") + "=" + $("#" + trId + " p.idp input").val();
				orderURL = orderURL + "&domain_price_type=" + $('input[name=domain_price_type_facebox]:checked').val()
				window.location = orderURL;
				return false;
			});	
			
			$('input:radio[name=domain_price_type_facebox]').filter('[value='+$('input[name=domain_price_type_searchbox]:checked').val()+']').attr('checked', true);
			boldCheckboxLabels();
			
			$('input[name=domain_price_type_searchbox]').change(function() {
				$('input:radio[name=domain_price_type_facebox]').filter('[value='+$('input[name=domain_price_type_searchbox]:checked').val()+']').attr('checked', true);
				boldCheckboxLabels();
			});

			$('#domain_price_types input').change(function() {
				//domainCache = {};
				var searchedName = faceboxInput.val();
				$('input:radio[name=domain_price_type_searchbox]').filter('[value='+$('input[name=domain_price_type_facebox]:checked').val()+']').attr('checked', true);
				boldCheckboxLabels();
				domainSearch(searchedName);
			});
			
			$('#facebox-tabs a#reg').click(function(){
				$('#facebox-tabs a#whois').removeClass("selected");
				$('#facebox-tabs a#reg').addClass("selected");
				$('#facebox-form-whois').css("display", "none");
				$('#facebox-form-reg').css("display", "block");
			});

			$('#facebox-tabs a#whois').click(function(){
				$('#facebox-tabs a#reg').removeClass("selected");
				$('#facebox-tabs a#whois').addClass("selected");
				$('#facebox-form-reg').css("display", "none");
				$('#facebox-form-whois').css("display", "block");
			});
			
			$('#facebox-form-whois').submit(function() {
				whoisDomainCheck($("#facebox-whois-input").val());
				return false;
			});
			

/*	
	$.getScript(apiDomain + "/api-domains/html-facebox.php", 
		function(data){
			startEndInit();
		}
	);*/
}


function whoisDomainCheck(domain)
{
	if (!isValidDomain(domain))
	{
		alert("Enter a valid domain name");
		return false;
	}
	$('#facebox-whois-data').empty().addClass("loading");
	jQuery.getJSON(
		apiDomain + "/api-domains/json-whois-check.php?domain=" + domain + "&callback=?", 
		function(msg) {
			$('#facebox-whois-data').html(msg).removeClass("loading");
		}
	);
}

function checkWhois(domain)
{
	$("#facebox-whois-input").val(domain);
	$('#facebox-form-whois').submit();
	$('#facebox-tabs a#whois').trigger('click');
}

function isValidDomain(domain){
	var urlPattern = /^[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/
	return urlPattern.test(domain);
}

function boldCheckboxLabels()
{
	$('#searchTldOptions label').css("font-weight", "normal");
	$("input[name=domain_price_type_searchbox]:checked").parent().css("font-weight", "bold");
	$('#domain_price_types label').removeClass("selected");
	$("input[name=domain_price_type_facebox]:checked").parent().addClass("selected");
}


function createModalDialog()
{
	if($('#facebox-input').length == 0) return false;

	$('#facebox div.loading').css('display','none');
	$('#facebox-tabs').css('display','block');
	$('#facebox-form-reg').css('display','block');
	$('#facebox-whois-data').css('height', ($('#facebox-form-reg').height() - 114) + "px" )

	$("#facebox-tld").val($("#search-box-tld").val());

	$('#facebox-tabs a#reg').trigger('click');
	
	var searchedName = homepageInput.val();
	faceboxInput.val(searchedName);
	domainSearch(searchedName);
}

function domainSearch(searchedName)
{
	searchedName = checkDomainName(searchedName);
	faceboxInput.val(searchedName);
	homepageInput.val(searchedName);
	if (searchedName == "")
	{
		alert("Please enter a valid domain name. (e.g. my-best-domain)");
		return;
	}
	$("#facebox .content").html("<table id='tlds-results-table'></table>");

	if ($("#facebox-results-tabs").css("display") == "block")
	{
		var selectTld = $("#facebox-tld").val();
		domainCheck(searchedName, selectTld);
	} else selectTld = false;

	see_also_txt = "See also: ";
	first = true;

	if ((selectedTld != undefined) && selectedTld) domainCheck(searchedName, selectedTld, true);

	for (tld in domainsInfo)
	{
		if ((selectedList == "listAll") || (tldLists[selectedList][tld] != null))
		{
			if ((tld != selectTld)&&(tld != selectedTld))
			{
				domainCheck(searchedName, tld);
				if (domainAlias != false && tld == selectedTld) 
					domainCheck(domainAlias, tld);
			}
		} else if (see_also) {
			if (first) first = false;
				else see_also_txt += ",";
			see_also_txt += " ." + tld;
		}
	}

	if (see_also) $("#see_also").html(see_also_txt);

}

function isNumber(s) {
	return (s.toString().search(/^-?[0-9.]+$/) == 0);
}

function domainCheck(searchedName,searchedTld,checkedTld)
{
	if (!($('#tlds-results-table tr').length % 2)) var evenClass = ' class="trEven"';
		else  var evenClass = '';
	
	if (checkedTld) {
		var checkedHtml = ' checked="checked"';
		var loaderImage = 'ajax-loader.gif'
	}
	else {
		var checkedHtml = '';
		var loaderImage = 'ajax-loader.gif'
	}

	$('#tlds-results-table').append(
		'<tr id="'+ searchedName + '_' + searchedTld.replace(".", "_") + '"'+ evenClass +'>'+
			'<td class="radioTd"><input type="radio" name="register_transfer_tld"' + checkedHtml + ' value="' + searchedTld + '" style="visibility: hidden" /></td>' +
			'<td><span>Checking</span> <strong>' + searchedName + "." + searchedTld + '</strong>' + 
			' <a href="#" onclick="checkWhois(\'' + searchedName + "." + searchedTld + '\'); return false" class="whois-check" style="visibility: hidden;">(Whois)</a>' + 
			'<p class="epp"></p><p class="idp"></p></td>' +
			'<td class="period"><img src="'+apiDomain+'/api-domains/css/images/'+loaderImage+'" /></td>' +
			'<td class="sum">' +
				'<span class="tld-price">&nbsp;</span>' +
				'<p class="tld-price-id-protect"></p>' +
				'<input type="hidden" name="" id="'+ searchedName + '_' + searchedTld.replace(".", "_") + '_sld" />' +
				'<input type="hidden" name="" id="'+ searchedName + '_' + searchedTld.replace(".", "_") + '_domain_type" />' +
			'</td>' +
		'</tr>');

	if (checkedTld) $("#" + searchedName + '_' + searchedTld.replace(".", "_")).addClass("selected");


	if (domainCache[searchedName] != undefined
		&& domainCache[searchedName][searchedTld] != undefined
		&& domainCache[searchedName][searchedTld] != null)
	{
		addRow(searchedName,searchedTld,domainCache[searchedName][searchedTld]);
	} else {
		jQuery.getJSON(
			apiDomain + "/api-domains/json-domains-check.php?tld_name=" + searchedName + "&tld=" + searchedTld + "&callback=?", 
			function(msg) {
				if (domainCache[searchedName] == undefined) domainCache[searchedName] = {};
				domainCache[searchedName][searchedTld] = msg;
				addRow(searchedName,searchedTld,msg);
			}
		);
	}

}

function addRow(searchedName,searchedTld,msg)
{
	var trId = '#'+searchedName + "_" + searchedTld.replace(".", "_");

	if ((msg !=1) && (msg != 0))
	{
		$(trId + " td:eq(1) span").html("");
		$(trId + " td:eq(1)").append(" - " + msg);
		$(trId + " td.period").removeClass("loading");
		return;
	}

	/*
	if (productsGetDomains[searchedTld] != null)
		productObj = productsGetDomains[searchedTld];
	else
		productObj = productsGetRegisterdomains[searchedTld];
		*/
	/* ToDo - remove productsGetDomains, productsGetRegisterdomains objects - not needed */
	
	//if ($.getUrlVar('ver') == 2) {
		var op = $('input[name=domain_price_type_facebox]:checked').val();
		//var op = $("input[@name='domain_price_type']:checked").val();
		if (op == 'domain_hosting') 
			productObj = allDomainsData[searchedTld];
		else 
			productObj = resellerDomainsData[searchedTld];
	//}
		
	if (msg == 0)
	{
		$(trId + " td:first input").css("visibility", "visible");
		$(trId + " td:eq(1) span").html("Register").addClass("green");
		$(trId + " td.period").removeClass("loading");

		$(trId + "_sld").val(searchedName);
		$(trId + "_domain_type").val("register");
		
		var priceIdProtectObj = createIdProtectTds(trId, searchedTld);
		createSelect($(trId), $(trId + " td.period"), productObj, $(trId + " span.tld-price"), priceIdProtectObj, searchedTld, false);
	} 
	else if (domainsInfo[searchedTld].transfer == 1)
	{
		$(trId + " td:first input").css("visibility", "visible");
		$(trId + " td:eq(1) span").html("Transfer").addClass("red");
		$(trId + " td.period").removeClass("loading");
		if (domainsInfo[searchedTld].epp) $(trId + " p.epp").html('<label>EPP code <input name="epp[' + searchedTld + ']" type="text" /></label>');
		$(trId + " td.sum").addClass('transfer-sum');

		$(trId + "_sld").val(searchedName);
		$(trId + "_domain_type").val("transfer");

		$(trId + " a.whois-check").css("visibility", "visible");
	
		var priceIdProtectObj = createIdProtectTds(trId, searchedTld);
		createSelect($(trId), $(trId + " td.period"), productObj, $(trId + " span.tld-price"), priceIdProtectObj, searchedTld, true);
	}
	else
	{
		$(trId + " td:eq(1)").html("Transfer " + searchedName + "." + searchedTld + " Not Supported");
		$(trId + " td.period").removeClass("loading");
	}
	
	$(trId).bind("click", function(e) {
		if ((e.target.tagName.toLowerCase() === 'select') || (e.target.tagName.toLowerCase() === 'option')) {
			return false;
		}
		var checkbox = $(this).find("input[name='register_transfer_tld']");
		if (checkbox.css("visibility") == "hidden") return false;
		$('#tlds-results-table tr.selected').removeClass("selected");
		$(this).addClass("selected");
		checkbox.attr('checked', true);
		selectedTld = $(this).find("td.radioTd input").val();
	});

}

function createIdProtectTds(trId, searchedTld)
{
	if (domainsInfo[searchedTld].id_protect)
	{
		$(trId + " p.idp").html(
			'<label>' + 
			'<input type="checkbox" name="idp[' + searchedTld + ']" value="0" />' + 
			' <a title="Whois Protect is a service that shields your personal details displayed in your domain`s Whois information, thus guarding you from spam, identity theft, data mining, name hijackers and more harassment activities.">' +
			'Whois Protect</a> @ ' +
			sprintf(productsGetIdProtect.currency_symbol, parseFloat(productsGetIdProtect.prices.period_12)) +
			'/year</label>');

		$(trId + " p.tld-price-id-protect").html(
			sprintf(productsGetIdProtect.currency_symbol, parseFloat(productsGetIdProtect.prices.period_12))
			);
		$(trId + " input:checkbox").click(function () {
			if($(this).is(':checked')) {
				$(this).val("1");
			    $(trId + " td.sum p").css("visibility", "visible");
			    return;
			}
			$(this).val("0");
			$(trId + " td.sum p").css("visibility", "hidden");
		});

		return $(trId + " p.tld-price-id-protect");
	} return false;
}

function createSelect(trObj, tdObj, productObj, tldPriceObj, priceIdProtectObj, searchedTld, onePeriod)
{

	tdObj.html('<select name="period[' + searchedTld + ']"></select>');
	var periodSelect = tdObj.children("select");
	var TldPrice = false;

	for (period in productObj.prices)
	{
		if (TldPrice === false) TldPrice = productObj.prices[period];
		periodSelect.append('<option value="' + period + '">' + years[period] + '</option');
		if (onePeriod) break;
	}

	periodSelect.change(function() {

		var checkbox = trObj.find("input[name='register_transfer_tld']");
		$('#tlds-results-table tr.selected').removeClass("selected");
		trObj.addClass("selected");
		checkbox.attr('checked', true);

		tldPriceObj.html(
			sprintf(productObj.currency_symbol, productObj.prices[periodSelect.val()])
		);
		if (priceIdProtectObj !== false)
			priceIdProtectObj.html(
				sprintf(productsGetIdProtect.currency_symbol, productsGetIdProtect.prices[periodSelect.val()])
			);
	});
	tldPriceObj.html(
		sprintf(productObj.currency_symbol, parseFloat(TldPrice))
	);

}

var domainAlias;
function checkDomainName(checkedName)
{
	var regExp = /\s+/g;
	checkedName = checkedName.replace(/^\s+|\s+$/g,"");
	checkedName = checkedName.replace(regExp,'-');
	checkedName = checkedName.replace(/([^a-zA-Z0-9-]+)/g,"");
	var replacedName = checkedName;
	if (checkedName != replacedName)
	{
		homepageInput.val(replacedName);
		faceboxInput.val(replacedName);
		domainAlias = checkedName.replace(regExp,'');
	} else domainAlias = false;
	return replacedName;
}

