var currency_round=true;
var OF = {
	step: 0,
	stepPending: 0,
	block: false,
	intervalID: null,
	translated: {},
	translated_langs: {},
	langs_original: {},
	en_words: {},
	originalLanguage: null,
	searchResults: {},
	submitURL: '/idn-orderflow/index.dhtml',
	d: {},
	init: function (step)
	{
		this.step = step;
		$('input[title]').each(function() {
			if($(this).val() === '')
			{
				$(this).val($(this).attr('title'));
			}
		
			$(this).focus(function() {
				if($(this).val() == $(this).attr('title'))
				{
					$(this).val('').addClass('focused');
				}
	    		});
		
			$(this).blur(function() {
				if($(this).val() === '')
				{
					$(this).val($(this).attr('title')).removeClass('focused');
				}
			});
		});
		
		$("a.active").live('hover', function () {
			$(this).animate({ opacity: 1 }, 200);
		}, function () {
			$(this).animate({ opacity: 0 }, 200);
		});
		
		$('a.internal').live('click', function (e) {
			if (OF.block) return;
			var rel = $(this).attr('rel'), step = parseInt(rel);
			if ((rel.indexOf('#xs') != -1) && xs == '')
			{
				OF.stepPending = step;
				$('.broker-modal-window').trigger('click');
				return;
			}
			
			if ((rel.indexOf('#premium') != -1) && (!premium && !paf) && (idn_qualified != 'Y'))
			{
				OF.stepPending = step;
				$(".premium-modal-window").trigger('click');
				return;
			}
			
			OF.loadStep(step);
		});
		
		$('input[name="word"]').live('keypress', function (e) {
			var code = (e.keyCode ? e.keyCode : e.which);
			if (OF.block || code != 13) return;
			$(this).parent().find('a:first').trigger('click');
		});
		
		$('a.submit').live('click', function (e) {
			if (OF.block) return;
			if ('step' + OF.step + 'Submit' in OF)
			{
				OF['step' + OF.step + 'Submit']();
			}
			else
			{
				var args = {};
				$('form[name="main"] *[name]').each(function () {
					args[$(this).attr('name')] = $(this).val();
				});
				OF.loadStep(OF.step, args);
			}
		});

		$('#input-select-all').live('change', function(){
			var chs = OF.rTable.find('input[type="checkbox"]:not(:disabled)');
			if ($(this).attr('checked') == 'checked')
			{
				chs.attr('checked', 'checked');
			}
			else
			{
				chs.removeAttr('checked');
			}
		});
		
		$('#span-select-all').live('click', function(){
			var chs = $('input[type="checkbox"]:not(:disabled)');
			if ($(this).html().indexOf('select none') != -1)
			{
				chs.removeAttr('checked');
				$(this).html('select all');
			}
			else
			{
				chs.attr('checked', 'checked');
				$(this).html('select none');
			}
		});
		
		$('#btn-remove-premium').live('click', this.removePremium);
		
		$('#btn-remove-paf').live('click', this.removePAF);

		this.d[this.step] = {};
		$('#content script[type="custom"]').each(function (){
			OF.addScript(this.text);
		});
		
		this.errorCheck();
		
		if ('step' + this.step + 'Init' in this)
		{
			this['step' + this.step + 'Init'](this.step);
		}
	},
	
	currencyInit : function (val)
	{
	    if (!currency_convert) return;
//	    $(".price-table td").css({padding: "0",border :0});
	    $.each ($('.price-value'), function (i,item) {		
		var val = $(item).val();	
		if ($(this).parents().eq(4).attr('id') == 'price-table-block') return;
		if ( !isNaN(val) && parseInt(val) !=0) {		
		    $(item).wrap ("<table class='currency-table'><tr class='currency-widget'><td></td><td class='price-field'></td></tr></table>");
		}
	    } );
//	    return;
	    $.each($(".currency-widget"), function(i,item){
		var el = $(item).children(".price-field");
		if (el.length == 1) {
		    el.html ($("#currency-symbols").html());
		    $(el).tipsy({html: true,classn:'tipsyc',gravity:$.fn.tipsy.autoWE,title: function(el) {					 
//			var val = $(this).parents().find(".currency-widget");
			var val = $(this).parent();
		    	if (!val || val.length ==0) return;
			val = val.contents().find(".price-value");
			if (!val || val.length ==0) return;
			var regexp = /\d/gi;
			val =val.html().match(regexp);
			if (!val || val.length ==0) return;	
			val=val.join("");
			if ( !isNaN (val) && parseInt (val)!=0 ) return OF.currencyUpdate (parseInt(val)); 
		    }																														});			
		}
	    });			
	},																												    	
	
	currencyUpdate : function (val)
	{
	    var c = Array ("USD","EUR","JPY","CAD","THB","GBP","MXN","AUD","MYR","ZAR","BRL","WST","HKD");
	    var cc = Array ("$","&euro;","&yen;","$","&#3647;","&pound;","$","$","RM","R","R$","WS$","$");
	    var currency_name = Array ("United States Dollar","Euro","Japanese Yen","Canadian Dollar","Thai Baht","Pound Sterling","Mexican Peso","Australian Dollar","Malaysian Ringgit","South African Rand","Brazilian Real","Samoa Tala","Hong Kong Dollar");
	    var names= $("#currency-title").html().split(";");
	    var table = "<div id='currency-tooltip'><table id='hor-zebra'><thead><tr><th>"+names[0]+"</th><th colspan='2'>"+names[1]+"</th><th>"+names[2]+"</th></tr></thead><tbody>";	
//		var table = "<div id='currency-tooltip'><table id='hor-zebra'><thead><tr><th>Currency</th><th>Code</th><th></th><th>Amount</th></tr></thead><tbody>";
	    for (var i=0;i<c.length;i++) {
		var classn="";
		if ( (parseFloat (i/2)- Math.round (i/2))==0 ) classn="odd";
		table+="<tr class='"+classn+"'><td>"+currency_name[i]+"</td><td>"+c[i]+"</td><td>"+cc[i]+"</td><td>"+currency_convert(val,"USD",c[i])+"</td></tr>";
	    }
	    table+="<tr><td align='right' colspan='4'><small> * "+$("#currency-hint").html()+"</small></td></tr></tbody></table></div>";
	    return table;
	},
		    						
        addScript: function (data)
        {
                var s = document.createElement('script');
                s.langauge      = 'javascript';
                s.type          = 'text/javascript';
    		s.text          = data;
                document.getElementsByTagName('HEAD')[0].appendChild(s);
        },
    
	errorCheck: function ()
	{
		var $w = $('.warning');
		try {
			for (i in errors)
			{
				$w.append('<p>' + errors[i].message + '</p>');
			}
			if (errors.length > 0)
			{
				$w.show();
			}
		}catch(e){}
	},
                                                                                                        	
	loadStep: function (n, inargs, quiet)
	{
		var c_1 = $('.content'), c_2 = $('#content'), args = { step: n };
		this.block = true;
		this.d[n] = {};
		c_1.css({ height: c_2.height() });
		c_2.fadeOut(function (){
			/*$('#pre_loading').show();*/
		});
		args = $.extend(args, inargs);
		if (this.step == 70)
		{
			$('#pre_loading').show();
		}
		$.post(this.submitURL, args, function (data) {
			$('#pre_loading').hide();
			c_2.html(data);
			c_2.find('script[type="custom"]').each(function (){
				OF.addScript(this.text);
			});
			c_2.fadeIn();
			c_1.css({ height: '' });
			OF.errorCheck();
			if ('step' + OF.step + 'Init' in OF)
			{
				OF['step' + OF.step + 'Init'](OF.step);
			}	
			OF.block = false;
			
			$('#pre_loading').hide();
			$('select').each(function (){
				if ($(this).attr('rel'))
				{
					$(this).val($(this).attr('rel'));
				}
			});
			
		});
	},
	
	
	/* TRANSLATION ROUTINE */
	cleanWord: function (w)
	{
		w =  w.replace((/[\s]*style\=\"[^\"]+\"[\s]*/ig), '').replace((/[\s]*\<\/p[\>]*/ig), '').replace((/[\<]*p\>[\s]*/ig), '').replace((/[\s]*[\,][\s]*/ig), '').replace((/[\s]*[\-][\s]*/ig), '').toLowerCase().replace(/[\~\!\@\#\$\^\&\*\(\)]/g, ''); /*"*/
		if (!this.tmpDIV)
		{
			this.tmpDIV = document.createElement('DIV');
		}
		this.tmpDIV.innerHTML = w;
		return this.tmpDIV.innerText || this.tmpDIV.textContent;
	},
	
	stopScrollAnimation: function ()
	{
	},
	
	startScrollAnimation: function ()
	{
	},
	
	translate: function (words, from, langs, id, callback)
	{
		OF.stopScrollAnimation();
		var str, parts = new Array (), c_1 = 0, c_2 = 0, c_2_time, result_a = [];
		this.originalLanguage = from;
		words = words.replace(/\n/g, ':').toLowerCase().split(':');
		
		var data = [];
		
		if ($.inArray('en', langs) == -1)
		{
			langs.push(langs[0]);
			langs[0] = 'en';
		}
		for (i in words)
		{
			if (words[i].length > 0)
			{
				for (j in langs)
				{
					if (langs[j] != from)
					{
						data.push({
							target: langs[j],
							val: words[i]
						});
					}
				}
			}
		}
		
		$.post('/translate.dhtml', { idn: 1, source: from, q: JSON.stringify(data)}, function (res){
			if (res.code != 'OK') return;
			for (i in words)
			{
				res.data.push({ translated: words[i], source: from, target: from });
			}
			for (i in res.data)
			{
				var t = res.data[i], w = t.translated.toLowerCase();
				w = OF.cleanWord(w).replace(/ /g, '');
				OF.translated[id].push(w);
				OF.translated_langs[id].push(t.target);
			}
			if (callback)
			{
				callback();
			}
		});
	},
	
	/* STEPS ROUTINE */
	updatePrice: function (amount)
	{
		var a = $('#total-amount-now span'), b = $('#total-amount-now-discount span');
		a.html((parseInt(a.html()) + amount));
		b.html((parseInt(b.html()) + amount));	
	},
	
	addPremium: function ()
	{
		premium = 1;
		$.post(OF.submitURL, { act: 'add_premium', json: 1 }, function (d) {
			if (OF.step == 40)
			{
				OF.step40ShowPremium(true);
				OF.updatePrice(premium_amount);
			}
		});
	},
	
	removePremium: function (e)
	{
		premium = 0;
		$.post(OF.submitURL, { act: 'remove_premium', json: 1 }, function (d) {
			if (OF.step == 40)
			{
				OF.step40ShowPremium(false);
				OF.updatePrice(-premium_amount);
			}
		});
	},
	
	addPAF: function ()
	{
		paf = 1;
		$.post(OF.submitURL, { act: 'add_paf', json: 1 }, function (d) {
			if (OF.step == 40)
			{
				OF.step40ShowPAF(true);
				OF.updatePrice(paf_amount);
			}
		});
	},
	
	removePAF: function (e)
	{
		paf = 0;
		$.post(OF.submitURL, { act: 'remove_paf', json: 1 }, function (d) {
			if (OF.step == 40)
			{
				OF.step40ShowPAF(false);
				OF.updatePrice(-paf_amount);
			}
		});
	},

	fixHeight: function ()
	{
		OF.tCounter = 0;
		if ($.browser.msie)
		{
			OF.tIntervalID = setInterval(function () {
				var nh = $('.content-info').height() + 40;
				if (nh < 800) nh = 800;
				$('.content').height(nh);
				$('.content').css({ backgroundColor: '#ffffff', 'border-radius': '0 0 6px 6px', 'paddingBottom': '40px'});
				OF.tCounter++;
				if (OF.tCounter == 5)
				{
					OF.tCounter = 0;
					clearInterval(OF.tIntervalID);
				}
			}, 500);
		}
	},

	checkDiscount: function ()
	{
		/*if (idn_qualified == 'Y' || premium == 1 || paf == 1)
		{
			$('#discount-block').show();
		}
		else
		{
			$('tr.total').show();
		}*/
	},
	
	frontPageSearch: function (langfrom, word)
	{
		if (word.length == 0 || word == 'Type a word')
		{
			return false;
		}
		this.step10Submit(langfrom, word, 'frontpage', true);
		return true;
	},

	isEmailValid: function (n)
	{
	        var p= /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
	        return p.test (n);
	},                
	
	newSponsor: function ()
	{
		var s = $('#sponsor_input').val();
		if (s.length > 2 && s.length < 30 && !(/[\.\.\.\;\&\!\@\$\%\^\*\(\)\|\~\`\+\/\\\[\]\{\}\?]/).test(s))
		{
			document.location = '/idn-orderflow/index.dhtml?sponsor=' + s;
		}
	},
	
	step10Init: function (n)
	{
		$('select[name="original_language"]').val((lang_detected != '') ? lang_detected : 'en');
	},
	
	step10Submit: function (langfrom, word, search_from, no_new)
	{
		if (this.block) return;
		var langsto = [], domains = [];
		if (!word)
		{
			word = $('input[name="word"]').val();
		}
		if (!langfrom)
		{
			langfrom = $('select[name="original_language"]').val();
		}
		if (!window.languages)
		{
			window.languages = $.translate.nativeLanguages;
		}
		for (i in window.languages)
		{
			langsto.push(i);
		}
		
		if (word.length == 0 || word == 'Start new search')
		{
			alert('Please type a word or phrase into the box');
			return;
		}
		
		this.block = true;
		$('.spinner').show();
		if (!search_from)
		{
			search_from = 'basic';
		}
		
		OF.stopScrollAnimation();
		var params = { domains: word, langs: langsto.join(','), lang_original: langfrom, act: 'pre_search', search_from: search_from, no_new: no_new };
		var ss = document.location.toString().match(/sponsor\=([^\&]+)/);
		if (ss && ss.length > 1)
		{
			params.sponsor = ss[1];
		}
		if (OF.step == 0)
		{
			var s = '';
			params.step = 30;
			for (i in params)
			{
				s += '<input type="hidden" name="' + i + '" value="' + params[i] + '" />';
			}
			$(document.body).append('<form method="POST" action="https://www.worldsite.' + ((document.location.toString().indexOf('.qa.ws') != -1) ? 'qa.' : '') + 'ws' + OF.submitURL + ((params.sponsor) ? '?sponsor=' + params.sponsor : '') + '" name="search">' + s + '</form>');
			$('form[name="search"]').submit();
		}
		else
		{
			this.loadStep(30, params);
		}
	},
	
	step20Init: function (n)
	{
		this.rTable = $('form[name="main"] table');
		$('select[name="original_language"]').val((lang_detected != '') ? lang_detected : 'en');
	},
		
	step20Submit: function (langfrom)
	{
		if (this.block) return;
		var langsto = [], words = $('textarea[name="words"]').val();
		if (!langfrom)
		{
			langfrom = $('select[name="original_language"]').val();
		}

		$('.spinner').show();
		$('ul input[type="checkbox"]:checked').each(function () {
			langsto.push($(this).val());
		});
		
		if (words.length == 0)
		{
			alert('Please enter words');
			return;
		}
		
		if (langsto.length == 0)
		{
			alert('Please select languages');
			return;
		}
		
		this.block = true;
		words = words.replace(/\n/g, ':').toLowerCase().split(':');
		this.loadStep(30, { domains: words.reverse().join(','), langs: langsto.reverse().join(','), lang_original: langfrom, act: 'pre_search', search_from: 'advanced' });
	},
	
	step30CheckStars: function (e)
	{
		var p = $(e).parent().parent(), img = p.find('td:eq(1) img:visible');
		if (img.length > 0)
		{
			var inp = $('.table-normal tr[name="' + p.attr('name') + '"] input');
			if ($(e).attr('checked') == 'checked')
			{
				inp.attr('checked', 'checked');
			}
			else
			{
				inp.removeAttr('checked');
			}
		}
	},
	
	step30FillResults: function (data)
	{
		if (this.rTable.find('tr[id="' + data.id + '"]').length > 0) return;
		for (j in data.domains)
		{
			var s = data.domains[j];
			if (!window.languages[s.lang]) continue;
			var tr = '<tr class="w" style="display: none" price="' + s.amount_now + '" id="' + data.id + '" punycode="' + s.punycode + '" available="' + s.available + '" lang="' + s.lang +'" name="' + s.name + '"><td class="table-domain-available">';
			tr += (s.available == 1) ? ('<input type="checkbox" onclick="OF.step30CheckStars(this)" checked="checked" /><td class="table-domain-name"><span>' + s.name + '</span><img src="images/ico-deal-blue-s.png" style="display: none" alt="" width="17" height="17" class="icon icon-0" /><img src="images/ico-deal-red-s.png" style="display: none" alt="" width="17" height="17" class="icon icon-1" /><img src="images/ico-deal-green-s.png" style="display: none" alt="" width="17" height="17" class="icon icon-2" /></td>') : '<input type="checkbox" disabled="disabled" /></td><td class="table-domain-name unavailable"><span>' + s.name + '</span></td>'
			tr += '<td>' + window.languages[s.lang] + '</td><td class="table-domain-punycode">' + s.punycode +'</td><td class="table-amount_now">';
			tr += (s.available == 1) ? '<strong>$' + s.amount_now + '</strong>' : '&nbsp;';
			/*tr += '</td><td class="table-price-renew">' + ((s.available == 1) ? '<strong>$' + s.amount_now + '</strong>' : '&nbsp;');*/
			this.rTable.append(tr + '</td></tr>');
		}
		
		OF.fixHeight();
		OF.block = false;
	},
	
	getSearchItemData: function (id)
	{
		for (i in this.d[OF.step].search_domains)
		{
			if (this.d[OF.step].search_domains[i].id == id)
			{
				return this.d[OF.step].search_domains[i];
			}
		}
	},
	
	step30CheckCart: function (e)
	{
		/*console.log(OF.d[30].cart_domains);*/
		if (OF.d[30].cart_domains && OF.d[30].cart_domains.length > 0 && !$(e).hasClass('internal'))
		{
			$(e).addClass('internal').trigger('click').removeClass('internal');
		}
	},
	
	step30Init: function (n)
	{
		this.fixHeight();
		window.premiumAddAction = null;
		this.rTable = $('.table-results table');
		this.wSelector = $('.word-selector');

		$('select[name="original_language"]').val((lang_detected != '') ? lang_detected : 'en');
		
		OF.block = false;
		
		if ($.browser.msie)
		{
			$('.spinner').css({ marginLeft: '-40px' });
		}
		
		for (i in this.d[n].search_domains)
		{
			var s = this.d[n].search_domains[i];
			this.wSelector.prepend('<li id="' + s.id + '">' + s.code + '</li>');
		}
		
		if (this.wSelector.find('li').length == 0 && !debug)
		{
			this.loadStep(10);
			return;
		}		
		
		this.wSelector.find('li').click(function (){
			if (OF.block_li) return;
			var t1 = $(this).attr('time'), t2 = new Date().getTime();
			if (!t1) t1 = 0;
			
			if (t2 - t1 < 5000)
			{
				return;
			}
			
			$(this).attr('time', t2);
			
			$('.spinner').show();
			OF.wSelector.find('li').removeClass('act');
			$(this).addClass('act');
			var data = OF.getSearchItemData($(this).attr('id'));
			data.domain = $(this).html();
			$('#original-language strong').html(window.languages[data.lang_original]);
			$('#original-language').attr('data', data.lang_original);
			$('#original-term strong').html(data.domain);
			if (OF.rTable.find('tr[id="' + data.id + '"]').length > 0)
			{
				// Just show
				$('.spinner').hide();
				OF.step30TableFilter(data.id);
			}
			else
			{
				OF.block_li = true;
				// Translate and load
				OF.translated[data.id] = [];
				OF.translated_langs[data.id] = [];
				OF.translate (data.domain, data.lang_original, data.lang, data.id, function () {
					$.post(OF.submitURL, { act: 'search', id: data.id, domains: OF.translated[data.id].join(',').replace(/\'/, ''), langs: OF.translated_langs[data.id].join(','), step: 30, json: 1 }, function (d){ /*'*/
						if (!d) return;
						$('.spinner').hide();
	    					OF.step30FillResults(d);
						OF.step30TableFilter(data.id);
						OF.block_li = false;
					});
				});
			}
		});
		
		$('#btn-step30-small-search').click(function () {
			if (OF.block) return;
	    		$('.spinner').show();
			OF.step10Submit($('select[name="original_language"]').val(), null, 'results', true);
		});
		
		this.wSelector.find('li:first').trigger('click');
		
		$('.price-tip').tipsy({ gravity: 's' });
		
		$(".notify-modal-window").colorbox({ transition:"none", width:"460px", inline:true, href:"#notify-modal", onOpen: function(){$('#notify-modal input').val('') } });
		
		$('#btn-notify').click(function () {
			var e1 = $('#notify\-modal input[name="email1"]').val(), e2 = $('#notify\-modal input[name="email2"]').val();
			if (e1.length != 0 && e1 == e2 && OF.isEmailValid(e1))
			{
				$.colorbox.close();
				$.getJSON(OF.submitURL, { email: e1, act: 'save_email', json: 1 });
			}
		});
	},
	
	step30TableFilter: function (id)
	{
		var term = [], lang = '', data = OF.getSearchItemData(id);
		this.rTable.find('tr[class="w"]').hide();
		this.wSelector.find('li.act').each(function (){
			var greatDeal = {}, tr = OF.rTable.find('tr[id="' + id + '"]');
			tr.show();
			tr.each(function () {
				var name = $(this).attr('name');
				if ($(this).attr('available') == 1)
				{
					if (!greatDeal[name])
					{
						greatDeal[name] = 0;
					}
					greatDeal[name]++;
				}	
			});

			var gda = [], cnt = 0;
			for (i in greatDeal)
			{
				gda.push({ name: i, count: greatDeal[i]});
			}
		
			gda = gda.sort(function (a, b){
				return b.count - a.count;
			});
		
			$('.deal-notice').hide();
			$('.icon').hide();
		
			for (i in gda)
			{
				var langs = [], tr = OF.rTable.find('tr[name="' + gda[i].name +'"]'), deal = $('.deal-notice-' + i);
				tr.each(function (){
					langs.push(window.languages[$(this).attr('lang')]);
				});
				if (tr.length > 1)
				{
					tr.find('img.icon-' + i).show();
					deal.find('span.count').html(tr.length);
					deal.find('span.languages').html(langs.join(', '));
					deal.show().css({ display: 'table' });
				}
				if (i == 2) break;
			}
		});
		
		for (i in OF.d[30].cart_domains)
		{
			var d = OF.d[30].cart_domains[i], k;
			if (d.punycode == '')
			{
				k = $('.table-normal tr[name="' + d.name + '"] input');
			}
			else
			{
				k = $('.table-normal tr[punycode="' + d.punycode + '"] input')
			}
			k.removeAttr('checked').attr('disabled', 'disabled');
		}
	},
	
	step30Submit: function ()
	{
		if (OF.block) return;
		var domains = [], langs = [], punycodes = [], word = this.wSelector.find('li.act').html(), en_word = '', lang_from = $('#original-language').attr('data'), cd_length = (OF.d[30].cart_domains) ? OF.d[30].cart_domains.length : 0;
		this.rTable.find('tr[class="w"]:visible input:checked').each(function (){
			var tr = $(this).parent().parent();
			domains.push(tr.attr('name'));
			langs.push(tr.attr('lang'));
			punycodes.push(tr.attr('punycode'));
		});
		
		this.rTable.find('tr[class="w"]:visible input').each(function (){
			var tr = $(this).parent().parent();
			if (tr.attr('lang') == 'en')
			{
				en_word = tr.attr('name').replace('.ws', '');
			}
		});
		
		if (en_word == '')
		{
			en_word = word;
		}
		
		if (domains.length == 0)
		{
			alert('Please select domains to add');
			return;
		}
		
		$.post('/idn-orderflow/index.dhtml', { step: this.step, act: 'add2', domains: domains.join(','), langs: langs.join(','), punycodes: punycodes.join(','), word: word, en_word: en_word, lang_from: lang_from, json: 1, jqrequest: 1 }, function (data) {
			OF.block = true;
			var s = $('.shopping-cart p'), n = data.length, text = n + ' domain' + ((n==1) ? '' : 's') + ' in cart', dm = $('#domains-message'), nl_length = data.length - cd_length, dmText = nl_length + ' ' + ((nl_length == 1) ? 'domain was' : 'domains were') + ' added to cart';
			OF.d[30].cart_domains = data;
			if (n == 0)
			{
				s.html(text);
			}
			else
			{
				s.html('<a rel="40" class="internal" href="#">' + text + '</a>');
			}
			OF.rTable.find('tr[class="w"]:visible input:checked').removeAttr('checked').attr('disabled', 'disabled');
			OF.block = false;
			
			dm.find('p').html(dmText);
			dm.hide().fadeIn();
			setTimeout(function (){
				dm.fadeOut();
			}, 10000);
		});
		//this.loadStep(this.step, { act: 'add', domains: domains.join(','), langs: langs.join(','), punycodes: punycodes.join(','), word: word, en_word: en_word, lang_from: lang_from });
	},
	
	step40Init: function (n)
	{
		$('#price-table-block').hide();
		this.fixHeight();
		this.rTable = $('.table-cart table');

		this.step40ShowPremium(premium);
		this.step40ShowPAF(paf);
		
		for (i in this.d[n].cart_domains)
		{			
			var s = this.d[n].cart_domains[i];
			if (s.punycode == '')
			{
				s.punycode = 'n/a';
			}
			$('<tr class="w_' + i + '" name="' + s.name + '" punycode="' + s.punycode + '"><td class="table-domain-available"><input type="checkbox" checked="checked"/></td><td>' + s.word + '</td><td class="table-domain-name"><span>' + s.name + '</span></td><td>' + window.languages[s.lang] + '</td><td class="table-domain-punycode">' + s.punycode +'</td><td class="table-amount_now"><strong>$' + s.amount_now + '</strong></td></tr>').insertBefore(this.rTable.find('tr.last'));
		}
		
		var dl = this.d[n].cart_domains.length;
		
		if (dl > 0)
		{
			var rl = 2;
			if (dl >= 2) rl = 10;
			if (dl >= 10) rl = 50;
			if (dl >= 50) rl = 250;
			if (dl < 250)
			{
				$('#next_level_need').html((rl - dl));
				$('#next_level').show();				
				$('#price-table-block .currency').remove();
				$('#next_level a:first').tipsy({ html: true, gravity: 's', classn:'tipsyc', title: function(){
					return $('#price-table-block').html();
				}});
			}
		}
		this.checkDiscount();
		this.fixHeight();
	},
		
	step40Submit: function ()
	{
		var domains = [], punycodes = [];
		this.rTable.find('tr[class^="w_"] input:not(:checked)').each(function (){
			var tr = $(this).parent().parent();
			domains.push(tr.attr('name'));
			punycodes.push(tr.attr('punycode'));
		});
		if (domains.length == 0)
		{
			return;
		}
		
		this.loadStep(this.step, { act: 'update', domains_to_delete: domains.join(','), punycodes: punycodes.join(',') });
	},
	
	step40ShowPremium: function (f)
	{
		var b = $('#cart-premium-block');
		if (f)
		{
			b.show();
		}
		else
		{
			b.hide();
		}
	},
	
	step40ShowPAF: function (f)
	{
		var b = $('#cart-paf-block');	
		if (f)
		{
			b.show();
		}
		else
		{
			b.hide();
		}
	},
	
	step45Init: function (n)
	{
		this.fixHeight();
		$('input[name="ind_bus"]').click(function (){
			var c = $('input[name="company"]');
			if (this.value == 'ind')
			{
				c.attr('disabled', 'disabled');
			}
			else
			{
				c.removeAttr('disabled');
			}
		});
	},
	
	step45Submit: function ()
	{
		var un	= $("input[name='username']").val().toLowerCase(),
		    ps1 = $("input[name='password']").val(),
		    ps2	= $("input[name='password_confirm']").val(),
		    sl	= $("select[name='salutation']").val(),
		    fn 	= $("input[name='firstname']").val(),
		    ln 	= $("input[name='lastname']").val(),
		    sq1 = $("select[name='security_type']").val(),
		    sq2 = $("select[name='security_type2']").val(),
		    sa1 = $("input[name='security']").val(),
		    sa2 = $("input[name='security2']").val(),
		    e1 	= $("input[name='email']").val(),
		    e2 	= $("input[name='email_confirm']").val(),
		    p1 	= $("input[name='phone']").val(),
		    pe1 = $("input[name='phone_ext']").val(),
		    p2 	= $("input[name='phone2']").val(),
		    pe2 = $("input[name='phone2_ext']").val(),
		    a1 	= $("input[name='address1']").val(),
		    a2	= $("input[name='address2']").val(),
		    cy 	= $("input[name='city']").val(),
		    st 	= $("input[name='state']").val(),
		    zp 	= $("input[name='zip']").val(),
		    pt1 = $("select[name='phone_type']").val(),
		    pt2 = $("select[name='phone2_type']").val(),
		    cn 	= $("select[name='country']"),
		    cny = $("input[name='company']"),
		    ag 	= $("input[name='agegood']:checked").val(),
		    ck	= new RegExp(/[\.\.\.\;\&\!\@\$\%\^\*\(\)\|\~\`\+\/\\\[\]\{\}\?]/),
		    ckp = new RegExp(/[^\s\d\.\-\(\)]/),
		    cke = new RegExp(/[0-9a-z]/);

		$('.error, .err_small').hide();
		
		if (un.length == 0 || un.length < 3 || un.length > 30 || ck.test(un))
		{
			this.errorMessage('Username invalid', 'username');
		}

		if (ps1.length == 0 || ps1.length < 6)
		{
			this.errorMessage('Password invalid', 'password');
		}
		else if (ps1 != ps2)
		{
			this.errorMessage('Passwords do not match', 'password');		
		}
		
		if (sl == 0)
		{
			this.errorMessage('Salutation invalid', 'salutation');
		}
		
		if (fn.length == 0 || ck.test(fn))
		{
			this.errorMessage('First name invalid', 'firstname');
		}

		if (ln.length == 0 || ck.test(ln))
		{
			this.errorMessage('Last name invalid', 'lastname');
		}

		if(!(/^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/).test(e1))
		{
			this.errorMessage('Email invalid', 'email');
		}
		else if (e1.length == 0 || e1 != e2)
		{
			this.errorMessage('Emails do not match', 'email');		
		}
		
		if (a1.length == 0)
		{
			this.errorMessage('Address invalid', 'address1');
		}
		
		if (cy.length == 0)
		{
			this.errorMessage('City invalid', 'city');
		}
		
		if (cn.val() == 'US' && st.length != 2)
		{
			this.errorMessage('State invalid', 'state');		
		}
		
		if (zp.length == 0)
		{
			this.errorMessage('Zip/Postal code invalid', 'zip');
		}
		else if (cn.val() == 'US' && zp.length < 5)
		{
			this.errorMessage('Zip/Postal code invalid', 'zip');
		}
		
		if (p1.length == 0 || ckp.test(p1) || (p1.length < 9 && cn == 'US') || (pe1.length > 0 && pe1 != 'Ext.' && !cke.test(pe1)))
		{
			this.errorMessage('Primary phone invalid', 'phone');
		}

		if ((p2.length == 0) && (ckp.test(p2) || (pe2.length > 0 && pe2 != 'Ext.' && !cke.test(pe2))))
		{
			this.errorMessage('Secondary phone invalid', 'phone2');
		}
		
		if (!cny.attr('disabled') && cny.val().length == 0)
		{
			this.errorMessage('Company name invalid', 'company');
		}
		
		if (sa1.length == 0)
		{
			this.errorMessage('Security answer1 invalid', 'security');
		}
		
		if (sa2.length == 0 || sq1 == sq2)
		{
			this.errorMessage('Security answer2 invalid', 'security2');
		}
		
		if (!ag)
		{
			this.errorMessage('You must agree with terms of use', 'confirmation');
		}
		
		if ($('.err_small:visible').length > 0)
		{
			return;
		}
		
		this.loadStep(this.step, {
			act:			'save',
			username:		un,
			firstname:		fn,
			lastname:		ln,
			salutation:		sl,
			password:		ps1,
			password_confirm:	ps2,
			security_type:		sq1,
			security_type2:		sq2,
			security:		sa1,
			security2:		sa2,
			email:			e1,
			email_confirm:		e2,
			phone:			p1,
			phone_ext:		pe1.replace('Ext.', ''),
			phone_type:		pt1,
			phone2:			p2,
			phone2_ext:		pe2.replace('Ext.', ''),
			phone2_type:		pt2,
			ccaddr:			a1,
			ccaddr2:		a2,
			city:			cy,
			ccstate:		st,
			cczip:			zp,
			country:		cn.val(),
			confirmation:		'Y',
			company:		cny.val() 
		});	
	},
	errorMessage: function (msg, name)
	{
		$('.err_small[rel="' + name + '"]').html(msg).show();	
	},
	
	step50Init: function (n)
	{
		this.fixHeight();
		this.rTable = $('.table-cart table');
		
		for (i in this.d[n].cart_domains)
		{			
			var s = this.d[n].cart_domains[i];
			if (s.punycode == '')
			{
				s.punycode = 'n/a';
			}
			$('<tr class="w_' + i + '"><td>' + s.word + '</td><td class="table-domain-name"><span>' + s.name + '</span></td><td>' + window.languages[s.lang] + '</td><td class="table-domain-punycode">' + s.punycode +'</td><td class="table-amount_now">' + s.amount_now + '</td></tr>').insertBefore(this.rTable.find('tr.last'));
		}
	},

	step70Init: function (n)
	{
		this.fixHeight();
	},
	
	showHelpTerms: function ()
	{
		$('.help-modal-window').trigger('click');
	},
	
	checkConfirmation: function (f)
	{
		var e = $('.err_small[rel="confirmation"]'), b = $('.cus-submit');
		if ($('input[name*="confirmation"]').length != $('input[name*="confirmation"]:checked').length)
		{
			if (!f)
			{
		    	        e.html('You must agree with Terms of use').show();
		        }
		        b.removeClass('submit');
		        if (!b.hasClass('disabled'))
		        {
			        b.addClass('disabled');
			}
		        return false;
		}
		b.removeClass('disabled');
		b = $('.cc');
		if (!b.hasClass('submit'))
		{
			b.addClass('submit');
		}
		e.hide();
		return true;
	},
	
	step120Init: function (n)
	{
		this.fixHeight();
		this.rTable = $('.table-cart .table-normal');
		
		this.step40ShowPremium(premium);
		this.step40ShowPAF(paf);

		var amount_item = this.d[n].amount_item;
		
		for (i in this.d[n].cart_domains)
		{			
			var s = this.d[n].cart_domains[i];
			/*console.log(s.name);*/
			if (s.punycode == '')
			{
				s.punycode = 'n/a';
			}
			else
			{
				s.name = s.name_original;
			}
			$('<tr class="w_' + i + '" name="' + s.name + '" punycode="' + s.punycode + '"><td>' + s.name + '</td><td>' + window.languages[s.lang] + '</td><td class="table-domain-punycode">' + s.punycode +'</td><td class="table-amount_now"><span style="text-decoration:line-through;">' + ((this.d[n].cart_domains.length > 1) ? '<strong>$' + s.amount_now + '</strong></span>&nbsp;&nbsp;' : '') + '<strong>$' + amount_item + '</strong></td></tr>').insertBefore(this.rTable.find('tr.last'));
		}
		
		this.checkDiscount();
		premium = false;
		paf = false;
		xs = '';
		$.get('/idn-orderflow/index.dhtml', { act: 'twt', value: $.cookie('TWT') });
		$.cookie('TWT', null);
	},
}
