﻿if (!SydEnergi) var SydEnergi = {};

// TODO: first parameter could be a selector, so EnsureMatches act as a .find method.
jQuery.fn.EnsureMatches = function (errorMessage) {   
    /// <summary>Ensure jQuery array has one or more matches.</summary> 

	if (!jQuery(this).length)
	{
		var defaultText = "Selector: \"" + this.selector + "\" did not match any elements.";
		jQuery.error(errorMessage || defaultText);
	}
	
	return this;
};

jQuery.extend({
	getUrlVars: function () {
		var vars = [], hash;
		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		for (var i = 0; i < hashes.length; i++) {
			hash = hashes[i].split('=');
			vars.push(hash[0]);
			vars[hash[0]] = hash[1];
		}
		return vars;
	},
	getUrlVar: function (name) {
		return jQuery.getUrlVars()[name];
	}
});

jQuery(function () {

    new SydEnergi.SearchBoxFix(".search .query");
    new SydEnergi.MyAccount("#myAccount");
    new SydEnergi.LoginBox(".loginBox");
    new SydEnergi.Logout(".loggedBox");
    SydEnergi.MyPage("div[id$=_uiUpMyPage]");
    new SydEnergi.GreenPower(".greenPower");
    new SydEnergi.SpeedTest();
    new SydEnergi.Meter(".slider");

    new SydEnergi.EvenBoxesFix("#content .spot.electricity");
    new SydEnergi.EvenBoxesFix("#content .siteBox");
    new SydEnergi.EvenBoxesFix("#content .adsBox.full");
    new SydEnergi.EvenBoxesFix("#content .story.small");
    new SydEnergi.EvenBoxesFix("#content .spot.fullylinked");
    new SydEnergi.EqualBoxesHeightFix("#content .bigElectricity .contents");

    new SydEnergi.DigitalTV();
    new SydEnergi.Tooltips(".tooltip");
    new SydEnergi.WFMFix();
    new SydEnergi.FormHints();
    new SydEnergi.WholeBoxLink(".heating");
    new SydEnergi.VideoDisplay();
    new SydEnergi.StoryFix();

    SydEnergi.ValidationSummaryFix();
    SydEnergi.SignDeal();
    SydEnergi.MoreConsumptionNumbers();

    SydEnergi.Navigation("div.noFlash ul li.requiresLogintrue a");

    SydEnergi.NewsLetter();
    SydEnergi.FoldingFormSection();

    SydEnergi.Gas();
});

SydEnergi.Navigation = function (selector) {
	if (!jQuery(selector).length) {
		return;
	}

	jQuery(selector).toggle(
		function(e) {
			var obj = jQuery(this);
			obj.addClass("selected");
			var loginRequiredMessage = obj.parent().find(".loginRequiredMessage");
			if (loginRequiredMessage.length > 0) {
				e.preventDefault();
				loginRequiredMessage.slideDown();
			}
		}, 
		function(e) {
			var obj = jQuery(this);
			obj.removeClass("selected");
			var loginRequiredMessage = obj.parent().find(".loginRequiredMessage");
			if (loginRequiredMessage.length > 0) {
				e.preventDefault();
				loginRequiredMessage.slideUp();
			}
		}
	);
}

SydEnergi.EqualBoxesHeightFix = function (selector) {
	if (!jQuery(selector).length) {
		return;
	}

	boxes = jQuery(selector);
	maxHeight = 0;
	boxes.each(function () {
		currBoxHeight = jQuery(this).height();
		if (maxHeight < currBoxHeight) {
			maxHeight = currBoxHeight;
		}
	})
	boxes.height(maxHeight);
}

SydEnergi.StoryFix = function () {
	//This thing removes the bottom border from the story divs if they are alone in their parent element
	jQuery("div.story.main").each(function () {
		var that = jQuery(this);
		if (that.next().length == 0) {
			that.addClass("last");
		}
	});

}

SydEnergi.Tooltips = function (selector) {

	var tooltips = jQuery(selector);

	if (!tooltips.length) {
		return;
	}

	this.Tooltips = function () {
		tooltips.hover(
			function (event) {
				var me = jQuery(this);
				setTimeout(function () { SydEnergi.ShowTooltip(jQuery(me.attr('href')).html(), { pageX: me.offset().left + me.width() / 2, pageY: me.offset().top + me.height() / 2 }); }, 300);
			},
			function () { setTimeout(SydEnergi.HideTooltip, 300); });
	}

	this.Tooltips();
}

SydEnergi.ShowTooltip = function (tooltipContent, cursorPosition) {
	var tooltipHTML = "<div class=\"tooltipPopup customPopup\"><div class=\"corner leftTop\"></div><div class=\"corner rightTop\"></div><div class=\"arrow\"></div><div class=\"topLn\"><div class=\"bottomLn\"><div class=\"rightBorder\"><div class=\"leftBorder\"><div class=\"content\">";
	tooltipHTML += tooltipContent;
	tooltipHTML += "</div></div></div></div></div><div class=\"corner leftBottom\"></div><div class=\"corner rightBottom\"></div></div>";
	jQuery("body").append(tooltipHTML);
	jQuery(".tooltipPopup").css({ "top": cursorPosition.pageY + "px", "left": cursorPosition.pageX + "px" });
	jQuery(".tooltipPopup").show();
}

SydEnergi.HideTooltip = function () {
	jQuery(".tooltipPopup").remove();
}

SydEnergi.DigitalTV = function () {

	var amountChannelsToShow = 4;

	this.DigitalTV = function () {
		Channels(".package .channels");
	}

	var Channels = function (selector) {
		jQuery(selector).each(function () {
			jQuery(this).find("li:lt(" + amountChannelsToShow + ")").css("display", "inline");
			if (jQuery(this).find("li").length > amountChannelsToShow) {
				jQuery(this).next(".more").show();
			}
		});

		//see more functionality
		jQuery(selector).parents(".package").find("dd.more a").click(function () {
			jQuery(this).parent().hide();
			jQuery(this).parent().prev(".channels").find("li").css("display", "inline");
			return false;
		});
	}

	this.DigitalTV();
}

SydEnergi.Logout = function (selector) {
	/// <summary>logout functionality</summary> 
	jQuery(selector + " .submit").click(function () {
		SydEnergi.SetCookie("isShowRelocateTypes", "0");
	});
}

SydEnergi.VideoDisplay = function () {
	
	jQuery("div.image a.video").fancybox({
		'hideOnContentClick': false,
		'centerOnScroll': true,
		'scrolling': 'no',
		//'height': '530',
		'autoScale': true
	});

}

SydEnergi.CufonReplace = function () {
	/// <summary>cufon functionality</summary> 
	Cufon.replace('ul.custom dt');
}

SydEnergi.UIDatepicker = function (selector) {

	if (!selector) {
		selector = ".dateField";
	}

	jQuery(selector).datepicker({
		firstDay: 1,
		showOtherMonths: true,
		rangeSelect: true,
		minDate: -30, //restriction on picking date more than 30 days backwards from current date
		dateFormat:'dd-mm-yy'
		//maxDate: '+1y'
	});
}

SydEnergi.UIDatepickerRestrict = function (selector, excludeSelector) {

	if (!selector) {
		selector = ".dateFieldRestricted";
    }
    if (!excludeSelector)
    {
        excludeSelector = "";
    }

	jQuery(selector).not(excludeSelector).each(function () {
		var me = jQuery(this);

		// Find the RangeValidator using the convention for maming of a rangevalidator ... so replace uiTxt with uiRv in the name of this textbox
		// postback variable and use min/max date value for datepicker
		var rangeValidator = eval(me.attr('id').replace('uiTxt', 'uiRv'));
		if (typeof (rangeValidator) !== 'undefined') {

			var dateParts = rangeValidator.minimumvalue.split('/');
			var mindate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
			dateParts = rangeValidator.maximumvalue.split('/');
			var maxdate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);

			me.datepicker("option", "minDate", mindate);
			me.datepicker("option", "maxDate", maxdate);
		}
	});
}

SydEnergi.SpeedTest = function (selector) {
	/// <summary>SpeedTest popup</summary>

	// popup box
	var pnlPopupBox = jQuery(".speedTestPopupBox");
	var speedTestPopup = jQuery(".runSpeedTest");
	var btnClosePopup = jQuery(".closePopup");

	if (pnlPopupBox.length && speedTestPopup.length) {
		speedTestPopup.fancybox({
			'centerOnScroll': true,
			'scrolling': 'no',
			//'height': '530',
			'autoScale': true
		});
		btnClosePopup.click(function () {
			jQuery.fancybox.close();
			return false;
		});
	}
}

SydEnergi.WholeBoxLink = function (selector) {
	/// <summary>make whole box clickable</summary> 
	var boxWrapper = jQuery(selector);
	boxWrapper.each(function () {
		var linkCurrentBox = jQuery(this).find("a.linkBox");
		if (jQuery.browser.msie && jQuery.browser.version == 6) {
			linkCurrentBox.height(linkCurrentBox.parents(selector).height());
		}
		linkCurrentBox.hover(function () {
			jQuery(this).parents(selector).addClass("hovered");
		});
		linkCurrentBox.mouseout(function () {
			jQuery(this).parents(selector).removeClass("hovered");
		});
	});
}

SydEnergi.FormHints = function () {
	/// <summary>hints functionality for text inputs</summary> 
	this.FormHints = function () {
		var lblTitles = jQuery(".txtInput label");
		var txtInputs = jQuery(".txtInput input[type='text']");

		lblTitles.click(function () {
			jQuery(this).hide();
			jQuery(this).parents(".txtInput").find("input").focus();
		});
		txtInputs.blur(function () {
			if (!jQuery.trim(jQuery(this).val())) {
				jQuery(this).parents(".txtInput").find("label").show();
			}
		});
		txtInputs.focus(function () {
			jQuery(this).parents(".txtInput").find("label").hide();
		});
		txtInputs.each(function () {
			if (jQuery.trim(jQuery(this).val())) {
				jQuery(this).parents(".txtInput").find("label").hide();
			}
		});
	}

	this.FormHints();
}

SydEnergi.WFMFix = function () {
	/// <summary>webforms for marketers fixes</summary> 
	this.WFMFix = function () {
		jQuery(".scfSubmitButtonBorder").each(function () {
			jQuery(this).addClass('btnWrapper').append("<span></span>");
		});

		jQuery(".scfForm .scfRequired, .scfForm .scfValidatorRequired").each(function () {
			var currWrapperBox = jQuery(this).parent("div");
			var currLabel = currWrapperBox.find("label");
			var currLabelText = currLabel.text();
			if (jQuery(this).hasClass("scfValidatorRequired")) {
				currLabel.append("<span style='color: red'>*</span>");
			}
			else {
				currLabel.text(currLabelText + "*");
			}
			
			jQuery(this).remove();
		});

	}

	this.WFMFix();
}

SydEnergi.EvenBoxesFix = function (selector, isCheckVisibility) {
	/// <summary>aligning all boxes by two per row</summary> 
	/// <summary>isCheckVisibility - if true working only with visible boxes</summary> 
	
	if (!jQuery(selector).length) {
		return;
	}

	this.EvenBoxesFix = function () {
		if (isCheckVisibility) {
			jQuery(selector + ":visible").each(function (pos) {
				if (pos % 2 == 1) {
					jQuery(this).addClass("even").after("<div class=\"clear\"></div>");
				}
			})
		}
		else {
			jQuery(selector + ":odd").each(function () {
				jQuery(this).addClass("even").after("<div class=\"clear\"></div>");
			})
			jQuery(selector).show();
		}
	}

	this.EvenBoxesFix();

}

SydEnergi.Meter = function (selector) {
	/// <summary>meter wizard functionality</summary>
	this.Meter = function () {
		jQuery(selector).each(function (pos) {
			sliderWork(jQuery(this), (pos == jQuery(selector).length - 1));
		});

		GenerateProductsArray();
	}

	var GenerateProductsArray = function () {
		jQuery("#content .recommend").each(function () {
			var productId = jQuery(this).find(".productId").text();
			jQuery(this).attr("id", "id" + productId.substr(1, productId.length - 2));
		});

	}
	var sliderWork = function (currSlider, isLast) {

		var sliderLinks = currSlider.parents(".meterBox").find("a.pic");
		var currSliderBox = currSlider.parents(".meterBox");
		var intervalsAmount = parseInt(currSliderBox.find('.intervalsAmount').text());

		var rangeMin = 1;
		var rangeMax = intervalsAmount;
		var currValue = rangeMin;

		currSlider.slider({
			min: rangeMin,
			max: rangeMax,
			value: currValue,
			change: function (event, ui) {
				updateLegend(currSlider, true);
			}
		});

		generateLegend(currSlider, intervalsAmount);
		updateLegend(currSlider, isLast);

		sliderLinks.click(function () {
			return false;
		});
	}

	var GetProductsIds = function () {
		var allSliders = jQuery(selector);

		//var mwParam = "sliders=";

		var mwSliders = "";
		allSliders.each(function () {
			var currSliderBox = jQuery(this).parents(".meterBox");
			var currSliderId = currSliderBox.find(".meterId").text();
			var currSliderClass = currSliderBox.find("ul.legend li.current").attr("class");
			var currSliderValue = currSliderClass.match("[0-9]+");
			mwSliders += currSliderId + "|" + currSliderValue + ";";
			//mwParam += currSliderId + "|" + currSliderValue + ";";
		});
		mwSliders = mwSliders.substr(0, mwSliders.length - 1);

		var soapMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
		soapMessage += "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">";
		soapMessage += "<soap12:Body>";
		soapMessage += "<GetSelectedProductList xmlns=\"http://tempuri.org/\">";
		soapMessage += "<sliders>" + mwSliders + "</sliders>";
		soapMessage += "</GetSelectedProductList>";
		soapMessage += "</soap12:Body>";
		soapMessage += "</soap12:Envelope>";


		//mwParam = mwParam.substr(0, mwParam.length - 1);
		mwUrl = "/Services/productselector.asmx?op=GetSelectedProductList";


		jQuery.ajax({
			type: "POST",
			url: mwUrl,
			data: soapMessage,
			contentType: "text/xml; charset=\"utf-8\"",
			complete: HighlightProduct
		});
	}

	var HighlightProduct = function (xmlHttpRequest, status) {
		if (window.ActiveXObject) {
			var xml = new ActiveXObject('Microsoft.XMLDOM');
			xml.async = 'false';
			xml.loadXML(xmlHttpRequest.responseText);
		} else {
			var parser = new DOMParser();
			var xml = parser.parseFromString(xmlHttpRequest.responseText, 'text/xml');
		}
		

		productIdsStr = jQuery(xml).find("GetSelectedProductListResult").text();
		productIds = productIdsStr.split(";");
		jQuery("#content .recommend").removeClass("high").hide();

		for (i = 0; i < productIds.length; i++) {
			currentProductIds = productIds[i].split("|");
			var mainProductId = GetProductIdName(currentProductIds[0]);
			jQuery("#" + mainProductId).addClass("high").show();
			for (j = 1; j < currentProductIds.length; j++) {
				var relevantProductId = GetProductIdName(currentProductIds[j]);
				jQuery("#" + relevantProductId).show();
			}
		}

		jQuery("#content .recommend").removeClass("even");
		jQuery("#content .metersProducts .clear").remove();
		SydEnergi.EvenBoxesFix("#content .recommend", true);

	}
	var GetProductIdName = function (id) {
		var formattedId = id;
		formattedId = formattedId.substr(1, formattedId.length - 2);
		return ("id" + formattedId);
	}

	var updateLegend = function (currSlider, forceUpdate) {
		var currSliderVal = currSlider.slider("option", "value");
		var currSliderBox = currSlider.parents(".meterBox");
		jQuery(currSliderBox).find(".legend li").removeClass("current");
		jQuery(currSliderBox).find(".legend .value" + currSliderVal).addClass("current");

		if (forceUpdate) {
			setTimeout(GetProductsIds, 100);
		}
	}

	var generateLegend = function (currSlider, intervalsAmount) {
		var currSliderBox = jQuery(currSlider).parents(".meterBox");

		intervalsAmount -= 1;

		currSliderBox.find('.legend').width(currSlider.width());

		var j = 0;
		currSliderBox.find('.legend li').each(function () {
			jQuery(this).addClass('value' + (j + 1));
			jQuery(this).css('left', j * (100 / intervalsAmount) + "%");
			j++;
		});
	}

	this.Meter();
}

SydEnergi.GreenPower = function (selector) {
	/// <summary>green power box on "Tegn aftale" tab, My page</summary>
	
	var datepicker = new SydEnergi.Datepicker(".datepickerBox");
	var greenPowerBoxes = jQuery(selector);

	this.GreenPower = function () {
		greenPowerBoxes.each(function () {
			var chkIsShowAddInfo = jQuery(this).find("input[type='checkbox']");
			var addInfoBox = jQuery(this).find(".additionalInfo");

			chkIsShowAddInfo.click(function () {
				UpdatePanel(chkIsShowAddInfo, addInfoBox);
			});

			UpdatePanel(chkIsShowAddInfo, addInfoBox);

		});
	}

	var UpdatePanel = function (checkbox, addInfoBox) {
		if (checkbox.is(":checked")) {
			ShowAddInfoBox(addInfoBox);
		}
		else {
			HideAddInfoBox(addInfoBox);
		}
	}

	var ShowAddInfoBox = function (addInfoBox) {
		addInfoBox.slideDown("slow");
	}

	var HideAddInfoBox = function (addInfoBox) {
		addInfoBox.slideUp("slow");
		datepicker.HideAll();
	}


	this.GreenPower();
}

SydEnergi.Datepicker = function (selector)
{
    /// <summary>datepicker on the My page</summary>

    var datepickerBoxes = jQuery(selector);

    this.Datepicker = function ()
    {
        datepickerBoxes.each(function ()
        {
            var datepickerBox = jQuery(this)
            var lnkDates = datepickerBox.find('a');
            var calendarBox = datepickerBox.next('a.datepicker');
            var hdnSelectedDate = calendarBox.find('>input[type=hidden]').EnsureMatches();
            var btnHiddenSubmitNoValidation = calendarBox.next('input[type=submit]').EnsureMatches();
            var dosubmit = btnHiddenSubmitNoValidation.attr("class") != "nosubmit";

            calendarBox.click(function ()
            {
                ShowDatepicker(datepickerBox);
                return false;
            });

            lnkDates.click(function ()
            {
                SelectDate(jQuery(this), calendarBox, hdnSelectedDate);
                if (dosubmit)
                {
                    setTimeout(function () { btnHiddenSubmitNoValidation.click(); }, 0);
                }
                return false;
            });
        })
    }

    this.HideAll = function ()
    {
        datepickerBoxes.hide();
    }

    var HideDatepicker = function (datepickerBox)
    {
        datepickerBox.hide();
    }

    var ShowDatepicker = function (datepickerBox)
    {
        datepickerBox.show();
    }

    var SelectDate = function (clickedLink, calendarBox, hdnSelectedDate)
    {
        var selectedDate = clickedLink.text();

        var reg = /(\d+)\.\s(\S+)/;
        var arr = reg.exec(selectedDate);

        selectedDay = arr[1];
        selectedMonth = arr[2];
        selectedYear = clickedLink.parents("dl.yearToSelect").find("dt").text();

        dateString = "<em>" + selectedMonth.substring(0, 3) + "</em><span>" + selectedDay + "</span><em>" + selectedYear + "</em>";

        calendarBox.find(">span:first").html(dateString);

        hdnSelectedDate.attr("value", ("" + selectedMonth + "-" + selectedYear));

        HideDatepicker(clickedLink.parents(selector));
    }

    this.Datepicker();
}

SydEnergi.MyPage = function (selector) {
	
	// If we are not on My Page then return and do nothing else
	var myPage = jQuery(selector);
	if (myPage.length < 1)
		return;

	jQuery('a.fancybox.showreceipt')
		.each(function () {
			var fancyboxLink = jQuery(this);

			fancyboxLink
				.fancybox({
					'centerOnScroll': false,
					'scrolling': 'no',
					'height': '99%',
					'autoScale': false,
					'autoDimensions': true,
					'width': 669,
					'modal': true,
					onStart: function () { setTimeout(function () { window.scrollTo(0, 0); }, 1); },
					onComplete: function () {
						var showReceipt = jQuery('#showReceipt');
						var eventCategory = jQuery('#gaEventCategory').val();
						
						showReceipt.find(".ModalPopUpPrint").click(function (event) { event.preventDefault(); trackPrintReceiptEvent(eventCategory); showReceipt.jqprint({ printContainer: false, operaSupport: true }); });

						showReceipt.find(".ModalPopUpDoSendMailReceipt").click(function (event) { event.preventDefault(); trackShowEmailFormEvent(eventCategory); showReceipt.find('#sendEmailReceiptFormDiv').show(); });
						showReceipt.find(".ModalPopUpCancelSendMailReceipt").click(function (event) { event.preventDefault(); showReceipt.find('#sendEmailReceiptFormDiv').hide(); });
						showReceipt.find(".ModalPopUpSendMailReceipt").click(function (event) {
							event.preventDefault();
							fancyboxLink.parent().find('input[id$=_uiHdnEmailSuccess]').val(showReceipt.find('input[id$=_uiTxtEmailSuccess]').val());
							fancyboxLink.parent().find('input.ModalPopUpSendMailReceipt').click();
						}); // this will trigger uiLbtnSendMailReceipt

						showReceipt.find(".close").click(function (event) { event.preventDefault(); jQuery.fancybox.close(); });
					},
					onClosed: function () { fancyboxLink.parent().find('input.clickonclose').click(); } // this will trigger uiLbtnCloseModalPopUp
				})
				.trigger('click');
		});

	// Add the gif loaders used when doing partial postbacks in the update panel
	SydEnergi.MyPage.ElementsWithLoaders = myPage.find('div.accountBox, div.tabBox').not('.noloader');
	myPage.find('select.drop').change(function () { SydEnergi.MyPage.ElementsWithLoaders.append('<div class="loading"><div></div></div>'); });
	myPage.find('a.action, input.action').click(function () { SydEnergi.MyPage.ElementsWithLoaders.append('<div class="loading"><div></div></div>'); });

	// Tab handling
	var uiHdnCurTab = myPage.find('input[id$=_uiHdnCurTab]');
	var allTabs = myPage.find('.tab');

	SydEnergi.MyPage.ChangeTab = function (tabid) {

		if (typeof (tabid) === 'undefined' || tabid == '#')
			return;

		var tab = myPage.find(tabid);
		if (tab.length > 0 && !tab.hasClass('restricted')) {
			var curTabButton =
				jQuery('.tabWrapper')
					.find('ul:first')
						.find('li.selected')
						.removeClass('selected')
					.end()
						.find('li:has(>a.' + tabid.substr(1, tabid.length - 1) + ')')
						.addClass('selected');

			allTabs.css('display', 'none');
			tab.css('display', 'block');

			uiHdnCurTab.val(tab.attr('id'));
			uiHdnCurTab.change(); // this way we can add an onchange event to trigger stuff when

			if (typeof (SydEnergi.MyPage.SuppressNextTabTracking) !== "undefined" && SydEnergi.MyPage.SuppressNextTabTracking == true) {
				SydEnergi.MyPage.SuppressNextTabTracking = false;
			}
			else {
				trackPageview(decodeURI(document.location.pathname.replace('.aspx', '') + '/' + curTabButton.find('a').text()).replace(/\s/g, '+').toLowerCase());
			}
		}
	}

	// Show initial tab (value may be empty but that is handled in ChangeTab)
	SydEnergi.MyPage.ChangeTab('#' + uiHdnCurTab.val());

	// Add click event to all tab page tabs (the anchors in the ul)
	myPage.find('.tabWrapper ul.tabs li:not(.restricted) a').click(function (event) { event.preventDefault(); if (!jQuery(this).parent().hasClass('selected')) { SydEnergi.MyPage.ChangeTab('#' + jQuery(this).attr('class')); } });

	// Additional info box
	var lnkDetails = myPage.find('.accountBox a.details');
	var hdnIsDetailsOpen = lnkDetails.next('input[type=hidden]');
	var pnlDetails = myPage.find('.accountBox .moreInfo');
	var lnkCloseMoreInfo = myPage.find('.accountBox .moreInfo a.closeMoreInfo');
	
	//SydEnergi.MyPage.ShowDetailsText = SydEnergi.MyPage.ShowDetailsText || "Se oplysninger default";
	//SydEnergi.MyPage.HideDetailsText = SydEnergi.MyPage.HideDetailsText || "Skjul oplysninger default";

	function toggleDetails() {
	    if (hdnIsDetailsOpen.val() === 'false') {
	        pnlDetails.slideDown();
	        hdnIsDetailsOpen.val('true');
	        //lnkDetails.text(SydEnergi.MyPage.HideDetailsText);
	        lnkDetails.addClass('open')
	    }
	    else {
	        pnlDetails.slideUp();
	        hdnIsDetailsOpen.val('false');
	        //lnkDetails.text(SydEnergi.MyPage.ShowDetailsText);
	        lnkDetails.removeClass('open')
	    }
	    return false;
	}

    lnkDetails.click(toggleDetails);
    lnkCloseMoreInfo.click(toggleDetails); // This should only be visible for clicking when details are open ... so it will act as close always

    // Relocation
    SydEnergi.MyPage.Relocation();

	// Fiber lookup
	SydEnergi.MyPage.FiberLookup();

	// StatementsOfAccount tab
	SydEnergi.MyPage.StatementsOfAccount();

	// MeterReadings tab
	SydEnergi.MyPage.MeterReadings();

	if (SydEnergi.MyPage.RequestHandlersAdded != true) {
		SydEnergi.MyPage.RequestHandlersAdded = true;

		Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
			if (args.get_error() != undefined) {
				var errorMessage = SydEnergi.MyPage.DefaultErrorMessage;
				/*if (args.get_response().get_statusCode() == '200') {
				errorMessage = args.get_error().message.replace(/Sys\.WebForms\.PageRequestManagerServerErrorException: /gi, '');
				}
				else {
				// Error occurred somewhere other than the server page.
				errorMessage = 'Der er sket en uspecificeret fejl.';
				}*/
				jQuery('.tabWrapper,.particularsWrapper').hide();

				var myPageError = jQuery('#myPageError');
				myPageError.find('span.msg').html(errorMessage);
				myPageError.show();

				args.set_errorHandled(true);

				var counter = myPageError.find('#counter');
				var reloadWithCounterUpdate = function (secLeft) {
					if (secLeft < 1) {
						document.location = document.location;
						counter.html('');
					}
					else {
						counter.html(secLeft);
						var newSecLeft = secLeft - 1;
						setTimeout(function () { reloadWithCounterUpdate(newSecLeft); }, 1000);
					}
				}
				setTimeout(function () { reloadWithCounterUpdate(5); }, 1000);
			}

			jQuery(SydEnergi.MyPage.ScrollIntoView).each(function () {
				SydEnergi.MyPage.ScrollIntoView = null;
				jQuery('html,body').scrollTop(jQuery(this).offset().top - 50);
			});
		});
	};
}

SydEnergi.MyPage.Relocation = function () {

    jQuery('.accountBox .relocationTypes').each(function () {
        var pnlRelocateTypes = jQuery(this);
        //var txtShowRelocateTypes = { openState: "Fortryd meld flytning", closeState: "Meld flytning" };

        var lnkShowRelocateTypes = jQuery('.accountBox a.showRelocationTypes');
        lnkShowRelocateTypes.click(function () {
            if (lnkShowRelocateTypes.hasClass("restricted")) {
                return false;
            }
            if (pnlRelocateTypes.is(":visible")) {
                pnlRelocateTypes.slideUp();
                SydEnergi.SetCookie("isShowRelocateTypes", "0");
                //lnkShowRelocateTypes.text(txtShowRelocateTypes.closeState);
                lnkShowRelocateTypes.removeClass('open');
            }
            else {
                pnlRelocateTypes.slideDown();
                SydEnergi.SetCookie("isShowRelocateTypes", "1");
                //lnkShowRelocateTypes.text(txtShowRelocateTypes.openState);
                lnkShowRelocateTypes.addClass('open');
            }
            return false;
        });

        if (SydEnergi.GetCookie("isShowRelocateTypes") == "1") {
            //lnkShowRelocateTypes.text(txtShowRelocateTypes.openState);
            pnlRelocateTypes.show();
            lnkShowRelocateTypes.addClass('open');
        }
        else {
            //lnkShowRelocateTypes.text(txtShowRelocateTypes.closeState);
            lnkShowRelocateTypes.removeClass('open');
        }

        pnlRelocateTypes
            .find('.tt:not(:has(.tooltipContent:empty))')
		    .hover(function (event) {
		        var me = jQuery(this);
		        setTimeout(function () { SydEnergi.ShowTooltip(me.find('.tooltipContent').html(), { pageX: me.offset().left - 15 + me.outerWidth(), pageY: me.offset().top + me.outerHeight() / 2 }); }, 300);
		    },
			function () {
			    setTimeout(SydEnergi.HideTooltip, 300);
			});

        SydEnergi.UIDatepicker('.accountBox .relocationTypes input.dateField');
        SydEnergi.UIDatepickerRestrict('.accountBox .relocationTypes input.dateField', 'input[id$=_uiTxtMovingOutDate]');

        var movementTypesName = "movementTypes";
        jQuery("input[name='" + movementTypesName + "']:checked").each(function () {
            jQuery("." + jQuery(this).attr("id") + "Box").show();
        });
        jQuery("input[name='" + movementTypesName + "']").click(function () {
            jQuery("." + movementTypesName + "Box").hide();
            jQuery("." + jQuery(this).attr("id") + "Box").show();
        });

    });

    jQuery('.relocationcontainer').each(function () {
        var me = jQuery(this),
            fiberlookupcontent = me.find('.fiberlookupcontent');
        fiberlookupcontent.html("");
        me.find('input[id$=_uiTxtStreet], input[id$=_uiTxtBuildingNumber], input[id$=_uiTxtPostNumber]')
            .blur(function () {

                // Abort the current call if there is one
                var timeout = fiberlookupcontent.data('timeout')
                if (typeof (timeout) !== 'undefined') {
                    clearTimeout(timeout);
                    fiberlookupcontent.removeData('timeout');
                }

                var jqXHR = fiberlookupcontent.data('jqXHR');
                if (typeof (jqXHR) !== 'undefined') {
                    jqXHR.abort();
                    fiberlookupcontent.removeData('jqXHR');
                }

                var myView = me,
                    streetBoxValue = myView.find('input[id$=_uiTxtStreet]').val(),
                    streetNumberBoxValue = myView.find('input[id$=_uiTxtBuildingNumber]').val(),
                    zipCodeBoxValue = myView.find('input[id$=_uiTxtPostNumber]').val(),
                    newRelocationFiberLookup = myView.find('.fiberlookupcontent'),
                    paramsDiv = newRelocationFiberLookup.prev('.fiberlookupcontentparameters'),
                    streetHdn = paramsDiv.children('input[id$=_uiHdnStreet]'),
                    streetNumberHdn = paramsDiv.children('input[id$=_uiHdnStreetNumber]'),
                    zipCodeHdn = paramsDiv.children('input[id$=_uiHdnZipCode]'),
                    changed = streetBoxValue !== streetHdn.val() || streetNumberBoxValue !== streetNumberHdn.val() || zipCodeBoxValue !== zipCodeHdn.val();

                // Set the new "before values" used to test for "changed"
                streetHdn.val(streetBoxValue);
                streetNumberHdn.val(streetNumberBoxValue);
                zipCodeHdn.val(zipCodeBoxValue);

                if (changed && (streetBoxValue != "" && streetNumberBoxValue != "" && zipCodeBoxValue != "")) {
                    paramsDiv.children('input[id$=_uiHdnBlockLoading]').val('false');
                    paramsDiv.children('input[id$=_uiHdnContentSet]').val('false');

                    jQuery('.relocationcontainer').find('.fiberlookupcontent').next().find('#uiLblResultScenarioMessage').html("");
                    SydEnergi.MyPage.FiberLookup(fiberlookupcontent);
                }
            });
    });

}

SydEnergi.MyPage.FiberLookup = function (fiberlookupcontent)
{

    if (typeof (fiberlookupcontent) !== 'object')
        fiberlookupcontent = jQuery('.fiberlookupcontent');

    fiberlookupcontent.each(function ()
    {

        var flthis = jQuery(this),
            paramsDiv = flthis.prev('.fiberlookupcontentparameters', this),
            paramTimePeriod = paramsDiv.children('input[id$=_uiHdnTimePeriod]', this).val(),
            paramStreet = paramsDiv.children('input[id$=_uiHdnStreet]', this).val(),
            paramStreetNumber = paramsDiv.children('input[id$=_uiHdnStreetNumber]', this).val(),
            paramZipCode = paramsDiv.children('input[id$=_uiHdnZipCode]', this).val(),
            paramFlowType = paramsDiv.children('input[id$=_uiHdnFlowType]', this).val(),
            uiHdnContentSet = paramsDiv.children('input[id$=_uiHdnContentSet]', this),
            uiHdnBlockLoading = paramsDiv.children('input[id$=_uiHdnBlockLoading]', this);

        function onGetContentSuccess(result)
        {

            flthis.removeData('timeout');
            flthis.removeData('jqXHR');

            if (result.d === 'lookuprunning')
            {
                flthis.data('timeout', setTimeout(function ()
                {
                    flthis.data('jqXHR', GetFiberLookupContent(onGetContentSuccess, onGetContentError, paramStreet, paramStreetNumber, paramZipCode, paramFlowType));
                }, paramTimePeriod));
            }
            else
            {
                flthis.hide().html(result.d);
                var nextLocationFiberLookup = jQuery('.relocationcontainer').find('.fiberlookupcontent');
                var notNextFiberLookup = flthis.not(nextLocationFiberLookup);

                notNextFiberLookup.slideUp(function ()
                {
                    notNextFiberLookup.slideDown(800);
                });

                uiHdnContentSet.val('true');

                showFiberLookupScenarioMessageAndSetCheckBox();
            }
        }

        function showFiberLookupScenarioMessageAndSetCheckBox()
        {

            var relocationContainer = jQuery('.relocationcontainer');
            var currentFiberLookup = jQuery('.accountBox').find('.col').find('.fiberlookupcontent');
            var nextLocationFiberLookup = relocationContainer.find('.fiberlookupcontent');

            if (!nextLocationFiberLookup.length)
            {
                return;
            }

            if (currentFiberLookup.prev('.fiberlookupcontentparameters').children('input[id$=_uiHdnContentSet]').val() != 'true')
            {
                return;
            }

            if (nextLocationFiberLookup.prev('.fiberlookupcontentparameters').children('input[id$=_uiHdnContentSet]').val() != 'true')
            {
                return;
            }

            var hasFiber = currentFiberLookup.children('.alreadyHasFiber').val() == 'true';
            var canGetIt = nextLocationFiberLookup.children('.canGetFiber').val() == 'true';

            var addressString = paramStreet + ", " + paramStreetNumber + ", " + paramZipCode;
            var messageLableId = "#uiLbl" + (hasFiber ? "Yes" : "No") + (canGetIt ? "Yes" : "No");
            var messageToShow = jQuery(messageLableId).html().replace('{address}', addressString);
            nextLocationFiberLookup.next().find('#uiLblResultScenarioMessage').html(messageToShow);

            //checkbox
            var checkBoxArea = jQuery('#uiFiberCheckboxArea');
            //            checkBoxArea.find('input[type=checkbox]').attr('checked', hasFiber && canGetIt);
            //            if (hasFiber && canGetIt)
            //            {
            //                checkBoxArea.hide();
            //            }
            //            else
            //            {
            //                var checkboxLabel = (!hasFiber && canGetIt) ? jQuery('#uiLblUsecCanGetFiberCheckbox').html() : jQuery('#uiLblUsecCanNotGetFiberCheckbox').html();
            //                jQuery('label[for$=_uiCbDoYouHaveFiber]').html(checkboxLabel);
            //                jQuery('#uiFiberCheckboxArea').show();
            //            }
            
            relocationContainer.find('input[id$=_uiHdnExtraFiberText]').val(jQuery('<div/>').text(messageToShow).html()); // Html ecaping it ... a neat hack
            relocationContainer.find('input[id$=_uiHdnHasFiberAtCurrentAddress]').val(hasFiber);
            relocationContainer.find('input[id$=uiHdnCanGetFiber]').val(canGetIt);

            //change request: always hide checkbox and set it true in case of +/- and -/-
            checkBoxArea.hide();
            checkBoxArea.find('input[type=checkbox]').attr('checked', canGetIt);
            if (!canGetIt)
            {
                nextLocationFiberLookup.next().find('#uiLblResultScenarioMessage').hide();
            }
            else
            {
                nextLocationFiberLookup.next().find('#uiLblResultScenarioMessage').show();
            }
        }

        function onGetContentError(jqXHR, textStatus, errorThrown)
        {

            flthis.removeData('timeout');
            flthis.removeData('jqXHR');

            var err = jQuery.parseJSON(jqXHR.responseText);
            flthis.html('Der er desværre sket en fejl.<br />Adressen kan ikke slåes op...');
        }

        if (uiHdnContentSet.val() != 'true' && uiHdnBlockLoading.val() != 'true')
        {

            jQuery('#uiFiberCheckboxArea').hide();
            flthis.html('Undersøger om du kan få fiber...').show();

            // Call the js function generated by the user control
            flthis.data('jqXHR', GetFiberLookupContent(onGetContentSuccess, onGetContentError, paramStreet, paramStreetNumber, paramZipCode, paramFlowType));
        }
    });
}

SydEnergi.MyPage.StatementsOfAccount = function () {
    jQuery('#sekontoudtog').each(function () {
        var tabPage = jQuery(this);
        var uiHdnSelectedBillType = tabPage.find('input[id$=_uiHdnSelectedBillType]');
        var lnks = jQuery(this).find('.billTypeSwitcher a').click(function (e) {
            e.preventDefault();
            var me = jQuery(this);
            var curLnkId = me.attr('id');
            uiHdnSelectedBillType.val(curLnkId);
            var DivIdToSetVisible = curLnkId == 'billTypeEnergi' ? 'energiBills' : 'mediaBills';
            var DivIdToHide = curLnkId == 'billTypeEnergi' ? 'mediaBills' : 'energiBills';
            jQuery('#' + DivIdToHide).hide();
            jQuery('#' + DivIdToSetVisible).show();
            me.attr('class', 'btn selected');
            lnks.not(me).attr('class', 'btn');
        });

        jQuery('#' + uiHdnSelectedBillType.val()).click();

        jQuery('a.fancybox.showBill')
		    .each(function () {
		        var fancyboxLink = jQuery(this);
		        fancyboxLink
				    .fancybox({
				        'href': '#' + fancyboxLink.attr('rel'),
				        'centerOnScroll': true,
				        'scrolling': 'no',
				        'height': '99%',
				        'autoScale': false,
				        'autoDimensions': true,
				        'modal': true,
				        'titleShow': false,
				        'showNavArrows': false,
				        onStart: function () {
				            var fbox = jQuery(this.href);
				            fbox.find(' .loading').show();
				            var row = fancyboxLink.parents('tr:first');
				            fbox.find('h3 span').text(row.find('td.type').text().toLowerCase() + ' - ' + row.find('td.regNum').text());
				        },
				        onComplete: function () {
				            var showBill = jQuery(this.href);
				            showBill.find(".close").click(function (event) { event.preventDefault(); jQuery.fancybox.close(); });

				            var eventAction = jQuery(this.href + 'GaEventAction').val();
				            var billType = fancyboxLink.parents('tr:first').find('td.type').text();

				            var iframe = jQuery(this.href + ' iframe').show();
				            var iframeElem = iframe.get(0);
				            var href = fancyboxLink.attr('href');
				            iframe.attr('src', href);

				            iframe.height(showBill.outerHeight({ margin: true }) - showBill.find('h3:first').outerHeight({ margin: true }) - 5);

				            showBill
                                .find('a[target=_blank]')
                                .attr('href', href)
                                .click(function () {
                                    trackBillViewed(eventAction, billType);
                                });

				            function waitForIFrame() {
				                try {
				                    var doc = document.getElementById(iframe.attr('id')).contentDocument || document.frames[iframe.attr('id')].document; // This line will throw error in IE when content is loaded but only then

				                    if (!doc) { // Seems to be a non IE, FF or Chrome (a weird) browser so just track it
				                        trackBillViewed(eventAction, billType);
				                        showBill.find('.loading').hide();
				                        return;
				                    }

				                    if (doc.URL !== document.location.protocol + '//' + document.location.host + href) { // This is how we identify the pdf is loaded in FF and Chrome ... URL is set when it is loaded fully
				                        setTimeout(waitForIFrame, 200);
				                    }
				                    else {
				                        trackBillViewed(eventAction, billType);
				                        showBill.find('.loading').hide();
				                    }
				                }
				                catch (err) {
				                    if (err.name === 'TypeError') { // This happens in IE when the error is thrown at top of waitForIFrame when the pdf is fully loaded
				                        trackBillViewed(eventAction, billType);
				                        showBill.find('.loading').hide();
				                    }
				                }
				            }
				            waitForIFrame();
				        },
				        onCleanup: function () {
				            jQuery(this.href + ' iframe').attr('src', '');
				        }
				    });
		    });
    });
}

SydEnergi.MyPage.MeterReadings = function () {
	jQuery('#afleveraflaesning').each(function () {
		var tabPage = jQuery(this);
		var curTabButton = jQuery('.tabWrapper ul:first li:has(>a.' + tabPage.attr('id') + ')');

		tabPage.find(".meterField .selectWrapper").each(function () {
			if (jQuery(this).find('select').length) {
				jQuery(this).show();
			}
		});

		SydEnergi.UIDatepicker('#afleveraflaesning input.dateField');
		SydEnergi.UIDatepickerRestrict('#afleveraflaesning input.dateField','');

		// --- Water ---
		// Show and hide water "Aflæsning af vand" div tags (send/confirm send)
		var divRegisterReadingWater = jQuery('#RegisterReadingWater');
		var divRegisterReadingWaterConfirm = jQuery('#RegisterReadingWaterConfirm');

		// Unhide confirm div and hide initial send div
		divRegisterReadingWater.find("#uiBtnSubmitReadingWater").click(function (e) {
			e.preventDefault();

			//Client side validation. MeterReadingsWater is validationgroup id
			if (!Page_ClientValidate('MeterReadingsWater'))
				return;

			// Read the water values; "ReadingDate", "MeterNumber", "Reading" and "MeterNumber"
			var readingDateValue = divRegisterReadingWater.find('input[id$=_uiTxtDateReadingWater]').val();
			var meterNumberValue = divRegisterReadingWater.find('span[id$=_uiLblMeterNoSelectWater],select[id$=_uiDdlMeterWater] > option:selected').first().text();
			var readingValue = divRegisterReadingWater.find('input[id$=_uiTxtReadingWater]').val();

			// Set values in spans within confirm div
			divRegisterReadingWaterConfirm.find("td.dateReading").text(readingDateValue);
			divRegisterReadingWaterConfirm.find("td.meterValue").text(meterNumberValue);
			divRegisterReadingWaterConfirm.find("td.readingValue").text(readingValue);
			
			// Hide and show water divs
			divRegisterReadingWaterConfirm.show();
			divRegisterReadingWater.hide();

			// Do tracking
			trackPageview(decodeURI(document.location.pathname.replace('.aspx', '') + '/' + curTabButton.find('a').text()).replace(/\s/g, '+').toLowerCase() + '/vand/step2');
		});

		// Hide confirm div and reshow send div
		divRegisterReadingWaterConfirm.find("#uiLnkEditReadingWater").click(function (e) {
			e.preventDefault();
			divRegisterReadingWater.show();
			divRegisterReadingWaterConfirm.hide();

			// Do tracking
			trackPageview(decodeURI(document.location.pathname.replace('.aspx', '') + '/' + curTabButton.find('a').text()).replace(/\s/g, '+').toLowerCase() + '/vand/back');
		});

		// --- Heating ---
		// Show and hide heating "Aflæsning af fjernvarme" div tags (send/confirm send)
		var divRegisterReadingHeating = jQuery('#RegisterReadingHeating');
		var divRegisterReadingHeatingConfirm = jQuery('#RegisterReadingHeatingConfirm');

		// Unhide confirm div and hide initial send div
		divRegisterReadingHeating.find("#uiBtnSubmitReadingHeating").click(function (e) {
			e.preventDefault();

			if (!Page_ClientValidate('MeterReadingsHeating'))
				return;

			//Read the values; "ReadingDate", "MeterNumber", "Reading" and "MeterNumber"
			var readingDateValue = divRegisterReadingHeating.find('input[id$=_uiTxtDateReadingHeating]').val();
			var meterNumberValue = divRegisterReadingHeating.find('span[id$=_uiLblMeterNoSelectHeating],select[id$=_uiDdlMeterHeating] > option:selected').first().text();
			var readingValue = divRegisterReadingHeating.find('input[id$=_uiTxtReadingHeating]').val();

			//Set values in spans within confirm div
			divRegisterReadingHeatingConfirm.find("td.dateReading").text(readingDateValue);
			divRegisterReadingHeatingConfirm.find("td.meterValue").text(meterNumberValue);
			divRegisterReadingHeatingConfirm.find("td.readingValue").text(readingValue);

			//Hide and show heating divs
			divRegisterReadingHeatingConfirm.show();
			divRegisterReadingHeating.hide();

			// Do tracking
			trackPageview(decodeURI(document.location.pathname.replace('.aspx', '') + '/' + curTabButton.find('a').text()).replace(/\s/g, '+').toLowerCase() + '/varme/step2');
		});

		// Hide confirm div and reshow send div
		divRegisterReadingHeatingConfirm.find("#uiLnkEditReadingHeating").click(function (e) {
			e.preventDefault();
			divRegisterReadingHeating.show();
			divRegisterReadingHeatingConfirm.hide();

			// Do tracking
			trackPageview(decodeURI(document.location.pathname.replace('.aspx', '') + '/' + curTabButton.find('a').text()).replace(/\s/g, '+').toLowerCase() + '/varme/back');
		});
	});
}

SydEnergi.MyPage.IframeGaSrcChanger = function (iframeId, trackingId, linkerUrl, tabid) {
	if (typeof (_gat) === 'object') {

		window.clearTimeout(eval('SydEnergi.MyPage.IframeGaSrcChanger.' + iframeId + 'Hndl'));

		var uiHdnCurTab = jQuery('input[id$=_uiHdnCurTab]');
		var changeSrc = function () {
			if (uiHdnCurTab.val() == tabid) {
				jQuery('#' + iframeId).attr('src', _gat._getTrackerByName()._getLinkerUrl(linkerUrl));
			}
			else {
				uiHdnCurTab.one('change', changeSrc);
			}
		}
		changeSrc();
	}
	else {
		var hndl = eval('SydEnergi.MyPage.IframeGaSrcChanger.' + iframeId + 'Hndl');
		hndl = window.setTimeout(function () { SydEnergi.MyPage.IframeGaSrcChanger(iframeId, trackingId, linkerUrl, tabid); }, 100);
	}
}

SydEnergi.MyPage.AddressDataView = {}
SydEnergi.MyPage.AddressDataView.ValidatePhonesAtLeastOne = function (source, args) {

	args.IsValid = false;

	var idArr = eval('SydEnergi.MyPage.AddressDataView.ValidatePhonesAtLeastOne.phoneTextBoxIds_' + source.validationGroup)

	if (typeof (idArr) === 'undefined' || idArr.length == 0) {
		args.IsValid = true;
		return;
	}

	var valsConcat = '';
	jQuery.each(idArr, function (index, value) {
		valsConcat += jQuery('#' + value).val();
	});

	args.IsValid = valsConcat.length > 0;
}

SydEnergi.LoginBox = function (selector) {
	/// <summary>Login box</summary>
	var loginBox = jQuery(selector);
	if (!loginBox.length) {
		return;
	}

    var hideTopNav = jQuery("input[id$=_uiHdnHideTopNav]");
    if ("true" === hideTopNav.val())
    {
//        jQuery("#topNav").hide();
//        jQuery("#footer").hide();

    }

	var lblTitles = jQuery(".loginBox label.hint").EnsureMatches();
	var txtInputs = jQuery(".loginBox input[type='text'], .loginBox input[type='password']").EnsureMatches();

	if (jQuery("#service a.account").length) {
		var lnkLogin = jQuery("#service a.account").EnsureMatches();
		var btnCloseBox = jQuery("#service .loginBox a.close").EnsureMatches();

		lnkLogin.click(function () {
			loginBox.toggle();
			loginBox.animate({ opacity: 1 }, 300);
			return false;
		});
		btnCloseBox.click(function () {
			loginBox.animate({ opacity: 0 }, 300, function () {
				loginBox.toggle();
			});
			return false;
		});
	}



	lblTitles.click(function () {
		jQuery(this).hide();
		jQuery(this).parent().next("dd").find("input").focus();
	});
	txtInputs.blur(function () {
		if (!jQuery.trim(jQuery(this).val())) {

			jQuery(this).parents("dd").prev("dt").find("label").show();
		}
	});
	txtInputs.focus(function () {
		jQuery(this).parents("dd").prev("dt").find("label").hide();
	});
	txtInputs.each(function () {
		if (jQuery.trim(jQuery(this).val())) {
			jQuery(this).parents("dd").prev("dt").find("label").hide();
		}
	});

}

SydEnergi.MyAccount = function (selector) {
	/// <summary>Handles the 'My account' dropdown menu in the sidebar.</summary> 

	var container = jQuery(selector);
	if (!container.length)
		return;

	var button = container.find("a.toggle").EnsureMatches();
	var icon = button.find(".toggleIcon").EnsureMatches();
	var accountLinks = container.find("div.sub").EnsureMatches();

	this.MyAccount = function () {
		button.click(function () {
			icon.fadeOut("fast", function () {
				button.toggleClass("open closed");
				icon.fadeIn("fast");
			});

			accountLinks.slideToggle("slow");

			return false;
		});
	}

	this.MyAccount();
}

SydEnergi.SearchBoxFix = function (searchInputSelector) {
	var searchInputs = jQuery(searchInputSelector);


	this.SearchBoxFix = function () {

		searchInputs.each(function () {
			var searchInput = jQuery(this);

			searchInput.keypress(function (e) {
				if (e.keyCode == 13 && searchInput.val()) {
					doSearch(this);
					return false;
				}
			})
		});

	}

	var doSearch = function (searchInput) {
		eval(jQuery(searchInput).parents("fieldset").find(".submit").attr("href"));
	}

	this.SearchBoxFix();
}

SydEnergi.SetCookie = function (name, value, expires, path, domain, secure) {
	document.cookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}

SydEnergi.GetCookie = function (name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return (setStr);
}

/*SydEnergi.WindowScrollTo = function (x, y) {
	if (typeof (window.scrollToOrig) === 'function') {
		window.scrollToOrig(x, y);
	}
	else {
		window.scrollTo(x, y);
	}
}*/

SydEnergi.ValidationSummaryFix = function () {
	if (typeof (ValidationSummaryOnSubmit) != 'undefined') {
		var ValidationSummaryOnSubmitOrig = ValidationSummaryOnSubmit;
		ValidationSummaryOnSubmit = function (validationGroup) { //Observe: no 'var' in front of 'ValidationSummaryOnSubmit' ... it overrides standard ASP.Net validation behavior
			var scrollToOrig = window.scrollTo;
			window.scrollTo = function () { };
			ValidationSummaryOnSubmitOrig(validationGroup);
			window.scrollTo = scrollToOrig;
		}
	}
}

SydEnergi.SignDeal = function () {

	var signDeal = jQuery('div.signDeal');
	if (signDeal.length > 0) {

		jQuery('a.fancybox').each(function () {
			var me = jQuery(this);
			if (me.hasClass('moreConsumptionNumbers')) {
				me.fancybox({
					'hideOnContentClick': false,
					'centerOnScroll': true,
					'scrolling': 'auto',
					'height': '80%',
					'autoScale': true,
					'modal': true,
					'showCloseButton': false,
					'enableEscapeButton': false,
					'onStart': function () { this.href += ("?curconsnum=" + me.parent().find("input[type=text]").attr("value")) + "&cureyc=" + jQuery("input[id$=_uiTxtEstimatedConsumption]").attr("value"); }
				});
			}
			else if (me.hasClass('termsAndConditions')) {
				me.fancybox({
					'hideOnContentClick': false,
					'centerOnScroll': true,
					'scrolling': 'auto',
					'height': '80%',
					'autoScale': true,
					'width': 975
				});
			}
			else {
				me.fancybox({
					'hideOnContentClick': false,
					'centerOnScroll': true,
					'scrolling': 'auto',
					'height': '80%',
					'autoScale': true
				});
			}
		});

		jQuery('a.retypeFieldsToggle').click(function (event) {
			event.preventDefault();
			jQuery('div.retypeFields')
				.slideToggle('slow', function () {
					var visibleDiv = jQuery(this).filter(':not(:hidden)');
					jQuery('input[id$=_uiHdnRetypeFieldsToggle]').attr('value', visibleDiv.length == 1);
					visibleDiv.find('input[type=text]:first').focus();
				});
		});

		jQuery('div.dealTerm')
			.each(function () {
				var priceDiv = jQuery(this).find('div.price:first');
				if (priceDiv.length == 1) {
					var select = jQuery(this).find('select:first');
					if (select.length == 1) {
						var selectPos = select.position();
						priceDiv.css('left', selectPos.left + select.width() + 15);
						priceDiv.css('top', selectPos.top + select.outerHeight() / 2 - priceDiv.outerHeight() / 2);

						var prices = SydEnergi.SignDeal[priceDiv.attr("id") + "_prices"];
						if (typeof (prices) !== "undefined") {
							select.change(function (event) {
								var priceArray = prices[jQuery(this).val().replace(/[\{\}]*/g, '')];

								var priceArrayIdx = 0;
								var priceRegionString = null;

								var uiTxtConsumerNumber = signDeal.find("input[id$=_uiTxtConsumerNumber]");
								if (uiTxtConsumerNumber.length > 0) {
									uiTxtConsumerNumber.change(function () { select.change(); })
									priceRegionString = SydEnergi.GetPriceRegion(uiTxtConsumerNumber.val());
								}
								else {
									priceRegionString = SydEnergi.GetPriceRegion(signDeal.find("span.consnum:first").html());
								}

								if (priceRegionString != null) {
									priceArrayIdx = priceRegionString == "DK1" ? 0 : 1;
								}

								priceDiv.find("> span").html(priceArray[3] + priceArray[priceArrayIdx] + priceArray[2]);
							});
							select.change();
						}
						else {
							priceDiv.hide();
						}
					}
				}
			});
	};
}

SydEnergi.GetPriceRegion = function (consumptionNumber) {

	if (consumptionNumber == null || (consumptionNumber.length != 11 && consumptionNumber.length != 18)) {
		return null;
	}

	consumptionNumber = consumptionNumber.length == 18 ? consumptionNumber : "5713131" + consumptionNumber;

	if (consumptionNumber.length != 18) {
		return null;
	}

	// Price region is determined by cifre 8-10 in consumer number 001-599 is DK1 and 600-999 is DK2
	var priceRegionNumberString = consumptionNumber.substring(7, 10);

	var priceRegionNumber;
	priceRegionNumber = parseInt(priceRegionNumberString, 10)
	if (!isNaN(priceRegionNumber)) {
		if (priceRegionNumber < 600) {
			return "DK1";
		}
		else {
			return "DK2";
		}
	}
	return null;
}

SydEnergi.MoreConsumptionNumbers = function () {

	anotherConsumptionNumberDivs = jQuery('div.anotherConsumptionNumber');
	anotherConsumptionNumberDivs.each(function (index, Element) {
		var anotherConsumptionNumber = jQuery(this); //TODO: use Element instead (and rename)

		var myInstNum = index + 1;
		var myInstNumVal = "val" + /.{3}$/.exec("000" + (index + 1));

		var selectInstallationOrNewAddress = anotherConsumptionNumber.find('select:first');
		if (selectInstallationOrNewAddress.length == 1) {
			selectInstallationOrNewAddress.change(function () {
				var me = jQuery(this);
				var numOptions = me.find('>option').length;
				var newAddressDiv = anotherConsumptionNumber.find('.newaddress:first');
				if (me.val() == "newaddress") {
					if (newAddressDiv.length == 1) {
						newAddressDiv.show('slow');

						eval(anotherConsumptionNumber.find('span[id$=_uiRfvName]').attr('id')).enabled = true;
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvStreetName]').attr('id')).enabled = true;
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvStreetNumber]').attr('id')).enabled = true;
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvZipCode]').attr('id')).enabled = true;
						eval(anotherConsumptionNumber.find('span[id$=_uiRevZipCode]').attr('id')).enabled = true;
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvCity]').attr('id')).enabled = true;

						// Now make sure that the other selects have an option to select and reference this new address are referencing this address
						//console.log(myInstNum);
						//console.log(anotherConsumptionNumberDivs.find("select:not(:has(option[value=" + myInstNum + "]))").not(me));

						var newOption = '<option value="' + myInstNumVal + '">' + SydEnergi.MoreConsumptionNumbers.Translations.UseSameAddressAs.replace(/\{0\}/g, "" + myInstNum) + '</option>';
						//console.log(newOption);

						//alert("select:not(:has(option[value=" + myInstNumVal + "]))");
						//console.log(anotherConsumptionNumberDivs.find("select:not(:has(option[value=" + myInstNumVal + "]))"));

						anotherConsumptionNumberDivs
							.find("select:not(:has(option[value=" + myInstNumVal + "]))").not(me)
									.each(function (idx, elem) {
										//console.log(jQuery(elem));
										jQuery(elem)
											.find("option")
											.filter(function (index) {
												if (index < 2) { return true; }
												var valAsNum = parseInt(jQuery(this).attr("value").replace(/^val[0]+/, ''), 10);
												//console.log("valAsNum: " + valAsNum);
												return isNaN(valAsNum) ? false : valAsNum < myInstNum;
											})
											.last()
											.after(newOption);
									});
					}
					else
						setTimeout(function () {
							var name = me.attr("name");
							Page_BlockSubmit = false;
							WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(name, "", false, "", "", false, true));
						}, 0); //__doPostBack(me.attr('name'), ''); }, 0);
				}
				else {
					if (newAddressDiv.length == 1) {
						newAddressDiv.hide('slow');
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvName]').attr('id')).enabled = false;
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvStreetName]').attr('id')).enabled = false;
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvStreetNumber]').attr('id')).enabled = false;
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvZipCode]').attr('id')).enabled = false;
						eval(anotherConsumptionNumber.find('span[id$=_uiRevZipCode]').attr('id')).enabled = false;
						eval(anotherConsumptionNumber.find('span[id$=_uiRfvCity]').attr('id')).enabled = false;

						// Now make sure none of the other selects are referencing this address
						anotherConsumptionNumberDivs.find("select").has(":selected[value=" + myInstNumVal + "]").val("useownaddress").end().find("option[value=" + myInstNumVal + "]").remove();
					}
				}
			});
			selectInstallationOrNewAddress.change(); //Force it at startup
		}
	});

	if (anotherConsumptionNumberDivs.length > 0) {
		//Hack to force validation of ALL validation groups on page 
		//(if no validators are present in same scope as the button uiBtnOk then onclick validation javascript is not rendered) (notice the 'null' in the WebForm_PostBackOptions)
		// ... and at present all validators and summaries are inside the repeater and out of scope
		var uiBtnOk = jQuery('input[id$=_uiBtnOk]').EnsureMatches("uiBtnOk could not be found!");
		if (uiBtnOk.length == 1) {
			uiBtnOk.click(function (event) {

				var showTheseSummaries = [];

				var myPage_BlockSubmit = false;
				for (var i = 0; i < anotherConsumptionNumberDivs.length; i++) {
					var groupIsValid = Page_ClientValidate('particulars_' + i);
					myPage_BlockSubmit |= !groupIsValid;
					showTheseSummaries.push(groupIsValid);
				}

				if (myPage_BlockSubmit) {
					event.preventDefault();
					for (var i = 0; i < anotherConsumptionNumberDivs.length; i++) {
						if (!showTheseSummaries[i]) {
							Page_ValidationSummaries[i].style.display = "";
						}
					}
					Page_BlockSubmit = myPage_BlockSubmit;
					setTimeout(function () { Page_BlockSubmit = false; }, 0); // otherwise the buttons with CausesValidation="false" will not work
				}
			});
		}
	}
}

SydEnergi.MoreConsumptionNumbers.Translations = {};

SydEnergi.CloseMoreConsumptionNumbers = function (consumptionNumber, estimatedYearlyConsumption) {

	// We close and there ARE more consumption numbers sitting in session now ... if not then we just don't do the next thing here
	if (consumptionNumber != '') {
		jQuery('input[id$=uiTxtEstimatedConsumption]').attr('value', '');
		jQuery('input[id$=_uiTxtConsumerNumber]').attr('value', '');
	}

	parent.jQuery.fancybox.close();

	setTimeout(function () { jQuery("input[id$=_uiBtnHiddenNoValidationSubmit]").click() }, 500);
}

SydEnergi.FoldingFormSection = function ()
{
    SydEnergi.FoldingFormSection.ToggleFunction = function ()
    {
        var textInputs = jQuery(".foldableFormSection").find("input[type=text]");
        textInputs.val("");
        jQuery(jQuery("label[for=formsectionfolding]")).toggle();
        jQuery(".foldableFormSection").toggle("slow", function ()
        {
            if (!jQuery("#formsectionfolding").is(':checked'))
            {
                textInputs.val("##collapsed##");
            }
        });
    }

    SydEnergi.FoldingFormSection.ToggleFunction();
    var checkbox = "<span class='scfCheckbox'><br/><input type='checkbox' id='formsectionfolding'/><label for='formsectionfolding'>PBS tilmelding</label><label for='formsectionfolding' style='display:none'>PBS tilmelding</label></span>";
    var foldableSection = jQuery(".foldableFormSection");
    foldableSection.prev().append(checkbox);
    jQuery("#formsectionfolding").change(SydEnergi.FoldingFormSection.ToggleFunction);

    var helpdiv = foldableSection.find(".scfSectionUsefulInfo");
    foldableSection.children("fieldset").append(helpdiv.clone());
    helpdiv.remove();
}

SydEnergi.NewsLetter = function () {
	var uiGetLatestNewsletters = jQuery("a[id$=_uiGetLatestNewsletters]");
	if (uiGetLatestNewsletters.length > 0) {
		if (uiGetLatestNewsletters.attr('href').search(/donotshow/i) > -1) {
			uiGetLatestNewsletters.hide();
		}
		else {
			uiGetLatestNewsletters.fancybox({
				'centerOnScroll': true,
				'scrolling': 'auto',
				'height': '80%',
				'width': 850
			});
		}
	}
}

SydEnergi.Gas = function () {
    var gasContractsPage = jQuery('#gasContractsPage');
    if (gasContractsPage.length > 0) {

        gasContractsPage
            .find('a.fancybox')
            .each(function () {
                var me = jQuery(this);
                me.fancybox({
                    'hideOnContentClick': false,
                    'centerOnScroll': true,
                    'scrolling': 'auto',
                    'height': '80%',
                    'autoScale': true,
                    'width': 975
                });
            });

        //SydEnergi.uiTxtGasConsumptionNumber_Validate = function (oSrc, args) { var valid = false; jQuery('input[id$=_uiTxtGasConsumptionNumber]').each(function () { valid |= jQuery(this).val() !== '' }); args.IsValid = valid; }
    }
}

SydEnergi.CaratTracking = {};
SydEnergi.CaratTracking.ExposedToMediaForm = function () {
	var axel = Math.random() + "";
	var a = axel * 10000000000000;
	jQuery(document.body).prepend('<iframe src="http://fls.doubleclick.net/activityi;src=2978018;type=besge586;cat=syden556;ord=1;num=' + a + '?" width="1" height="1" style="position:absolute;" frameborder="0"></iframe>');
}

SydEnergi.CaratTracking.SuccesfullySubmittedMediaForm = function () {

	/*
	Start of DoubleClick Floodlight Tag: Please do not remove
	Activity name of this tag: SYD ENERGI - Kvittering
	URL of the webpage where the tag is expected to be placed: http://www.sydenergi.dk/Media/Produktoversigt/Kvittering
	This tag must be placed between the <body> and </body> tags, as close as possible to the opening tag.
	Creation Date: 10/29/2010
	*/

	var revenue = null; //TODO: how do we get this??
	var orderId = null; //TODO: how do we get this??

	// Find revenue and orderId from the GA tracking that we know is emitted ... THIS IS VERY VERY HACKY INDEED!
	jQuery("head > script:not([src])").each(function () {
		var scriptTag = jQuery(this);
		var contents = scriptTag.html();

		if (contents.match(/var _gaq/g) != null) {

			var m = contents.match(/_gaq\.push\(\['_addItem'\,([.\s\S]+)\)/gi);
			if (m != null) {
				try {
					var arrOfArgs = m[0].match(/'(.+)(?=')/gi);
					revenue = arrOfArgs[5].replace("'", "");
					orderId = arrOfArgs[1].replace("'", "");
				}
				catch (ex) { }
			}
			return false;
		}
	});


	if (revenue != null && orderId != null) {
		jQuery(document.body).prepend('<iframe src="http://fls.doubleclick.net/activityi;src=2978018;type=kvitt554;cat=syden058;qty=1;cost=' + revenue + ';ord=' + orderId + '?" width="1" height="1" style="position:absolute;" frameborder="0"></iframe>');
	}

	/*
	Start of DoubleClick Floodlight Tag: Please do not remove
	Activity name of this tag: Waoo - Kvittering extern - SYD ENERGI
	URL of the webpage where the tag is expected to be placed: http://www.sydenergi.dk/Media/Produktoversigt/Kvittering
	This tag must be placed between the <body> and </body> tags, as close as possible to the opening tag.
	Creation Date: 11/09/2010
	*/

	var axel = Math.random() + "";
	var a = axel * 10000000000000;
	jQuery(document.body).prepend('<iframe src="http://fls.doubleclick.net/activityi;src=2882021;type=besge204;cat=waoo-189;ord=1;num=' + a + '?" width="1" height="1" style="position:absolute;" frameborder="0"></iframe>');
}

function flashGA(obj) {
	_gaq.push(['_trackPageview', obj]);
}

SydEnergi.CallMethod = function (control, method, onSuccess, onError) {
    var args = '';
    for (var i = 4; i < arguments.length; i++) {
        if (args.length != 0)
            args += ',';
        args += "'" + arguments[i] + "'";
    }

    var finalArgs = '"control":"' + control + '","method":"' + method + '","args":"' + args + '"';
    return jQuery.ajax({
        type: "POST",
        url: "/PageMethodHandler.ashx",
        data: "{" + finalArgs + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: onSuccess,
        error: onError
    });
}

