// do kasy

bizplace.orderCheckout = function() {
//	bizplace.JSON({
//		// zalogowany uzytkownik
//		clientdata: {action: 'clientdataget'}
//	}, function(data) {
//		if (typeof data.clientdata == 'object')
//			bizplace.orderUserRefresh(data.clientdata);
		bizplace.goTo([
		          bizplace.tree[bizplace.groupIndex].link,
		          'platnosc'
	    ]);
//	});
}

// obsluga zmiany ekranu po zalogowaniu usera
bizplace.orderUserRefresh = function(clientdata) {
	if (typeof clientdata == 'object') {
		J('#clientdata_gender').html(clientdata.gender == 'M' ? 'Pan' : (clientdata.gender == 'F' ? 'Pani' : ''));
		J('#clientdata_first_name').html(clientdata.first_name);
		J('#clientdata_last_name').html(clientdata.last_name);
		J('#clientdata_email').html(clientdata.email);
		if (clientdata.account_list && clientdata.account_list.length > 0) {
			for (var i = 0; i < clientdata.account_list.length; i++) {
				J('#clientdata_account').html(clientdata.account_list[i].name);
				J('#accountNumber').html(clientdata.account_list[i].bizplace_bank_account);
			}
		}
		J('#loginForm').parent('fieldset').hide();
		J('#registerForm').parent('fieldset').hide();
		J('#clientData').parent('fieldset').show();
	} else {
		J('#loginForm').parent('fieldset').show();
		J('#registerForm').parent('fieldset').show();
		J('#clientData').parent('fieldset').hide();
	}
}

// zapytanie o domeny
bizplace.queryDomains = function(planID, query, callback) {
	bizplace.JSON({domains: {action: 'checkdomains', series_key: planID, domain_name: query, tld: 'pl'}}, function(data) {
		if (typeof(callback) == 'function')
			callback(data.domains);
	});
}

//wyswietlenie domen
bizplace.displayDomains = function(queryInput, content, options){
	if (!options)
		options = {type: 'domains', preconfigured: false};
	J('.searchDomain > div').addClass('loadingDomains');
//	var tmp = queryInput.id.match(/^plan-id-search-(\d+)$/);
	var planID = J(queryInput).attr('bizplaceplan');
	bizplace.queryDomains(planID, queryInput.value, function(data) {
		var domains = {
			list: data
		}
		J('.searchDomain > div').removeClass('loadingDomains');
		content.find('.searchResults').html('');
		$p.renderTemplate(
				'<span class="caption">Znaleziono domeny:</span>' +
				'<table cellpadding="0" cellspacing="0" class="domainsFound">' +
				'<tbody>' +
				'<tr><td class="icon"><span class="available"></span></td><td class="name"></td><td class="price"></td><td class="button"></td></tr>' +
				'<tr class="config"><td colspan="4"><form action="#" metod="GET">' +
				'<p>Jak chcesz skonfigurować tą domenę?</p>' +
				'<p><label><input type="radio" name="domain-config" value="subscription" checked="checked" /> użyj do hostingu</label><label><input type="radio" name="domain-config" value="setupdns" /> ustaw własne DNS</label><label><input type="radio" name="domain-config" value="skip" /> pomiń konfigurację</label></p>' +
				'<span class="arrow"></span>' +
				'<ul>' +
				'<li class="domain-config-subscription"><p>Wybierz hosting: <select name="domain-subscribtion"><option value="">brak hostingu</option><optgroup label="W koszyku" class="cart"></optgroup><optgroup label="Już posiadany" class="existing"></optgroup></select></p></li>' +
				'<li class="domain-config-setupdns"><p>Podaj adresy serwerów DNS:</p><p>DNS 1: <input type="text" name="domain-ns1" /></p><p>DNS 2: <input type="text" type="text" name="domain-ns2" /></p></li>' +
				'<li class="domain-config-skip"></li>' +
				'</ul>' +
				'<p><a href="#" class="button-mini button-dark button-accept ok">OK</a><a href="#" class="button-mini button-light cancel">Anuluj</a></p>' +
				'</form></td></tr>' +
				'</tbody>' +
				'</table>',
			content.find('.searchResults'), domains, {
				'tbody': {
					'domain <- list': {
						'tr:not(.config)@class+' : function(arg){ 
							if(arg.item.is_free){
								return 'freeDomain';
							}
							else{
								return '';
							}
						},
						'td.button'				: function(arg){
							var html = ''; 
							switch (arg.item.status) {
								case 'available':
									html += '<a href="#" id="plan-id-' + arg.item.action + '-' + arg.item.plan_id + '" class="button-mini button-dark button-plus add" bizplacedomain="' + arg.item.name +  '" bizplaceplan="' + arg.item.plan_id +  '">Zamów</a>';
									break;
								case 'transferable':
								case 'unavailable':
									html += '<a href="#" id="plan-id-redirect-' + arg.item.plan_id + '" class="button-mini button-light redirect" bizplacedomain="' + arg.item.name +  '" bizplaceplan="' + arg.item.plan_id +  '">Przekieruj</a>';
									if (arg.item.status == 'transferable')
										html += '<a href="#" id="plan-id-transfer-' + arg.item.plan_id + '" class="button-mini button-dark transfer" bizplacedomain="' + arg.item.name +  '" bizplaceplan="' + arg.item.plan_id +  '">Transfer</a>';
									break;
							}
							return html;
						},
						'td.name'				: 'domain.name',
						'td.price'				: function(arg) {
								if (arg.item.status != 'available') 
									return (arg.item.transfer_fee != null ? arg.item.transfer_fee : 0) + ' ' + bizplace.config.currency.iso_alfa;
								else {
									var html = '';
									if (arg.item.fee_list) {
										if (arg.item.is_free) {
											html += 'GRATIS!';
										}
										else {
											for (var j = 0; j < arg.item.fee_list.length; j++) {
												switch (arg.item.status) {
													case 'available':
														html += arg.item.fee_list[j].registration_fee + ' ' + bizplace.config.currency.iso_alfa;
														html += '<span>/' + arg.item.fee_list[j].period + ' rok</span>';
														break;
												}
												break;
											}
										}
									}
									// zwroc html
									return html;
								}	
							},
						'span.available@class'	: function(arg) {
							if(arg.item.status != 'available')
								return 'unavailable';
							else 
								return 'available';
						},
						'@class'				: function(arg) {
							if(arg.item.status != 'available')
								return 'inactive';
							else 
								return '';
						},
						'a.ok@bizplaceplan'			: 'domain.plan_id',
						'a.ok@bizplacedomain'		: 'domain.name'
					}
				}
				
		});
		// handlery od przyciskow dodaj/transferuj/przekieruj domene
		content.find('.searchResults a.add, .searchResults a.transfer, .searchResults a.redirect').bind('click', {planID: planID}, function(event) {
			event.preventDefault();
			// pobierz ID planu i akcje
			var tmp = event.target.id.match(/^plan-id-(register|transfer|dnshosting|redirect)-(\d+)$/);
			// ukryj rozwiniete konfigi
			J('tr.config').hide();
			// znajdz plan
			var plan = bizplace.plans[event.data.planID];
			// plan prekonfigurowany - dodaj do koszyka
			if (plan.domainconfig && plan.domainconfig.preconfigured) {
				var config = plan.domainconfig.config;
				config.subscription = 'cart-' + event.data.planID;
				var domainoptions = {
						type	: options.type,
						action	: tmp[1],
						domain	: J(this).attr('bizplacedomain'),
						config	: config
				}
				if (typeof(bizplace.cartAdd) == 'function') {
					bizplace.cartAdd(this, J(this).attr('bizplaceplan'), domainoptions, '', function() {
						J('tr.config').hide();
					});
				}
			// domena do konfiguracji - znajdz i pokaz konfigurator
			} else {
				// uaktualnij liste hostingow
				var select = J(this).parents('tbody').children('tr.config').find('select[name=domain-subscribtion]');
				// z koszyka
				if (bizplace.cart && bizplace.cart.items) {
					var optgroup = select.children('optgroup.cart').html('').addClass('hidden');
					for (var item in bizplace.cart.items) {
						optgroup.append('<option value="cart-' + bizplace.cart.items[item].id + '">' + bizplace.cart.items[item].name + '</option>');
						optgroup.removeClass('hidden');
					}
				}
				// posiadane
				if (1) {
					var optgroup = select.children('optgroup.existing').html('').addClass('hidden');
				}
				// pokaz
				J(this).parents('tbody').children('tr.config').show().find('a.ok').attr('bizplaceaction', tmp[1]);
			}
			return false;
		});
		// handlery od opcji konfiguracji
		content.find('tr.config input:radio[name=domain-config]').click(function(event) {
			J(this).parents('form').find('li').hide().filter('.domain-config-' + this.value).show();
		});
		// handlery od przycisku OK w configu
		content.find('tr.config a.ok').click(function(event) {
			event.preventDefault();
			var form = J(this).parents('form');
			var config = {mode: J(form).find('input:radio[name=domain-config]:checked').val()};
			switch (config.mode) {
				case 'subscription':
					config.subscription = J(form).find('select[name=domain-subscribtion]').val();
					break;
				case 'setupdns':
					config.ns1 = J(form).find('input[name=domain-ns1]').val();
					config.ns2 = J(form).find('input[name=domain-ns2]').val();
					break;
				case 'skip':
					break;
			}
			var domainoptions = {
					type	: options.type,
					action	: J(this).attr('bizplaceaction'),
					domain	: J(this).attr('bizplacedomain'),
					config	: config
			}
			if (typeof(bizplace.cartAdd) == 'function') {
				bizplace.cartAdd(this, J(this).attr('bizplaceplan'), domainoptions, '', function() {
					J('tr.config').hide();
				});
			}
			//J('tr.config').hide();
			return false;
		});
		// handlery od przycisku Anuluj w configu
		content.find('tr.config a.cancel').click(function(event) {
			event.preventDefault();
			J('tr.config').hide();
			return false;
		});
	});
}

// logowanie
function orderUnBinds(){
	J('#registerForm input').unbind('keydown blur keyup focus');
	J('#registerMe, .radioLike, #loginContinue, legend, #logoutMe, #loginMe, .payment-process').unbind('click');
}

function orderBinds(){
	/*
	J('#loginMe').click(function(event) {
		event.preventDefault();
		var formdata = new Array();
		J('#loginForm input:visible').each(function(){
			formdata[J(this).attr('name')] = J(this).val();
		});
		
		bizplace.JSON({clientlogin : {action: 'clientlogin', data: formdata}}, function(data) {
//			if ((data.clientlogin.status) == 'ok') {
//			}
		});
	});


*/



	var speed = 200;
	var biznesSpeed = 300;
	
/********************* STARTOWE FUNKCJE OD REJESTRACJI **********************/					
	
	J('#registerForm input[name^="phone"], #registerForm input[name^="fax"]').bind('keydown', function(event){
		if (event.keyCode) {
			if (event.keyCode >= 48 && event.keyCode <= 57) // cyfry
				return true;
			if (event.keyCode >= 96 && event.keyCode <= 105) // cyfry numpad
				return true;
			if (event.keyCode >= 33 && event.keyCode <= 40) // pgup, pgdown, home, end, strzalki
				return true;
			if (event.keyCode >= 112 && event.keyCode <= 123) // F-y
				return true;
			if (event.keyCode == 8 || event.keyCode == 45 || event.keyCode == 46 || event.keyCode == 9) // backspace, insert, delete, tab
				return true;
			if (event.ctrlKey) // Ctrl+cos
				return true;
		}
		return false;
	}).bind('blur keyup', function() {
		only_cipher(this);
	});
	
	J('#registerForm input[type="text"], #registerForm input[type="password"]').blur(function(){
		var inputs = {};
		var clientregister = {};
		
		if(J(this).attr('name') == 'password')
			inputs['password_confirm'] = J('#registerForm input[name="password_confirm"]').val();
		if(J(this).attr('name') == 'password_confirm')
			inputs['password'] = J('#registerForm input[name="password"]').val();
		
		inputs[J(this).attr('name')] = J(this).val();
		
		var dis = this;//save this element
		
		bizplace.JSON({clientregister : {action: 'clientregister', data: inputs}}, function(data) {
			if ((data.clientregister.status) == 'ok') {
				J(dis).parent().removeClass('error').addClass('correct');
//				J(dis).parent().children('span').remove();
			} else {
				if (data.clientregister.data[J(dis).attr('name')] != undefined) {
					J(dis).next().stop(false,true).end().parent().removeClass('correct').addClass('error').end().next().html('<span></span>' + data.clientregister.data[J(dis).attr('name')]).fadeIn(speed);
				} else {
					J(dis).parent().removeClass('error').addClass('correct');
				}
			}
		});
	}).keydown(function(event){
		if (event.keyCode != 9) {
			J(this).next().stop(false,true).fadeOut(speed, function(){
				J(this).parent().removeClass('error');
			});
		}
	});
	J('#registerForm input[name="regulamin"]').click(function(){
		J(this).next().stop(false,true).fadeOut(speed, function(){
			J(this).parent().removeClass('error');
		});
	});
	J('.radioLike').click(function(){
		J('.radioLike span').toggleClass('selected');
		if (J('#biznes').children('span').is('.selected')) 
			J('.biznes').slideDown(biznesSpeed,function(){
//				resizeMenu(content);
			});
		else {
			J('.biznes').slideUp(biznesSpeed,function(){
//				resizeMenu(content);
			}).find('input').val('');
		}
	});
	
	J('#registerMe').click(function(event){
		event.preventDefault();
		var inputs = new Object();
		var clientregister = {};
		
		J('#registerForm input:visible').not(':checkbox').each(function(){
			inputs[J(this).attr('name')] = J(this).val();
		});
		inputs['regulamin'] = (J('#registerForm input[name="regulamin"]:checkbox').is(':checked')? true : false);
		inputs['gender'] = J('select[name="gender"]').val();
		inputs['country'] = J('select[name="country"]').val();
		
		bizplace.JSON({clientregister : {action: 'clientregister', data: inputs}}, function(data) {
			if ((data.clientregister.status) == 'ok') 
				bizplace.orderCheckout();
			else {
				if (data.clientregister.data.register_error) {
					J('#email').next().stop(false, true).end().parent().removeClass('correct').addClass('error').end().next().html('<span></span>' + data.clientregister.data.register_error).fadeIn(speed);
				}
				else {
					var x;
					for (x in data.clientregister.data) {
						J('input[name="' + x + '"]').next().stop(false, true).end().parent().removeClass('correct').addClass('error').end().next().html('<span></span>' + data.clientregister.data[x]).fadeIn(speed);
					}
				}
			}
		});
	});
	
	J('#email, #haslo').keyup(function() {
		mod_streng_strip(passwordStrength(J('#haslo').val(),J('#email').val()));
	});
	
	J('#haslo').focus(function(){
		J('#passStreng').fadeIn(speed);
	}).blur(function(){
		J('#passStreng').fadeOut(speed);
	})
	
	if (J('#haslo').length > 0 && J('#email').length > 0)
		mod_streng_strip(passwordStrength(J('#haslo').val(),J('#email').val())); /* after page load */
	J('legend').click(function(){
		bizplace.fieldsetOpen(J(this).parent());
	});
	
/********************* /STARTOWE FUNKCJE OD REJESTRACJI **********************/					

	
/********************* STARTOWE FUNKCJE OD LOGOWANIA **********************/					
	
	J('#loginForm input[type="text"], #loginForm input[type="password"]').blur(function(){
		var inputs = new Object();
		var clientlogin = {};
		
		inputs[J(this).attr('name')] = J(this).val();
		
		var dis = this;//save this element
		
		bizplace.JSON({clientlogin : {action: 'clientlogin', data: inputs}}, function(data) {
			if ((data.clientlogin.status) == 'ok')
				J(dis).parent().removeClass('error').addClass('correct');
			else {
				J(dis).next().stop(false,true).end().parent().removeClass('correct').addClass('error').end().next().html('<span></span>' + data.clientlogin.data[J(dis).attr('name')]).fadeIn(speed);
			}
		});
	}).keydown(function(event){
		if (event.keyCode != 9) {
			J(this).next().stop(false,true).fadeOut(speed, function(){
				J(this).parent().removeClass('error');
			});
		}
	});
	
	J('#loginMe').click(function(event){
		event.preventDefault();
		var inputs = new Object();
		var clientlogin = {};
		
		J('#loginForm input:visible').each(function(){
			inputs[J(this).attr('name')] = J(this).val();
		});
		
		bizplace.JSON({clientlogin : {action: 'clientlogin', data: inputs}}, function(data) {
			if ((data.clientlogin.status) == 'ok'){
				bizplace.orderCheckout();
				// znajdz nastepna zakladke i pierwszy fieldset
//				var link = J(current).next('li.step').find('fieldset.collapsible:first legend a');
//				if (link.length > 0) {
//					link = link.attr('href');
//					if (link.charAt(0) == '#')
//						link = link.substr(1);
//					J.address.value(link);
//					return false;
//				}
//				// znajdz nastepna zakladke
//				var link =J(current).next('li.step').find('a');
//				if (link.length > 0) {
//					link = link.attr('href');
//					if (link.charAt(0) == '#')
//						link = link.substr(1);
//					J.address.value(link);
//					return false;
//				}
			} 
			else {
				if (data.clientlogin.data.login_error) {
					bizplaceAlert('Błędny login lub hasło. Spróbuj jeszcze raz. ');
				}
				else {
					var x;
					for (x in data.clientlogin.data) {
						J('input[name="' + x + '"]').next().stop(false, true).end().parent().removeClass('correct').addClass('error').end().next().html('<span></span>' + data.clientlogin.data[x]).fadeIn(speed);
					}
				}
			}
		});
	});

	/********************* /STARTOWE FUNKCJE OD LOGOWANIA **********************/	

	/********************* STARTOWE FUNKCJE OD PRZELOGOWANIA **********************/
	
	J('#loginContinue').click(function(event){
		bizplace.orderCheckout();
	});
	
	J('#logoutMe').click(function(event){
		bizplace.JSON({clientlogout: {action: 'clientlogout', data: {}}}, function(data) {
		});
		bizplace.orderCheckout();
	});

	/********************* /STARTOWE FUNKCJE OD PRZELOGOWANIA **********************/	

	J('.payment-process').click(function(event) {
		event.preventDefault();
		bizplace.JSON({orderresult: {action: 'orderandpay', 'paymethod': J(this).attr('bizplacepay')}}, function(data) {
			if (typeof data.orderresult == 'object') {
				var result = data.orderresult;
				if (result.status == 'ok') {
					switch (result.action) {
						case 'confirm':
							bizplace.goTo([
							          bizplace.tree[bizplace.groupIndex].link,
							          'koniec'
						    ]);
							break;
						case 'redirectform':
							var html = '<form action="' + result.redirect_hash.url + '" method="' + result.redirect_hash.method + '">';
							if (result.redirect_hash.attrs) {
								for (attribute in result.redirect_hash.attrs) {
									html += '<input type="hidden" name="' + attribute + '" value="' + result.redirect_hash.attrs[attribute] + '" />';
								}
							}
							html += '</form>';
							J(html).appendTo('#payment-method-' + result.paymethod).submit();
							break;
					}
				}
			}
		});
		return false;
	});

}

