$(document).ready(function() {
	init();
});

function init() {

	/* Buttons
	___________________________________________________*/
	//$("a.textButton:not(:has(span))").wrapInner('<span />');
	$("input[type=submit].textButton").each(function() {
		var el = $(this);
		var id = el.attr('id');
		var button = $('<a href="' + (id ? id : '#') + '" class="' + el.attr('class') + ' submit">'+this.value+'</a>');
		if (this.disabled) {
			button.addClass('inactive');
		}
		button.click(function() {
			var self = $(this);
			if (!self.hasClass('inactive')) {
				var href = self.attr('href');
				if (href != '#') {
					var value = $('<input type="hidden" name="' + $('#'+href).attr('name')  + '" value="1" />');
					self.before(value);
				}
				self.closest("form").submit();
			}
			return false;
		});
		el.before(button);
		el.hide();

		// Force redraw of button if IE 7
		if ($.browser.msie && (parseInt($.browser.version, 10) == 7)) {
			button.forceRedraw(true);
		}
	});

	// Force redraw of button if IE 7
	if ($.browser.msie && (parseInt($.browser.version, 10) == 7)) {
		if ($('table.compare-table p a.textButton')) {
			$('table.compare-table p a.textButton').forceRedraw(true);
		}
	}


	/* Init sliders in guide
	___________________________________________________*/
	var outputTv = "";
	var outputInternet = "";
	var outputPhone = "";
		
	$("#slider-tv").slider({
		value:0,
		min: 0,
		max: 3,
		step: 1,
		slide: function(event, ui) {
			$("#tv").val(ui.value);
			switch(ui.value) {
				case 0:
					outputTv = "Inget valt";
					$("#filter-tv").val('');
					$("#opt-channels").val('');
					break;
				case 1:
					outputTv = "Jag ser bara på de vanligaste kanalerna.";
					$("#filter-tv").val('tv');
					$("#opt-channels").val('10');
					break;
				case 2:
					outputTv = "Jag gillar att variera mitt tittande och har en hel del specialintressen.";
					$("#filter-tv").val('tv');
					$("#opt-channels").val('50');
					break;
				case 3:
					outputTv = "Jag älskar att kunna välja och vraka bland mängder av olika program och filmer";
					$("#filter-tv").val('tv');
					$("#opt-channels").val('50+');
					break;
			}
			$("#tv-result").html(outputTv);
			updateCounter($("#tv-result").closest('form'));
		}
	});
		
	$("#slider-internet").slider({
		value:0,
		min: 0,
		max: 3,
		step: 1,
		slide: function(event, ui) {
			$("#internet").val(ui.value);
			switch(ui.value) {
				case 0:
					outputInternet = "Inget valt";
					$("#filter-mbit").val('');
					$("#opt-internet").val('');
					break;
				case 1:
					outputInternet = "Jag vill mest kunna maila mina vänner och använda facebook";
					$("#filter-mbit").val('mbit');
					$("#opt-internet").val('10');
					break;
				case 2:
					outputInternet = "Jag vill även kunna ladda ner och skicka bilder och musik";
					$("#filter-mbit").val('mbit');
					$("#opt-internet").val('50');
					break;
				case 3:
					outputInternet = "Jag vill kunna ladda ner tunga filer med rörligt material, till exempel filmer och spel.";
					$("#filter-mbit").val('mbit');
					$("#opt-internet").val('50+');
					break;
			}
			$("#internet-result").html(outputInternet);
			updateCounter($("#internet-result").closest('form'));
		}
	});
		
	$("#slider-phone").slider({
		value:0,
		min: 0,
		max: 1,
		step: 1,
		slide: function(event, ui) {
			$("#phone").val(ui.value);
			switch(ui.value) {
				case 0:
					outputPhone = "Inget valt";
					$("#filter-telefoni").val('');
					break;
				case 1:
					outputPhone = "Jag tycker det &auml;r smart med ett extra prisv&auml;rt telefonerbjudande.";
					$("#filter-telefoni").val('telefoni');
					break;
				case 2:
					outputPhone = "Val 3";
					$("#filter-telefoni").val('telefoni');
					break;
				case 3:
					outputPhone = "Val 4";
					$("#filter-telefoni").val('telefoni');
					break;
			}
			$("#phone-result").html(outputPhone);
			updateCounter($("#phone-result").closest('form'));
		}
	});


	/* AJAX service activation
	___________________________________________________*/
	$('#ajax-call a.activate-order').each(function() {
		$.ajax({
			type: "GET",
			url: $(this).attr('href')
		});
		alert('Ditt bredband är nu aktiverat. Vänligen stäng av din dator/router och vänta fem minuter innan du försöker använda din tjänst.');
	});


	/* My pages
	___________________________________________________*/
	$('#display-change-account-details').live('click', function() {
		$('#change-account-details').toggle();
		return false;
	});


	/* Forgot password form
	___________________________________________________*/
	$('.forgot-password a.toggle-pwd-form').live('click', function() {
		$('.forgot-password #pwd-form').toggle();

		if ($.browser.msie && (parseInt($.browser.version, 10) == 7)) {
			$('.forgot-password #pwd-form').forceRedraw(true);
		}

		return false;
	});

	$('.forgot-password #pwd-form').submit(function() {
		$.ajax({
			dataType: 'json',
			url: this.action,
			data: $('.forgot-password #pwd-form').serialize(),
			success: function(data) {
				if (data['status'] == 'success') {
					$('#forgot-password-wrapper').html(data['message']);
				}
				else {
					$('#pwd-result').html(data['message']);
				}
			}
		});

		return false;
	});

	$('.focus-forgot-pwd').live('click', function() {
		$('#forgot-pwd-help').toggle();
		if ($('#forgot-pwd-help').is(':visible')) {
			$('.forgot-password #pwd-form').slideDown('fast');
		}

		return false;
	});


	/* Update offer count
	___________________________________________________*/
	var updateCounter = function(form) {
		// If nothing is selected, don't display anything
		if (($('#tv', form).val() == 0 || ($('#tv', form).val() == undefined))
			&& ($('#internet', form).val() == 0 || ($('#internet', form).val() == undefined))
			&& ($('#phone', form).val() == 0 || ($('#phone', form).val() == undefined))) {
			$('#submit-row').fadeOut('fast');
		}
		else {
			$('#submit-row').fadeIn('fast');
			$.ajax({
				url: $('#offer-count-link').attr('href'),
				data: form.serialize(),
				success: function(data) {
					$('#offers-count-value').html(data);
					if ($('.offers-count.hidden').is(":hidden")) {
						$('.offers-count.hidden').fadeIn('fast');
					}
				}
			});
		}
	};

	$('#show-offers .trigger').click(function() {
		updateCounter($(this).closest("form"));
	});

	if ($('#show-offers')) {
		updateCounter($('#show-offers'));
	}


	/* Init popup
	___________________________________________________*/

	$("a.cancel").fancybox();
	$("a.popup").fancybox();
	$("a.popup-big").fancybox({
		autoDimensions: false,
		width: 680,
		height: 580
	});
	
	$("#validate-form-apartment").fancybox({
		modal: true,
		centerOnScroll: true
	});
	$("#validate-form-apartment").trigger('click');


	/* Add zebra lines to tables
	___________________________________________________*/
	$(".compare-table").each(function() {
		$("tr:even", this).addClass("odd");
	});


	/* Add first/last class
	___________________________________________________*/	
	$(".list-compare .row:last").addClass("last");
	$(".list-compare .group.top:first").addClass("first");
	$(".head .logos .logos-list a:first").addClass("first");
	$(".head .logos .logos-list a:last").addClass("last");
	$(".head ul.group li:last-child").addClass("last");

	$(".compare-table tr").each(function() {
		$(this).children('td:first').addClass('first');
	});


	/* Distribute header company logos evenly
	___________________________________________________*/
	if ($(".head .logos .logos-list a")) {
		var e = $(".head .logos .logos-list a");
		e.each(function(i) {
			// 8 logos / row
			if ((i%8) == 7) {
				$(this).addClass('last');
			}
		});
	}


	/* Datepicker
	___________________________________________________*/
	if ($("#datepicker")) {
		$("#datepicker").datepicker({
			maxDate: $("#datepicker-maxDate") ? new Date($("#datepicker-maxDate").val()) : null,
			minDate: $("#datepicker-minDate") ? new Date($("#datepicker-minDate").val()) : null,
			onClose: function() {
				if ($(this).hasClass('validation')) {
					$(this).closest('form').validate().element('#datepicker')
				}
			}
		});
	}


	/* FAQ
	___________________________________________________*/
	$(".page-faq .question").hide();	
	$(".page-faq .category a.toggleVisible").live('click', function() {
		$(this).parent().parent().find(".question").toggle();		
		$(this).children().toggleText("Visa alla", "D\366lj");		
		$(this).parent().toggleClass("active");	
		return false;
	});


	/* Set height of col in listing
	___________________________________________________*/
	var setColHeight = function(){
		var height = $(this).height();
		if (height) {
			if ($(this).siblings('.col-3')) {
				$(this).siblings('.col-3').height(height);
			}
			if ($(this).siblings('.col-4')) {
				$(this).siblings('.col-4').height(height);
			}
		}
	};
	$(".list-compare .read-more .col-2").each(setColHeight);


	/* Hides elements with class hidden
	___________________________________________________*/
	$(".hidden").hide();

	
	/* Validate forms
	___________________________________________________*/		
	$("#form").validate({
		highlight: function(element, errorClass, validClass) {
			$(element).closest('div').addClass(errorClass).removeClass(validClass);
		},
		unhighlight: function(element, errorClass, validClass) {
			$(element).closest('div').addClass(validClass).removeClass(errorClass);
		}
	});

	if($('.page-order-2 .conditions input:checkbox').length > 0) {
		$(".page-order-2 .conditions input:checkbox").submitBtn($('.page-order-2 .conditions input:checkbox').length, true);
	}


	/* Limit checkbox selection
	___________________________________________________*/		
	var _limit = $('#ch_number').val();
	$(".channels input:checkbox").limit(_limit);


	/* Compare form
	___________________________________________________*/
	if ($("form.list-compare input:checkbox").length > 0) {
		$("form.list-compare input:checkbox").limitCompare(4);
	}

	$('#tv').live('click', function() {
		$('#tv-col').toggle($(this).attr('checked'));
	});


	$('#show-offers .group.offer input:checkbox').each(function () {
		$(this).radiobox(updateCounter);
	})


	/* List paging
	___________________________________________________*/
	$('.pages a').live('click', function() {
		// Get and copy page to show
		var query = $(this).attr('href').split('=');
		$('form#show-offers #page').val(query[1]);
		$('form#show-offers').submit();
		return false;
	});


	/* Toggle building info address update
	___________________________________________________*/
	var enableSubmit = function(input) {
		var enable = true;
		var form = input.closest("form");
		$('input[type=text]', form).each(function() {
			if ($(this).val() == '') {
				enable = false;
			}
		});
		form.find("input[type=submit]").attr("disabled", !enable);
		form.find("a.textButton.submit").toggleClass("inactive", !enable);
		$.fancybox.center();		
	};

	$('form.form-apartment :input').change(function() {
		enableSubmit($(this));
	});

	$('form.form-apartment :input').keyup(function() {
		enableSubmit($(this));
	});

	$('.form-apartment input:radio').change(function() {
		var form = $(this).closest("form");
		if ($(this).val() == 0) {
			$('.form-apartment #form-apartment-data').show();
		}
		else {
			$('.form-apartment #form-apartment-data').hide();
			form.find("input[type=submit]").attr("disabled", false);
			form.find("a.textButton.submit").toggleClass("inactive", false);
		}
		$.fancybox.center();
	});


	/* Search
	___________________________________________________*/
	function formatItem(row) {
		return row[0];
	}


	$(".autosg").autocomplete({
		source: $("#complete_url").val()
	});

	$(".autosg-index").autocomplete({
		source: $("#complete_url").val()
	});


	$('#checkadress').submit(function() {
		var adress = encodeURIComponent($("#street_address").val());
		var nmbr = $("#street_nmbr").val();
		var zip = $("#zip").val();
		var dataString = 'street='+adress+'&nmbr='+nmbr+'&check=1&zip='+zip;

		$('#result').load(this.action, dataString, function(response, status, xhr) {
		});

		return false;
	});	


	// Default values
	$(".block-order-search #street_address").defaultValue();
	$(".block-order-search #street_nmbr").defaultValue();
	$(".block-order-search #zip").defaultValue();

	$('form.block-order-search :input').change(function() {
		var enable = true;
		var form = $(this).closest("form");
		$('input[type=text]', form).each(function() {
			if ($(this).val() == '' || $(this).val() == $(this).attr('title')) {
				enable = false;
			}
		});
		form.find("input[type=submit]").attr("disabled", !enable);
		form.find("a.textButton.submit").toggleClass("inactive", !enable);
	});

	$('form.block-order-search :input').keypress(function() {
		var enable = true;
		var form = $(this).closest("form");
		$('input[type=text]', form).each(function() {
			if ($(this).val() == '' || $(this).val() == $(this).attr('title')) {
				enable = false;
			}
		});
		form.find("input[type=submit]").attr("disabled", !enable);
		form.find("a.textButton.submit").toggleClass("inactive", !enable);
	});

	if ($('form.block-order-search')) {
		var enable = true;
		var form = $('form.block-order-search');
		$('input[type=text]', form).each(function() {
			if ($(this).val() == '' || $(this).val() == $(this).attr('title')) {
				enable = false;
			}
		});
		form.find("input[type=submit]").attr("disabled", !enable);
		form.find("a.textButton.submit").toggleClass("inactive", !enable);
	}

	// Expandables
	$('#toggle-advanced .expandable').expandable('Fler sökalternativ', 'Färre sökalternativ');
	$('#toggle-specification .expandable').expandable('Visa specifikation', 'Dölj specifikation');
	$('#toggle-terms .expandable').expandable('Visa allmänna villkor', 'Dölj allmänna villkor');
	$('#toggle-intro .expandable').expandable('Visa', 'Dölj');
	$('#toggle-account .expandable').expandable('Ändra mina uppgifter', 'Ändra mina uppgifter');
	$('#toggle-company-info .expandable').expandable('Säga upp/ändra beställning', 'Säga upp/ändra beställning');


	/* Order sort
	___________________________________________________*/        
	$('.list-compare .compare a.view-type').live('click', function() {
		var self = $(this);
		self.toggleClass('grid');
		var isGrid = self.hasClass('grid');
		if (isGrid) {
			$('#view-style').val('grid');
		}
		else {
			$('#view-style').val('list');
		}

		$('#view-style').closest('form').submit();

		return false;
	});


	// IMPORTANT! This should be the last of the form things to do
	$('form.auto-submit').each(function() {
		$(this).submit();
	});


	/* Banner rotation
    ___________________________________________________*/
	var bannerUrl = $('#banners-url').attr('href');
	if (bannerUrl) {
		setInterval(function() {
			// Reload banner every n seconds
			$('div.block-ads').load(bannerUrl+'?r='+Math.random());
		}, 15000);
	}
}


/* Default value
___________________________________________________*/
$.fn.defaultValue = function(val) {
	if ((val == undefined) || val == '') {
		val = this.attr('title');
		if (val == '') {
			val = this.val();
		}
	}
	var self = this;
	self.attr('title', val);
	this.blur(function() {
		if (self.val() == '') {
			self.val(val);
		}
	});

	this.focus(function() {
		if (self.val() == val) {
			self.val('');
		}
	});
}


/* Toggle text
___________________________________________________*/
$.fn.toggleText = function(a, b) {
	return this.each(function() {
		jQuery(this).text(jQuery(this).text() == a ? b : a);
	});
};


/* Limit checkbox selection
___________________________________________________*/	
$.fn.limit = function(n) {
	var self = this;
	$('#msg').html('Du har valt 0 av ' + n + '');
	this.click(function(){
		var f = self.closest("form");
		if (self.filter(":checked").length==n) {
			self.not(":checked").attr("disabled",true).addClass("disabled");
			f.find("input[type=submit]").attr("disabled", false);
			f.find("a.textButton.submit").removeClass("inactive");
		} else {
			self.not(":checked").attr("disabled",false).removeClass("disabled");
			f.find("input[type=submit]").attr("disabled", true);
			f.find("a.textButton.submit").addClass("inactive");
		}
		$('#msg').html('Du har valt ' + self.filter(":checked").length + ' av ' + n);
	});
}


/* Limit checkbox simultanious selection
___________________________________________________*/	
$.fn.radiobox = function(fn) {
	var self = $(this);
	var updateFunction = fn;
	self.click(function() {
		var checked = self.attr('checked');
		self.closest("form").find("input:checkbox:checked").attr("checked", false);
		self.attr('checked', checked);
		updateFunction(self.closest('form'));
	});
}


/* Limit checkbox selection for compare
___________________________________________________*/	
$.fn.limitCompare = function(n) {
	var self = this;
	this.click(function(){
		var f = self.closest("form");
		if (self.filter(":checked").length < 2) {
			self.not(":checked").attr("disabled", false).removeClass("disabled");
			f.find("input[type=submit]").attr("disabled", true);
			f.find("a.textButton.submit").addClass("inactive");
		} else {
			if (self.filter(":checked").length==n) {
				self.not(":checked").attr("disabled", true).addClass("disabled");
			} else {
				self.not(":checked").attr("disabled", false).removeClass("disabled");
			}
			f.find("input[type=submit]").attr("disabled", false);
			f.find("a.textButton.submit").removeClass("inactive");
		}
	});
}

	
/* Allow submit
___________________________________________________*/	
$.fn.submitBtn = function(n, exact) {
	var self = this;
	$(self).click(function() {
		var enable = exact ? (self.filter(":checked").length == n)
		: (self.filter(":checked").length >= n);
		var f = self.closest("form");
		f.find("input[type=submit]").attr("disabled", !enable);
		f.find("a.textButton.submit").toggleClass("inactive", !enable);
	});
}


/* Expandable (expand/collapse)
___________________________________________________*/
$.fn.expandable = function(t1, t2) {
	$(this).click(function() {
		var parts = this.href.split("#");
		(parts.length > 1) ? $('#'+parts[1]).toggle() : $(this.href).toggle();
		$(this).toggleText(t1, t2);
		$(this).parent().toggleClass("hide");
		return false;
	});
}

