$(window).load(function(event)
{
	initEvents();
});

function initEvents()
{
	$("input[name='customer_mailing_option']").change(function() { customerMailingOptionChange(this); });
	$("input[name='service_option']").change(function() { serviceOptionChange(this); });
	$('#service_hosting_additional_1').change(function() { serviceHostingAdditionalChange(this); });
	$('#service_hosting_additional_2').change(function() { serviceHostingAdditionalChange(this); });
	$('#service_hosting_additional_3').change(function() { serviceHostingAdditionalChange(this); });
	$('#service_hosting_additional_4').change(function() { serviceHostingAdditionalChange(this); });
	$('#service_hosting_additional_5').change(function() { serviceHostingAdditionalChange(this); });
	$('#service_hosting_additional_6').change(function() { serviceHostingAdditionalChange(this); });
	$("input[name='service_vps_os_option']").change(function() { serviceVPSOsOptionChange(this); });
	$("input[name='service_vps_linux_pack_option']").change(function() { serviceVPSPackOptionChange(this, 'linux'); });
	$("input[name='service_vps_windows_pack_option']").change(function() { serviceVPSPackOptionChange(this, 'windows'); });
	$('#service_vps_linux_pp_additional_2').change(function() { servicePPAdditionalChange(this); });
	$("input[name='service_vps_linux_pp_option']").change(function() { serviceVPSLinuxPPOptionChange(this); });
	$('#service_vps_test_server').change(function() { serviceVPSTestServerChange(this); });
	$('#service_vps_sms_alert').change(function() { serviceVPSSMSAlertChange(this); });
	$('#service_radio_unique_port_number').change(function() { serviceRadioUniquePortNumberChange(this); });
	$('#service_server_rent_pp_additional_2').change(function() { servicePPAdditionalChange(this); });
	$("input[name='service_domain_hosting_option']").change(function() { serviceDomainHostingOptionChange(this); });
	$("input[name='service_domain_hosting_type_option']").change(function() { serviceDomainHostingTypeOptionChange(this); });
	$("input[name='service_domain_parking_option']").change(function() { serviceDomainParkingOptionChange(this); });
	$("input[name='service_domain_redirect_type_option']").change(function() { serviceDomainRedirectOptionChange(this); });
	
	initCustomVPS();
	
	// init
	if ($('input[name="service_vps_linux_pp_option"]').length)
	{
		serviceVPSLinuxPPOptionChange($('input[name="service_vps_linux_pp_option"]:checked')[0]);
	}
}

function initCustomVPS()
{
	var elemName     = null,
		settings     = {},
		sliderStatus = {},
		total        = 0;
	
	for (var os in vps.customPackage)
	{
		sliderStatus[os] = {};
		
		for (var i = 0; i < vps.customPackage[os].settings.length; i++)
		{
			elemName = vps.customPackage[os].settings[i];
			settings = vps.customPackage[os][elemName];
			
			$('#' + os + '_' + elemName + '_slider').slider
			({
				range: 'min',
				min:   settings.min,
				max:   settings.max,
				step:  settings.step,
				value: ($('#service_vps_custom_' + os + '_' + elemName).val() != '' ? $('#service_vps_custom_' + os + '_' + elemName).val() : settings.value),
				slide: function(event, ui)
				{
					var os       = this.id.substring(0, this.id.indexOf('_')),
						tailings = this.id.substring(this.id.indexOf('_') + 1),
						elemName = tailings.substring(0, tailings.indexOf('_'));
					
					sliderStatus[os][elemName] = ui.value;
					
					$('#' + os + '_' + elemName + '_slider_field').val(ui.value + ' ' + vps.customPackage[os][elemName].unit);
					$('#service_vps_custom_' + os + '_' + elemName).val(ui.value);
					
					setTotal(os);
					copyPaste(os, elemName, ui.value);
				}
			});
			
			sliderStatus[os][elemName] = ($('#service_vps_custom_' + os + '_' + elemName).val() != '' ? $('#service_vps_custom_' + os + '_' + elemName).val() : settings.min);
			
			$('#' + os + '_' + elemName + '_slider_field').val($('#' + os + '_' + elemName + '_slider').slider('value') + ' ' + settings.unit);
			$('#service_vps_custom_' + os + '_' + elemName).val($('#' + os + '_' + elemName + '_slider').slider('value'));
			
			if (os == 'windows')
			{
				copyPaste('linux', elemName, $('#' + 'linux' + '_' + elemName + '_slider').slider('value'), true);
			}
		}
		
		setTotal(os);
	}
	
	function setTotal(os)
	{
		total = 0;
		
		for (var i = 0; i < vps.customPackage[os].settings.length; i++)
		{
			elemName = vps.customPackage[os].settings[i];
			total   += vps.customPackage[os][elemName].priceByStep[sliderStatus[os][elemName]];
		}
		
		$('#service_vps_custom_' + os + '_total').val(total);
		$('#custom_vps_price_' + os).html(total);
	}
	
	function copyPaste(os, fieldName, newValue, initial)
	{
		os = os == 'windows' ? 'linux' : 'windows';
		
		sliderStatus[os][fieldName] = newValue;
		$('#' + os + '_' + fieldName + '_slider').slider('value', newValue);
		$('#' + os + '_' + fieldName + '_slider_field').val(newValue + ' ' + vps.customPackage[os][fieldName].unit);
		$('#service_vps_custom_' + os + '_' + fieldName).val(newValue);
		
		if (initial !== true)
		{
			setTotal(os);
		}
	}
}

function customerMailingOptionChange(obj)
{
	if (obj.value == 1)
	{
		$('#customer_mailing_fields').removeClass('display_n');
	}
	else
	{
		$('#customer_mailing_fields').addClass('display_n');
	}
	
	$('#customer_more_fields').removeClass('display_n');
}

function serviceOptionChange(obj)
{
	switch(obj.value)
	{
		case 'tarhely':
			$('#service_hosting').removeClass('display_n');
			$('#service_vps').addClass('display_n');
			$('#service_radio').addClass('display_n');
			$('#service_server_rent').addClass('display_n');
			$('#service_domain').addClass('display_n');
			break;
			
		case 'vps':
			$('#service_vps').removeClass('display_n');
			$('#service_hosting').addClass('display_n');
			$('#service_radio').addClass('display_n');
			$('#service_server_rent').addClass('display_n');
			$('#service_domain').addClass('display_n');
			break;
			
		case 'radio':
			$('#service_radio').removeClass('display_n');
			$('#service_hosting').addClass('display_n');
			$('#service_vps').addClass('display_n');
			$('#service_server_rent').addClass('display_n');
			$('#service_domain').addClass('display_n');
			break;
			
		case 'berszerver':
			$('#service_server_rent').removeClass('display_n');
			$('#service_hosting').addClass('display_n');
			$('#service_vps').addClass('display_n');
			$('#service_radio').addClass('display_n');
			$('#service_domain').addClass('display_n');
			break;
			
		case 'domain':
			$('#service_domain').removeClass('display_n');
			$('#service_hosting').addClass('display_n');
			$('#service_vps').addClass('display_n');
			$('#service_radio').addClass('display_n');
			$('#service_server_rent').addClass('display_n');
			break;
			
		default:
			$('#service_hosting').addClass('display_n');
			$('#service_vps').addClass('display_n');
			$('#service_radio').addClass('display_n');
			$('#service_server_rent').addClass('display_n');
			$('#service_domain').addClass('display_n');
			$('#customer_fields').addClass('display_n');
	}
	
	$('#customer_fields').removeClass('display_n');
}

function serviceHostingAdditionalChange(obj)
{
	if (obj.checked)
	{
		$('#' + obj.id).next('label').removeClass('display_n');
		$('#' + obj.id + '_no').removeClass('input_50_display_n');
		$('#' + obj.id + '_no').addClass('input_50');
	}
	else
	{
		$('#' + obj.id).next('label').addClass('display_n');
		$('#' + obj.id + '_no').addClass('input_50_display_n');
		$('#' + obj.id + '_no').removeClass('input_50');
	}
}

function serviceVPSOsOptionChange(obj)
{
	var system = null;
	
	if (obj.value == 'linux')
	{
		system = vps.os.linux;
		
		$('#service_vps_linux_0').removeClass('display_n');
		$('#service_vps_windows_0').addClass('display_n');
		
		$('#service_vps_os_detailed').children().remove().end();
		
		$('#service_vps_os_detailed').append('<option value="valasszon">Válasszon</option>').end();
		
		for (var i = 0; i < system.value.length; i++)
		{
			$('#service_vps_os_detailed').append('<option value="' + system.value[i] + '">' + system.name[i] + '</option>').end();
		}
		
		$('#service_vps_linux_1').removeClass('display_n');
		$('#service_vps_windows_1').addClass('display_n');
		
		serviceVPSPackOptionChange($("input[name='service_vps_linux_pack_option']:checked"), 'linux');
	}
	else
	{
		system = vps.os.windows;
		
		$('#service_vps_windows_0').removeClass('display_n');
		$('#service_vps_linux_0').addClass('display_n');
		
		$('#service_vps_os_detailed').children().remove().end();
		
		$('#service_vps_os_detailed').append('<option value="valasszon">Válasszon</option>').end();
		
		for (var i = 0; i < system.value.length; i++)
		{
			$('#service_vps_os_detailed').append('<option value="' + system.value[i] + '">' + system.name[i] + '</option>').end();
		}
		
		$('#service_vps_windows_1').removeClass('display_n');
		$('#service_vps_linux_1').addClass('display_n');
		
		serviceVPSPackOptionChange($("input[name='service_vps_windows_pack_option']:checked"), 'windows');
	}
	
	$('#service_vps_more_fields').removeClass('display_n');
}

function serviceVPSPackOptionChange(obj, os)
{
	if (obj.length > 0) obj = obj[0];
	
	if (obj.value == 'egyedi')
	{
		if (os == 'linux')
		{
			$('#service_vps_custom_linux').removeClass('display_n');
			$('#service_vps_custom_windows').addClass('display_n');
		}
		else
		{
			$('#service_vps_custom_linux').addClass('display_n');
			$('#service_vps_custom_windows').removeClass('display_n');
		}
	}
	else
	{
		$('#service_vps_custom_linux').addClass('display_n');
		$('#service_vps_custom_windows').addClass('display_n');
	}
}

function servicePPAdditionalChange(obj)
{
	if (obj.checked)
	{
		$('#' + obj.id + '_domain').removeClass('display_n');
	}
	else
	{
		$('#' + obj.id + '_domain').addClass('display_n');
	}
}

function serviceVPSLinuxPPOptionChange(obj)
{
	if (obj.value > 0)
	{
		$('#service_vps_linux_sw_installation_need').addClass('display_n');
	}
	else
	{
		$('#service_vps_linux_sw_installation_need').removeClass('display_n');
	}
	
	if (obj.value < 2) // DirectAdmin
	{
		$('#service_vps_linux_pp_additional_0').prop('disabled', true);
		$('#service_vps_linux_pp_additional_1').prop('disabled', true);
		$('#service_vps_linux_pp_additional_2').prop('disabled', true);
		
		$('#service_vps_linux_pp_additional_2').prop('checked', false);
		$('#service_vps_linux_pp_additional_2_domain').addClass('display_n');
		$('#service_vps_linux_pp_additional_2_domain_name').val('');
	}
	else
	{
		$('#service_vps_linux_pp_additional_0').prop('disabled', false);
		$('#service_vps_linux_pp_additional_1').prop('disabled', false);
		$('#service_vps_linux_pp_additional_2').prop('disabled', false);
	}
}

function serviceVPSTestServerChange(obj)
{
	if (obj.checked)
	{
		$('#' + obj.id).next('label').removeClass('display_n');
		$('#' + obj.id + '_ip').removeClass('input_100_display_n');
		$('#' + obj.id + '_ip').addClass('input_100');
	}
	else
	{
		$('#' + obj.id).next('label').addClass('display_n');
		$('#' + obj.id + '_ip').addClass('input_100_display_n');
		$('#' + obj.id + '_ip').removeClass('input_100');
	}
}

function serviceVPSSMSAlertChange(obj)
{
	if (obj.checked)
	{
		$('#service_vps_sms_alert_fields').removeClass('display_n');
	}
	else
	{
		$('#service_vps_sms_alert_fields').addClass('display_n');
	}
}

function serviceRadioUniquePortNumberChange(obj)
{
	if (obj.checked)
	{
		$('#' + obj.id).next('label').removeClass('display_n');
		$('#' + obj.id + '_port').removeClass('input_50_display_n');
		$('#' + obj.id + '_port').addClass('input_50');
	}
	else
	{
		$('#' + obj.id).next('label').addClass('display_n');
		$('#' + obj.id + '_port').addClass('input_50_display_n');
		$('#' + obj.id + '_port').removeClass('input_50');
	}
}

function serviceDomainHostingOptionChange(obj)
{
	if (obj.value == 1)
	{
		$('#service_domain_parking_option_div').addClass('display_n');
		$('#service_domain_hosting_type_option_div').removeClass('display_n');
	}
	else
	{
		$('#service_domain_parking_option_div').removeClass('display_n');
		$('#service_domain_hosting_type_option_div').addClass('display_n');
		$("input[name='service_domain_parking_option']").trigger('change');
	}
}

function serviceDomainHostingTypeOptionChange(obj)
{
	if (obj.value == 1)
	{
		$('#service_hosting').removeClass('display_n');
		$('#service_vps').addClass('display_n');
		$('#service_radio').addClass('display_n');
		$('#service_server_rent').addClass('display_n');
		$('#service_domain').addClass('display_n');
		
		$("input[name='service_option']").val(['tarhely']);
		$("input[name='service_hosting_domain_name']").val($("input[name='service_domain_domain_name']").val());
		$("input[name='service_hosting_type_option']").val([$("input[name='service_domain_type_option']:checked").val()]);
	}
}

function serviceDomainParkingOptionChange(obj)
{
	if (obj.value == 1)
	{
		$('#service_domain_redirect_type_option_div').addClass('display_n');
		$('#service_domain_redirect_dns_div').addClass('display_n');
		$('#service_domain_redirect_ip_div').addClass('display_n');
	}
	else
	{
		if (obj.checked)
		{
			$('#service_domain_redirect_type_option_div').removeClass('display_n');
			$("input[name='service_domain_redirect_type_option']").trigger('change');
		}
	}
}

function serviceDomainRedirectOptionChange(obj)
{
	switch (obj.value)
	{
		case '0':
			if (obj.checked)
			{
				$('#service_domain_redirect_dns_div').removeClass('display_n');
				$('#service_domain_redirect_ip_div').addClass('display_n');
				$('#service_domain_redirect_webaddress_div').addClass('display_n');
			}
			break;
			
		case '1':
			if (obj.checked)
			{
				$('#service_domain_redirect_ip_div').removeClass('display_n');
				$('#service_domain_redirect_dns_div').addClass('display_n');
				$('#service_domain_redirect_webaddress_div').addClass('display_n');
			}
			break;
			
		case '2':
			if (obj.checked)
			{
				$('#service_domain_redirect_webaddress_div').removeClass('display_n');
				$('#service_domain_redirect_ip_div').addClass('display_n');
				$('#service_domain_redirect_dns_div').addClass('display_n');
			}
			break;
	}
}
