var apiDomain = "/";
var submitURL = "http://"+window.location.hostname+"/order/?";

var years = {
    "period_12": "1 " + langStrings["year"],
    "period_24": "2 " + langStrings["years"],
    "period_36": "3 " + langStrings["years"],
    "period_48": "4 " + langStrings["years"],
    "period_60": "5 " + langStrings["years"],
    "period_72": "6 " + langStrings["years"],
    "period_84": "7 " + langStrings["years"],
    "period_96": "8 " + langStrings["years"],
    "period_108": "9 " + langStrings["years"],
    "period_120": "10 " + langStrings["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 plans = {
    "domain_hosting": 31920,
    "sole_domain": 37433,
    "domain_vps": 39222,
    "domain_dedicated": 39240
}


var domainCache = {};
var selectedList;
var faceboxInput, homepageInput;
var selectedTld = false;
var whoisLookup = false;
var floatBox;

$(window).load(function(){
	if($('#search-box-input').length == 0) return false;
	$('#search-box-input').alphanumeric({allow:"- "});
	$('#search-box-submit').facebox();
	$('#facebox .close, #search-box-submit').bind('click', function() { whoisLookup = false; });
	$('#whois-lookup-link').bind('click', function() {
    	whoisLookup = true;
		$('#search-box-submit').trigger('click');
    });
});


function initFacebox()
{
	homepageInput = $('#search-box-input');
	homepageInput.bind('focus', function() {
		if ($(this).val() == "my-best-domain") $(this).val("");
	})
	homepageInput.bind('blur', function() {
		if ($(this).val() == "") $(this).val("my-best-domain");
	})
	
	var tldOptsHtml = $("#searchTldOptions").html();
	tldOptsHtml = tldOptsHtml.replace(/_searchbox/g, "_facebox").replace(/<br \/>/g, " ").replace(/<br>/g, " ");
	$("#domain_price_types").html(tldOptsHtml);
	
	$("#facebox-extensions").css("display", "block");
	
	faceboxInput = $('#facebox-input');
	
	$('#search-box-input, #facebox-input').change(function() { domainCache = {}; });
	
	//$("#apiPreview").removeAttr('disabled');

	$("#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>");
	});
	
	$("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>');
		
		if (selectedTld == tld) {
			$('#search-box-tld').
	          append($("<option></option>").
	          attr("value",tld).
	          attr("selected","selected").
	          text("."+tld));
		} else {
			$('#search-box-tld').
          	append($("<option></option>").
          	attr("value",tld).
          	text("."+tld));
		}
	}
	
	$('#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);
	});

	$('#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 + "&plan=" + plans[$('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;
	});

	homepageInput.removeAttr('disabled');
	$("#search-box-tld").removeAttr('disabled');
	$("#search-box-submit").removeAttr('disabled');

	if (typeof(floatingBox) != "undefined") {
		floatBox = $('#facebox-form-reg .footer');
		initFloatingBox();
	}
}

var floatBoxTop, floatBoxBottom;

function initFloatingBox()
{
	var distanceToTop = $('#facebox-form-reg .content').offset();
	distanceToTop = distanceToTop.top;
	var formDistanceToTop = $('#facebox-form-reg').offset();
	formDistanceToTop = formDistanceToTop.top;
	
	
	floatBoxTop = distanceToTop - formDistanceToTop;
	floatBox.css({"top": floatBoxTop + "px"});

	$(window).scroll(function(){
		if (!floatBox) 
			return;

		var distanceToTop = $('#facebox-form-reg .content').offset();
		distanceToTop = distanceToTop.top;
		var formDistanceToTop = $('#facebox-form-reg').offset();
		formDistanceToTop = formDistanceToTop.top;
		var floatBoxTopMin = distanceToTop - formDistanceToTop;
		offset = $(document).scrollTop();
		
		var contentHeight = $('#facebox-form-reg .content').height();
		var floatBoxHeight = floatBox.height();
		var floatBoxTopMax = contentHeight - floatBoxHeight + floatBoxTopMin;
		
		if ((offset > distanceToTop) && ((offset - floatBoxTopMin) < floatBoxTopMax))
			offset = offset - floatBoxTopMin;
		else if ((offset - floatBoxTopMin) > floatBoxTopMax)
			offset = floatBoxTopMax;
		else offset = floatBoxTopMin;
		
		floatBox.animate({
			top: offset + "px"
		}, {
			duration: 500,
			queue: false
		});
	});


}

function whoisDomainCheck(domain)
{
	if (!isValidDomain(domain))
	{
		alert(langStrings["enter_valid_domain_name"]);
		return false;
	}
	$('#facebox-whois-data').empty().addClass("loadingBlock");
	jQuery.getJSON(
		apiDomain + "api-domains/json-whois-check.php?domain=" + domain + "&callback=?", 
		function(msg) {
			$('#facebox-whois-data').html(msg).removeClass("loadingBlock");
		}
	);
}

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());

	if (whoisLookup)
		$('#facebox-tabs a#whois').trigger('click');
	else 
		$('#facebox-tabs a#reg').trigger('click');

	var searchedName = homepageInput.val();
	faceboxInput.val(searchedName);
	if (whoisLookup) {
		whoisDomainCheck(searchedName + "." + $("#search-box-tld").val());
		$("#facebox-whois-input").val(searchedName + "." + $("#search-box-tld").val());
	}
	else 
		domainSearch(searchedName);
}


function domainSearch(searchedName)
{
	searchedName = checkDomainName(searchedName);
	faceboxInput.val(searchedName);
	homepageInput.val(searchedName);
	if (searchedName == "")
	{
		alert(langStrings["enter_valid_domain_name"]);
		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;

	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);
			}
		}
	}

}

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>' + langStrings["checking"] + '</span> <strong>' + searchedName + "." + searchedTld + '</strong>' + 
			' <a href="#" onclick="checkWhois(\'' + searchedName + "." + searchedTld + '\'); return false" class="whois-check" style="visibility: hidden;">(' + langStrings["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;
				
				if ((typeof(floatingBox) != "undefined") && (checkedTld)) addRow(searchedName,searchedTld,msg,true);
				else addRow(searchedName,searchedTld,msg);
			}
		);
	}

}

function addRow(searchedName,searchedTld,msg,selectedRow)
{
	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;
	}

	var op = $('input[name=domain_price_type_facebox]:checked').val();
	if (op == 'domain_hosting') {
		if (productsGetDomains[searchedTld] != null)
			productObj = productsGetDomains[searchedTld];
		else
			productObj = productsGetRegisterdomains[searchedTld];
	} else {
		productObj = productsGetRegisterdomains[searchedTld];
	}
		
	if (msg == 0)
	{
		$(trId + " td:first input").css("visibility", "visible");
		$(trId + " td:eq(1) span").html(langStrings["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(langStrings["transfer"]).addClass("red");
		$(trId + " td.period").removeClass("loading");
		if (domainsInfo[searchedTld].epp) $(trId + " p.epp").html('<label>' + langStrings["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(langStrings["transfer"] + " " + searchedName + "." + searchedTld + " " + langStrings["not_supported"]);
		$(trId + " td.period").removeClass("loading").html("");
	}
	
	$(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();

		addInCart()


	});
	
	if (typeof(floatingBox) != "undefined") {
		if (selectedRow) addInCart()
	}


}


function addInCart()
{
	var selectedTR = $("#tlds-results-table tr.selected");
	if(selectedTR.length == 0) return false;
	trId = selectedTR[0].id;
	
	$("#searchCart").html("<p>" + $("#"+trId+" td:eq(1) span").html() + " " + $("#"+trId+" td:eq(1) strong").html() + "</p>");

	floatBox.css({
		"display": "block"
	});
}

function createIdProtectTds(trId, searchedTld)
{
	if (domainsInfo[searchedTld].id_protect)
	{
		$(trId + " p.idp").html(
			'<label>' + 
			'<input type="checkbox" name="idp[' + searchedTld + ']" value="0" />' + 
			' <a title="' + langStrings["whois_protect_info"] + '">' +
			langStrings["whois_protect"] + '</a> @ ' +
			sprintf(productsGetIdProtect.currency_symbol, parseFloat(productsGetIdProtect.prices.period_12)) +
			'/' + langStrings["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;
}


var searchFormHtml = '\
	<form id="search-box-form" action="" method="post" onsubmit="return false;">\
    	<table cellpadding="0" cellspacing="5" border="0">\
	    	<tr>\
		        <td valign="middle">\
		        	<input id="search-box-input" value="my-best-domain" disabled="disabled" type="text" name="sld" class="field" />\
		        </td>\
		        <td valign="middle">\
		        	<select id="search-box-tld" class="select" disabled="disabled"></select>\
		        </td>\
		        <td valign="middle">\
		        	<input id="search-box-submit" disabled="disabled" type="submit" name="submit" value="' + langStrings["search"] + '" class="button" />\
		       		<br />\
		       		<a id="whois-lookup-link" href="javascript:void(0)">' + langStrings["whois_lookup"] + '</a>\
		        </td>\
	    	</tr>\
	    </table>\
		<div id="searchTldOptions">\
			<label>\
				<input type="radio" name="domain_price_type_searchbox" value="sole_domain" checked="checked" />\
				' + langStrings["whois_lookup"] + '\
			</label>\
			<label>\
				<input type="radio" name="domain_price_type_searchbox" value="domain_hosting" />\
				' + langStrings["domain_and_hosting"] + '\
			</label>\
		</div>\
    </form>\
';

$(document).ready(function(){
 	if($('#searchFormContainer').length != 0) {
		$('#searchFormContainer').html(searchFormHtml);
	}
});


