$(function() {

	var loadingDiv = '<div id="loading"></div>';

	$("input#domain").keypress(function(event) {

		if ( event.which == 13 ) {

			event.preventDefault();

		}

		$('button#check').click();

	});

	// Domain checker
	$('button#check').click(function(){

		$('table#checker-result').fadeOut(500);

		$('div#checker-content').animate({
			height: '72px'
		}, 500, function() {

			$('div#checker-content').html(loadingDiv);//, function () {

				$('div#loading').fadeIn(500);

			//});

		});

		var requested_domain = $('input#domain').val();

		$.getJSON(
			'scripts/whois.php',
			{
				domain: requested_domain,
			},
			function(data) {

				//$('div#checker-content').css({height: 'auto'});

				var result;

				if (data.error != undefined) {

					result = '<div class="error"><img src="img/s.gif" class="s cross" alt="X"> ' + data.error + '</div>';

				} else {

					var items = [];
					result = '<table id="checker-result" cellpadding="0" cellspacing="0"><tr class="header"><td class="status-image">&nbsp;</td><td class="domain-name">Domeinnaam</td><td class="status">Status</td><td class="price">Jaarprijs</td></tr>';

					$.each(data, function(key, val) {

						var id			= val['id'];
						var status		= val['status'];
						var code		= val['code'];
						var domain		= val['domain'];
						var extension	= val['extension'];
						var price		= val['price'];
						var requested	= val['requested'];
						var fullDomain = domain + '.' + extension;

						if (code == 210) {
							result += '<tr class="domain available' + ((requested == 'true') ? ' requested': '') + '"><td><input type="hidden" name="id" class="id" value="' + id + '"><img src="img/s.gif" class="s check" alt="V"></td><td class="title"><span class="title">' + fullDomain + '</span></td><td class="status">vrij</td><td class="price">&euro; <span class="price">' + price + '</span></td></tr>';
						} else if (code == 211) {
							result += '<tr class="domain taken' + ((requested == 'true') ? ' requested': '') + '"><td><input type="hidden" name="id" class="id" value="' + id + '"><img src="img/s.gif" class="s cross" alt="X"></td><td class="title"><span class="title">' + fullDomain + '</span></td><td class="status">bezet (verhuizen?)</td><td class="price">&euro; <span class="price">' + price + '</span></td></tr>';
						} else {
							result += '<tr class="domain unknown' + ((requested == 'true') ? ' requested': '') + '"><td><input type="hidden" name="id" class="id" value="' + id + '"><img src="img/s.gif" class="s cross" alt="X"></td><td class="title"><span class="title">' + fullDomain + '</span></td><td class="status">onbekend</td><td></td></tr>';
						}

					});

					result += '</table>';

				}

				$('div#loading').fadeOut(100, function () {

					$('div#checker-content').animate({

						height: (39 + (data.length * 24)) + 'px'

					}, 500, function () {

						$('div#checker-content').html(result);

						$.afterDomainCheck();

						$('table#checker-result').fadeIn(500);

					});

				});

			}
		);

		return false;

	});

	// Drag & drop functionality
	var totalPrice = 0.00;
	var totalDomainPrice = 0.00;
	var totalPackagePrice = 0.00;
	var addedDomains = new Array();

	/*
	$('#packagescontent').datagrid({
		singleSelect:true
	});
	*/

	$('.package').draggable({
		revert : true,
		proxy : 'clone',
		onStartDrag : function() {

			$(this).draggable('options').cursor = 'not-allowed';
			$(this).addClass('transparent');

		},
		onStopDrag:function() {

			$(this).draggable('options').cursor = 'move';
			$(this).removeClass('transparent');

		}
	});

	$('div#package').droppable(
		{
			onDragEnter:function(e, source) {

				$(source).draggable('options').cursor = 'move';

				$('div#package').addClass('drag-in');

			},
			onDragLeave:function(e, source) {

				$(source).draggable('options').cursor = 'not-allowed';

				$('div#package').removeClass('drag-in');

			},
			onDrop:function(e, source){

				$(source).draggable('options').cursor = 'move';

				var id = $(source).find('input.id').html();
				var name = $(source).find('div.title span.title').html();
				var price = $(source).find('div.price span.price').html().replace(',', '.');
				var title = $(source).find('div.title').html();

				addPackage(id, name, title);

				changePrice('package', 'add', (parseFloat(price)*12));

				$('div#package').removeClass('drag-in');
				$('div#package').addClass('dropped');

			}
		}
	);

	function addPackage(id, name, html) {

		$('div#package').html('<div id="chosen-package"><input type="hidden" name="package" value="' + name + '">' + html + '</div>');

	}

	function addDomain(id, name, price) {

		if (totalDomainPrice == 0) {

			$('div#domain-name').html('');

		}

		addedDomains.push(id);

		$('div#domain-name').append('<div id="domain_' + id + '" class="chosen-domain"><input type="hidden" name="id" value="' + id + '"><input type="hidden" name="price" class="price" value="' + price + '"><input type="hidden" name="domain[]" value="' + name + '"><!--img src="img/s.gif" id="remove-domain_' + id + '" class="remove s cross" alt="X"--> ' + name + '</div>');

		$.afterDomainDrag();

	}

	$.afterDomainCheck = function () {

		$('.domain').draggable({
			revert : true,
			proxy : 'clone',
			onStartDrag : function() {

				$(this).draggable('options').cursor = 'not-allowed';
				$(this).addClass('transparent');

			},
			onStopDrag:function() {

				$(this).draggable('options').cursor = 'move';
				$(this).removeClass('transparent');

			}
		});

	};
	$.afterDomainCheck();

	$.afterDomainDrag = function () {

		$('img[id^=remove-domain_]').click(function () {

			var id = (this.id.replace('remove-domain_', ''));
			var price = $('div#domain_' + id + ' input.price').val();

			changePrice('domain', 'delete', price);
			addedDomains = removeItemFromArray(id, addedDomains);

			$('div#domain_' + id).remove();

			if ($.checkForEmptyDomains() == true) {

				$('div#domain-name').html('Sleep &eacute;&eacute;n of meerdere domeinnamen naar dit vlak');
				$('div#domain-name').removeClass('drag-in');
				$('div#domain-name').addClass('dropped');

			}

		});

	}
	$.afterDomainDrag();

	$.checkForEmptyDomains = function () {

		if ($('div#domain-name').html() == '') {

			return true;

		}

		return false;

	}

	$('div#domain-name').droppable(
		{
			onDragEnter:function(e, source) {

				$(source).draggable('options').cursor = 'move';

				$('div#domain-name').addClass('drag-in');

			},
			onDragLeave:function(e, source) {

				$(source).draggable('options').cursor = 'not-allowed';

				$('div#domain-name').removeClass('drag-in');

			},
			onDrop:function(e, source){

				$(source).draggable('options').cursor = 'move';

				var id = $(source).find('input.id').val();
				var name = $(source).find('td.title span.title').html();

				if (!inArray(id, addedDomains)) {

					var price = $(source).find('td.price span.price').html().replace(',', '.');

					price = parseFloat(price);

					addDomain(id, name, price);

					changePrice('domain', 'add', price);

				}

				$('div#domain-name').removeClass('drag-in');
				$('div#domain-name').addClass('dropped');

			}
		}
	);

	function changePrice(type, action, price) {

		if (type == 'package' && action == 'add') {

			totalPackagePrice = parseFloat(price);
			totalPrice = totalDomainPrice + totalPackagePrice;

		} else if (type == 'domain' && action == 'add') {

			totalDomainPrice += parseFloat(price);
			totalPrice = totalDomainPrice + totalPackagePrice;

		} else if (type == 'domain' && action == 'delete') {

			totalDomainPrice -= parseFloat(price);
			totalPrice = totalDomainPrice + totalPackagePrice;

		}

		$('div#totalprice div.totalprice').html('&euro; ' + currencyFormatted(totalPrice));

	}

	function currencyFormatted(amount) {

		var i = parseFloat(amount);

		if(isNaN(i)) {
			i = 0.00;
		}

		var minus = '';
		if(i < 0) {
			minus = '-';
		}

		i = Math.abs(i);
		i = parseInt((i + .005) * 100);
		i = i / 100;
		s = new String(i);

		if(s.indexOf('.') < 0) {
			s += '.00';
		}
		if(s.indexOf('.') == (s.length - 2)) {
			s += '0';
		}

		s = minus + s;

		s = String(s).replace('.', ',');

		return s;

	}

	function arrayCompare(a1, a2) {
		if (a1.length != a2.length) return false;
		var length = a2.length;
		for (var i = 0; i < length; i++) {
			if (a1[i] !== a2[i]) return false;
		}
		return true;
	}

	function inArray(needle, haystack) {
		var length = haystack.length;
		for(var i = 0; i < length; i++) {
			if(typeof haystack[i] == 'object') {
				if(arrayCompare(haystack[i], needle)) return true;
			} else {
				if(haystack[i] == needle) return true;
			}
		}
		return false;
	}

	function removeItemFromArray(needle, haystack) {
		var i = 0;
		while (i < haystack.length) {
			if (haystack[i] == needle) {
				haystack.splice(i, 1);
			} else {
				i++;
			}
		}
		return haystack;
	}

	$('button#order').click(function(){

		$.showInfoForm();

		return false;

	});

	$('span#contact').click(function(){

		$.showContactForm();

		return false;

	});

	$('span#terms-and-conditions').click(function(){

		$.showTermsAndConditions();

		return false;

	});

	$('div#fade').click(function(){

		$.hideInfoForm();
		$.hideContactForm();
		$.hideTermsAndConditions();

	});

	$.hideInfoForm = function () {

		$('.formError').fadeOut(100);
		$('div#contact-info').fadeOut(200, function () {

			$('div#fade').fadeOut(1000);

		});

	}

	$.hideContactForm = function () {

		$('.formError').fadeOut(100);
		$('div#contact-form').fadeOut(200, function () {

			$('div#fade').fadeOut(1000);

		});

	}

	$.hideTermsAndConditions = function () {

		$('div#terms-and-conditions-popup').fadeOut(200, function () {

			$('div#fade').fadeOut(1000);

		});

	}

	$.showInfoForm = function () {

		$('div#fade').fadeIn(1000, function () {

			$('div#contact-info').fadeIn(200);
			$('.parentFormorderform').fadeIn(100);

		});

	}

	$.showContactForm = function () {

		$('div#fade').fadeIn(1000, function () {

			$('div#contact-form').fadeIn(200);
			$('.parentFormcontactform').fadeIn(100);

		});

	}

	$.showTermsAndConditions = function () {

		$('div#fade').fadeIn(1000, function () {

			$('div#terms-and-conditions-popup').fadeIn(200);

		});

	}

	$("form#orderform").validationEngine();

	$('button#order-final').click(function(){

		$("form#orderform").submit();

	});

	$("form#contactform").validationEngine();

	$('button#contact-final').click(function(){

		$("form#contactform").submit();

	});

});
