/// <reference path="jquery-1.3.2-vsdoc2.js" />

Function.prototype.partial = function() {
	var fn = this, args = Array.prototype.slice.call(arguments);
	return function() {
		var arg = 0;
		for (var i = 0; i < args.length && arg < arguments.length; i++)
			if (args[i] === undefined)
			args[i] = arguments[arg++];
		return fn.apply(this, args);
	};
};
// Function.prototype.bind polyfill from 
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind
if (!Function.prototype.bind) {
	Function.prototype.bind = function(obj) {
		// closest thing possible to the ECMAScript 5 internal IsCallable function
		if (typeof this !== 'function') {
			throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
		}
		var slice = [].slice,
            args = slice.call(arguments, 1),
            self = this,
            nop = function() { },
            bound = function() {
            	return self.apply(this instanceof nop ? this : (obj || {}),
                                  args.concat(slice.call(arguments)));
            };
		bound.prototype = this.prototype;
		return bound;
	};
}
if (!Function.prototype.curry) {
	Function.prototype.curry = function() {
		var slice = [].slice,
            args = slice.apply(arguments);
		return this.bind.apply(this, args.concat(slice.call(arguments)));
	};
}



/*	jQuery extensions
============================================================= */
$.toFirstUpper = function(str) {
    if (str != null) {
        strnew = str.substr(0, 1).toUpperCase();
        if (str.length > 1) { strnew += str.substr(1); }
        return strnew;
    } else {
        return str;
    }
}

$.postJSON = function(url, data, callback) {
	$.post(url, data, callback, "json");
};

$.postXML = function(url, data, callback) {
	$.post(url, data, callback, "xml");
};

$.postSOAP = function(url, data, callback) {
    var callbackJSON = function(d) {
        var n = d.lastChild;
        var o;
        eval("o=" + (n.text || n.textContent));
        callback(o);
    }
    $.post(url, data, callbackJSON, "xml");
};


//	image.onerror = function() { alert("ERROR"); }
//	image.onabort = function() { alert("ABORTED"); }
//	image.onload = function() { alert("LOAD"); }

/* 	document on load cue
============================================================= */

$(document).ready(function() { 		// always load these function when the DOM is ready
    p80jq_zebra_table(); 			// alternating row colors for class tables.p80jq_zebra_table
    p80jq_src_hover(); 				// quick way of setting a swap image functionality on images with class img.p80jq_src_hover
    //p80jq_epandinglist(); 		// FAQ like exapding list on dl-tag with class dl.p80jq_expandinglist
    p80jq_element_restore_value(); 	// Swap a classname on inputfields input|textarea.p80jq_element_restore_value	
    p80jq_toggle_login(); 			// Show / hide the login dropdown div
    p80jq_toggle_help_icon(); 		// Tooltip show/hide on form pages
    p80jq_input_focus(); 			// CSS :focus class (background-color) for Win/IE 6 and 7
    p80jq_input_hover(); 			// Hover effect on input elements for Win/IE6

    benAjaxErrorHandler();
    hideIkBen();

    //IFrame Login/Logout functions
    SetIFrameLogin();
    SetIFrameLogout();

    VirtueleMedewerkerHandler();
    if (swfobject != null && swfobject.getFlashPlayerVersion().major > 0)
        $("body").removeClass("noflash");
    TextImage();

    $('.textimage').each(function() {
        resizeTagImageSize(this);
    });
});

/* 	jQuery alternating row colors (zebra_stripe_tables) 
	adds a 'odd' or 'even' classnames on all tables which have a classname of 'p80_zebra_table'
============================================================= */

function p80jq_zebra_table() {
	$("table.p80jq_zebra_table tbody tr").each(function(index) {	// to all tr-tags
		$(this).addClass(index % 2 == 0 ? "odd" : "even");			// add an 'odd' or 'even' classname
	});
}


/* 	jQuery rollovers on elements with a src-attribute
    on rollover 'demo.gif' becomes 'demo_hover.gif'
============================================================= */
function p80jq_src_hover() {
    $(".p80jq_src_hover").hover(function() { 									// classname to trigger
        var filename = $(this).attr("src").replace(/\.(\w+)$/, "_hover.$1"); // mouse-over: add the filename suffix
        $(this).attr("src", filename);
    }, function() {
        var filename = $(this).attr("src").replace(/_hover\.(\w+)$/, ".$1"); // mouse-out: restore, remove filename suffix
        $(this).attr("src", filename);
    });
}

/*	Restore defaultValue on form elements onblur
============================================================= */

function p80jq_element_restore_value() {
	$("input:text.p80jq_element_restore_value, textarea.p80jq_element_restore_value").each(function() {
		$(this).attr('p80_org_formvalue', $(this).val());
		$(this).addClass('p80_form_label');
	})
	.focus(function () {
		if($(this).val() != '' && $(this).val() == $(this).attr('p80_org_formvalue')) {
			$(this).val('');
			$(this).removeClass('p80_form_label');
		}					
	 })
	.blur(function() {
		if($(this).val() == '') {
			$(this).val($(this).attr('p80_org_formvalue'));
			$(this).addClass('p80_form_label');
		}
	});
}

/*	Thumbnail list on template index list
============================================================= */

function p80jq_toggle_thumbs(){
	$("img.index_thumb").each(function() {					// img-tags with 'index_thumb' classnames
		$(this).toggleClass("index_thumb_show"); 			// toggle the classname
	});
}

/*	Thumbnail list on template index list
============================================================= */

function p80jq_toggle_help_icon(){
	$(".iconHelp span").css("visibility", "hidden");

	$(".iconHelp img").hover(
		function() {
			$(this).next("span").css("visibility", "visible");
		},
		function() {
			$(this).next("span").css("visibility", "hidden");
		}
    );
	
	
	$('.iconHelp img').toggle(
		function() {
			$(this).next("span").css("visibility", "visible");
		},
		function() {
			$(this).next("span").css("visibility", "hidden");
		}
	);
}

function help_icon_overlay_show(){}

/*	Show / hide the login dropdown div
============================================================= */

function p80jq_toggle_login() {
	$("li.ikben_login").find("a").attr("id", "btnLogin");		
    $("#btnLogin").click(p80jq_login_click_handler);
}

function p80jq_login_click_handler() {
	window.location = "/inloggen";
	return false;
}

/* Add a CSS class Win/IE 7 and lower, these browser versions don't understand CSS :focus
============================================================= */

function p80jq_input_focus() {
	// check specifically for Win/IE 7 and lower
	if ($.browser.msie && $.browser.version.substr(0,1)<8) {
		$("input[type='text'], input[type='password'], input[type='submit'], textarea").focus(function() {
			$("input[type='text'], input[type='password'], input[type='submit'], textarea").removeClass('inputFocus'); // first remove the class form all form fields
			$(this).addClass('inputFocus'); // add a css class (see ie_all.css) for the background color
		});
	}
}


/* Input :hover effect for Win/IE6
============================================================= */

function p80jq_input_hover() {
	// apply only for Win/IE6
	if ($.browser.msie && $.browser.version.substr(0,1) == 6) {
		$(".scaleButton input").hover(
			function () {
				$(this).addClass("inputButtonHover"); // mouse-over
			}, 
			function () {
				$(this).removeClass("inputButtonHover"); // mouse-out
			}
		);
	}
}

/* Resize tagimage
============================================================= */
function resizeTagImageSize(img) {
    $(img).attr("src", $(img).attr("src")).load(function() {
        $(this).attr("width", this.width);
        $(this).attr("height", this.height);
    });
}

function MoreInfo(mainbundle_id, additionalbundle_id,ns_product_group,ns_product_id) {
	var url = '/ajax/BundleDetails.aspx';
    if (mainbundle_id) {
        $.post(url, { mid: mainbundle_id, aid: additionalbundle_id, textOnly: false }, function(data) {
			fancyboxOpen(data);
        }, "html");
    }
}

var ShoppingCartCalls = new Array();
function SendShoppingCart(card_id, email) {
    var url = '/ajax/ShoppingCart.aspx';

    if (!ShoppingCartCalls[card_id] 
            && email != ''
            && email != $(".userCartEmail").attr('p80_org_formvalue')
       ) {
        ShoppingCartCalls[card_id] = true;
        $(".userCartEmailSendButton").addClass("disabled");
        $(".userCartEmail").val(labels["Processing"]);

        $.post(url, { cart_id: card_id, email: email }, function(data) {
        	fancyboxOpen(data);
        	$(".btnClose").click(function() {
        		$.fancybox.close();
        		//remove entered email address
        		$(".userCartEmail").val($(".userCartEmail").attr('p80_org_formvalue'));
        		$(".userCartEmailSendButton").removeClass("disabled");
        		ShoppingCartCalls[card_id] = false;

        		return false;
        	});
        }, "html");
    } else {
        //
    }
    return false;
}

function AskBen(question,label) {
	var url = '/ajax/AskBen.aspx';
	if (question != null && question.replace(/\s+/g, "").length != 0 && question!=label) {
		$.post(url, { question: question }, function(data) {
			fancyboxOpen(data);
			//fix select fields showing through popup's in IE6
			if ($.browser.msie && $.browser.version.substr(0, 1) == 6) {
				$("#popup").bgiframe();
			}

			AskBenQuestion(question, $("#benAnwerParagraph").html());
		});
	}
	return false;
}

function AskBenQuestion(question, label, sessionID) {
	var url = '/json/GetAnswerFromVirtualAgent';
	if (!question) { 
		return false;
	}
	$("#benAnwerParagraph").html(label);
	$.postSOAP(url, { question: question, sessionID: sessionID }, function(data) {
	    var session = data.SessionID;
	    $("#benQuestionParagraph").text(question);
	    $("#benAnwerParagraph").html(data.Text);
	    document.getElementById("askBenQuestionButton").onclick = function() {
	        var qst = $('#benQuestionInPopup').val();
	        $('#benQuestionInPopup').val('');
	        return AskBenQuestion(qst, label, session);
	    };
	    $("#benQuestionInPopup").keypress(function(e) {
	        var key = e.which ? e.which : e.keyCode;
	        if (key == 13) {
	            var qst = $('#benQuestionInPopup').val();
	            $('#benQuestionInPopup').val('');
	            return AskBenQuestion(qst, label, session);
	        }
	    });
	});
	return false;
}

function CallMe(ticket) {
	var url = '/popups/callme';
	$.post(url, { ticket: ticket }, function(data) {
		fancyboxOpen(data);
		//$("#form1").remove();
		//$("body title").remove();
		//$("body div:has('#__VIEWSTATE')").remove();

		//fix select fields showing through popup's in IE6
		if ($.browser.msie && $.browser.version.substr(0, 1) == 6) {
			$("#popup").bgiframe();
		}
		$(".btnSend").click(function() {
			if ($('.popupForm').hasClass('formValidationError')) {
				$('.popupForm').removeClass("formValidationError");
			}
			$(".validationMessage span").each(function(index) {
				if (!$(this).hasClass("hide")) {
					$(this).addClass("hide");
				}
			})
			CallMeSend(ticket, $('#phoneNumber').val());
			return false;
		});
	});
	return false;
}

function CallMeSend(ticket,phone) {
	var url = '/popups/callme';
	$.postJSON(url, { ticket:ticket,phone: phone }, function(data) {
		$('#phoneNumber').val(phone);
		if (data.error != null) {
			if (!$('.popupForm').hasClass("formValidationError")) {
				$('.popupForm').addClass("formValidationError");
			}
			$('#phoneNumberMessage-' + data.error).removeClass('hide');
		}
		if (data.value != null) {
			$("#popup .body p").each(function(index) {
				$(this).toggleClass("hide");
			})
		}
	});
	return false;
}

/* Generic AJAX error handler, just shows an alert whenever an AJAX calls fails */
//ml never EVER popup alerts! :(
function benAjaxErrorHandler() {
    $("body").ajaxError(function(event, request, settings) {
		if (console != null)
			console.log("Error requesting page " + settings.url + " ");
    });
}

function getURLParam(strParamName) {
    var strReturn = "";
    var strHref = window.location.href;
    if (strHref.indexOf("?") > -1) {
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
        var aQueryString = strQueryString.split("&");
        for (var iParam = 0; iParam < aQueryString.length; iParam++) {
            if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return unescape(strReturn);
}

function hideIkBen(overwrite) {
    var loggedin = readCookie("ben_login");
    if (!loggedin || overwrite) {
        //Hide the "Ik Ben nav link"
    	$(".ikben_loginname").addClass("hide");
    	$(".ikben_loginname").unbind('click'); 
    } else {
        showIkBen(loggedin);
    }
}

function showIkBen(name) {

    var new_name = 'Ik Ben...';
    if (name && name.length > 0) {
        name = name.substr(0, 1).toUpperCase() + name.substr(1);
        new_name = 'Ik Ben ' + name;
        //createCookie("ben_login", name);    
    }
    
    if (document.location.href.indexOf("/ikben")>-1) {
        var img_name= '/img/main-nav_active/'+escape(new_name)+'.gif';
    } else {
        var img_name= '/img/main-nav/'+escape(new_name)+'.gif';
    }

    $(".ikben_loginname img").attr('src',img_name);
    
    //Show the "Ik Ben nav link"
    $(".ikben_loginname").removeClass("hide");

    SetLogout();
}

function LoggedOut() {

    ///eraseCookie("ben_login");
    hideIkBen(true);                //hide ikben menu item

    var img_name= '/img/main-nav/'+escape(labels["Login"])+'.gif';
    $("#btnLogin img").attr('src',img_name);
    $("#btnLogin").attr('href', '/ikben');
    $("#btnLogin").click(p80jq_login_click_handler);
   }

function SetLogout() {
	var img_name = '/img/main-nav/' + escape(labels["Logout"]) + '.gif';
	$("#btnLogin img").attr('src', img_name);
	$("#btnLogin").attr('href', '/ikben/uitloggen');
	$('#btnLogin').unbind('click');        //remove click handler for the dropdown
	$(".ikben_login").attr('class', $(".ikben_login").attr('class').replace("ikben_login", ""));

    //remove loggedin cookie when used logs out
    //Done by the Logout.aspx file
    /*
    $('#btnLogin').click(function() {
        LoggedOut();
    });
    */
}


function createCookie(name, value, minutes) {
    if (minutes) {
        var date = new Date();
        date.setTime(date.getTime() + (minutes * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/","."+document.location.host;
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

function Search(elm) {
    if (elm) {
        var input = $('#' + elm).val() || "";
        if (input.length > 0) {
            window.location.href = "/zoeken/" + UrlEncode(input);
        }
    }
    return false;
}

function UrlEncode(input) {
    var encodedInputString = escape(input);
    encodedInputString = encodedInputString.replace("+", "%2B");
    encodedInputString = encodedInputString.replace("/", "%2F");
    return encodedInputString;
}


// Used by Sidebar Iframe to arrange the modification of the TOP navigation items with login/logout functions
// Functions need to be performed at the TOP window as we're located within 2 iframes
function SetIFrameLogin() {
    if (getURLParam("login")) {
        //top.window.showIkBen(getURLParam("login"));
    }
}

//function not used, if sidebar is passed parameter logout=1 we'll see nav items as logged out.. and re-enable login functions
function SetIFrameLogout() {
	var logout = getURLParam("logout");
    if (logout && logout == "1") {
        top.window.SetLogout();
    }
}


if (!Array.prototype.contains) {
    Array.prototype.contains = function(obj) {
        var len = this.length;
        for (var i = 0; i < len; i++) {
            if (this[i] == obj) { return true; }
        }
        return false;
    };
}

//KSO ADDRESS LOOKUP SCRIPT

 function getZipcode() {
    var numbers = jQuery.trim($("#order_Zipcode_cijfers").val());
    var letters = jQuery.trim($("#order_Zipcode_letters").val());
    return numbers + letters;
}

var isValidZipcode = function() {
    var zipcode = getZipcode();
    return zipcode && new RegExp("^([1-9]{1}[0-9]{3}[A-Za-z]{2})$").test(zipcode);
}

function getHouseNumber() {
    return $("#order_HouseNumber").val();
}

function isValidHouseNumber() {
    return getHouseNumber() && new RegExp("^([1-9]{1}[0-9]*)$").test(getHouseNumber());
}

function isValidAddress() {
    return isValidZipcode() && isValidHouseNumber();
}

// Initialize change events
function initAddressLookup() {

    
}
//Set attr readonly for fields Straat and Plaats


$(document).ready(function() {
	$("#order_StreetName").addClass("street");
	$("#order_CityName").addClass("city");
    $("#order_Zipcode_cijfers").change(function() {
        $("#progress_Zipcode").show();
        if (isValidAddress())   {
            loopkupAddress(getZipcode(), getHouseNumber());
        }
        $("#progress_Zipcode").hide();
    });
    $("#order_Zipcode_letters").change(function() {
        $("#progress_Zipcode").show();
        if (isValidAddress())   {
            loopkupAddress(getZipcode(), getHouseNumber());
        }
        $("#progress_Zipcode").hide();
    });
    $("#order_HouseNumber").change(function() {
        $("#progress_Zipcode").show();
        if (isValidAddress())   {
            loopkupAddress(getZipcode(), getHouseNumber());
        }
        $("#progress_Zipcode").hide();
    });
});

// Initialize progress icon
$("#progress_Zipcode").hide();  // hide it initially
$("#progress_Zipcode").ajaxStart(function() {
    $(this).show();
})
$("#progress_Zipcode").ajaxStop(function() {
    $(this).hide();
});

/*************************
PROVIDER
**************************/
//ML: make sure we only bind this stuff once.
$(document).ready(function() {
	//$("#order_NumberPortingJa").attr('checked', false);
	if (!$("#order_CurrentProvider").val())
		initProvider();
	//CurrentMobileNumber MSISDN change
	var phoneNumber = $("#order_CurrentMobileNumber, input[id$='MSISDN']").val();
	//if (phoneNumber)
	//lookupProvider(phoneNumber);
	$("#order_CurrentMobileNumber, , input[id$='MSISDN']").change(function() {
		//looking for Provider
		lookupProvider($(this).val());
	});
	var val = $("#order_CurrentMobileNumber, input[id$='MSISDN']").val();
	if (val)
		lookupProvider(val);

});
function initProvider()
{
    // initialiy disable the provider dropdown              
    clearProvider();
    // if has phonenumber lookup providers
    var phoneNumber = $("#order_CurrentMobileNumber, input[id$='MSISDN']").val();
	if (phoneNumber)
		lookupProvider(phoneNumber);

    //setProviderState(false);
}
function setProviderState(enabled) {
    if (enabled)
        $("#order_CurrentProvider").removeAttr("disabled");
    else
        $("#order_CurrentProvider").attr("disabled", "disabled");
}

function clearProvider() {
    $("#order_CurrentProvider >option").remove();
    var dummy = new Option("", "");
    $("#order_CurrentProvider").append(dummy);
}

function setProviderMessage(message) {
    if (message)
        $("#serviceMessage_CurrentProvider").show().text(message);
    else
        $("#serviceMessage_CurrentProvider").hide();
}
$(function ()
{
	$("#order_CurrentProvider").change(function()
	{
		createCookie("order_CurrentProvider", $("#order_CurrentProvider").val());
	});
});
function lookupProvider(msisdn) {
    clearProvider();
    setProviderState(false);
    if (!isValidMSISDN(msisdn)) {
        setProviderMessage("Geldig mobiel nummer nodig");
        return;
    }
    var currentSelectedProvider = $("#order_CurrentProvider").val();
    if (!currentSelectedProvider) {
		currentSelectedProvider = readCookie("order_CurrentProvider");
	}    
    $("#progress_CurrentProvider").show();
    $.ajax({
        type: "POST",
        url: "/services/service.asmx/GetServiceProvidersByMsIsdn",
        data: "{ 'msIsdn': '" + msisdn + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        complete: function() { $("#progress_CurrentProvider").hide(); },
        success: function(msg) {
            if (msg.d.length == 0) {
                setProviderMessage("Laden aanbieders is mislukt");
                return;
            }
            else setProviderMessage("");

            setProviderState(true);
            $.each(msg.d, function(index, item) {
				$("#order_CurrentProvider, select[id$='StepNumberPorting_Provider']").append($("<option />").val(item.Code).text(item.Name));
            });
            if (currentSelectedProvider)
            	$("#order_CurrentProvider, select[id$='StepNumberPorting_Provider']").val(currentSelectedProvider);
            //$("#order_CurrentProvider").focus();
        },
        error: function() {
            setProviderMessage("Laden aanbieders is mislukt");
        }
    });
}
/*************************
END PROVIDER
**************************/

function IgnoreEnterHandler(e) {
    var key = e.which ? e.which : e.keyCode;
    var src = e.target ? e.target : e.srcElement;
    if (key == 13 && !$(src).is("textarea")) {
        return false;
    }
}

function VirtueleMedewerkerHandler() {
    $("#benQuestion").keyup(function(e) {
        var key = e.which ? e.which : e.keyCode;
        if (key == 13) {
            $('.virtualmedewerkerlink').click();      
            $('#benQuestion').val("");                       
        }
    });
}

function TextImage() {
    $('#contentWrapper div.downloadList a').textimage({ tag: 'bullet', extension: 'png', width: 575, height: 30 });
}

(function($){
    $.fn.textimage = function(options) {
    var defaults = {
        width: null,
        height: null,
        dir: "/img",
        tag: "h1",
        extension: "gif"
    };
    
    var options = $.extend(defaults, options);
    $(this).each(function(){
        var text  = $(this).html();
        var img = '<img src="'+options.dir+'/'+options.tag+'/'+escape(text)+'.'+options.extension+'" width="'+options.width+'" height="'+options.height+'" alt="'+text+'" />';
        $(this).html(img);
    });
    return this;
    };
})(jQuery);

function showPhonePopupAndRedirectOnOK(alias) {
    var url = '/ajax/PhoneDetails.aspx';

    if (alias) {
    	$.post(url, { alias: alias }, function(data) {
    		fancyboxOpen(data, function() {
    			var handsetId = $('.addToBasket').val();
    			window.location = $(".shopRow #handset_" + handsetId + " .itemsRight").attr('href');
    		});
    	}, "html");
    }
};
function showPhonePopup(alias, control) {
    var url = '/ajax/PhoneDetails.aspx';
   	if (alias) {
   	    $.post(url, { alias: alias }, function(data) {
   	        fancyboxOpen(data, function() {
   	            var handsetId = $('.addToBasket').val();
   	            if (control !== undefined)
   	                addPhoneToBasket(control, handsetId);
   	        });
   	    }, "html");
   	}
};

function addPhoneToBasket(controlName, handset_id) {
	alert(1);
    switch (controlName) {
        case "StepPhones":
            $(".shopRow .shopRadio input[id='handsetId_" + handset_id + "']").attr('checked', true).trigger("click");
            break;
        case "ProductDetail":
            location.href = $(".shopRow #handset_" + handset_id + " .addHandset").attr('href');
            break;
    }
	$(".btnClose").trigger("click");
};

function showHandsetPopup(alias) {
    var url = '/ajax/HandsetDetails.aspx';

    if (alias) {
        $.post(url, { alias: alias }, function(data) {
             fancyboxOpen(data);  
        }, "html");
    }        
}

function fancyboxOpen(content, callbackOK) {
	var options = {
		overlayOpacity: 0.6,
		scrolling: 'no',
		titleShow: false,
		autoScale: true,
		autoDimensions: false,
		width: 434,
		height: 576,
		transitionIn: 'none',
		transitionOut: 'none',
		showCloseButton: false,
		content: content,
		centerOnScroll: true
	};
	if (typeof callbackOK == "function") {
	    options.onComplete = function() {
	        $("#addToBasket, .btnSend").click(function() {
	            callbackOK();
	            $.fancybox.close();
	        })
	    }
	}
	$.fancybox(options);
	$('#fancybox-content').addClass('popup_bg');
	$('#fancybox-content').height(576);
	//Remove useless iframe for IE browser version 6. It breaks the transparant background on the #fancybox-outer 
	if ($.browser.msie && $.browser.version == 6) {
	    $('#fancybox-wrap iframe').remove();
	}
}

function showPhoneReminder(handset_id) {

    var url = '/ajax/PhoneReminder.aspx';
    if (handset_id) {
        $.post(url, { handset_id: handset_id }, function(data) {
             fancyboxOpen(data, function()
             {
				savePhoneReminder(handset_id, $("#popup input[name='email']").val(), $.fancybox.close);
             });  
        }, "html");
    }        

}

function savePhoneReminder(handset_id, email, successHandler) {
    var url = '/xml/savePhoneReminder';
    if (!handset_id)
    	successHandler(); //close popup;
    
    var isValid = false;
    var x = $.postSOAP(url, { handset_id: handset_id, email: email }, function(data) {
    	if (data) {
    		successHandler();
    	}
    	else {
    		$("#popup .validationMessage").removeClass("hide");
    	}
    });
}

function showPhonePicture(picture,imgClass) {
    if (picture) {
        imgClass = imgClass ? imgClass : "productImgBig";
        $('.'+imgClass).attr('src',picture);
    }
    return false;
}

function showMorePhones() {
    $('.more_phones_link').remove();
    $('.hidden_more_phones').show();
    $("div.line").show();
    return false;    
}

function LoginCustomer(phone,password) {
    if (phone && password) {
        var url = '/ajax/LoginCustomer.aspx';
        $.post(url, { Phone: phone, Password: password}, function(data) {
            if (data.Result == true) {
                OrderFlow.ShowPopupOrderLogin();
            }  else {
                $(".popupShowLogin").show();
                $(".popupShowLogin p.validationMessage").text(data.Message);
                $(".popupShowLogin input").addClass("validationError");
            }
        },"json");
    }
}

function LoginPostpaidCustomer(phone,password) {
    if (phone && password) {
        var url = '/ajax/LoginCustomer.aspx';
        $.post(url, { Phone: phone, Password: password, PostPaidOnly: true}, function(data) {
            if (data.Result == true) {
                OrderFlow.ShowPopupOrderLogin();
            }  else {
                $(".popupShowLogin").show();
                $(".popupShowLogin p.validationMessage").text(data.Message);
                $(".popupShowLogin input").addClass("validationError");
            }
        },"json");
    }
}


function SendForgottenPassword(phone) 
{
    var success = true;
    var message = "";
    
    if (phone) 
    {
        phone = phone.replace(/[- +()]+/ig,"");
        var url = '/ajax/SendForgottenPassword.aspx';
        var data = $.ajax({
          global: false,
          cache: false,
          async: false,
          type: 'POST',
          url: url,
          data:  { PhoneNumber: phone},
          dataType: 'json',
          success: function(data) {
            success = (data && data.Result == true);
            message = data.Message;
          },
          error:  function(data) {
            success = false;
            message = labels["SendPasswordReminder.Failed"];
          }
        });
                    
    } else {
        success = false;
        message = labels["PhoneNumber.Invalid"];
    } 
    
    if (success == false) {
        $('p.messagearea').text(message);
        $("p.messagearea").addClass("validationMessage");
        $("#popupCustomerPhoneNumber").addClass("validationError");
    } else {
        $('p.messagearea').text(message);
        $("p.messagearea").removeClass("validationMessage");
        $("#popupCustomerPhoneNumber").removeClass("validationError");
    }
    
    return success;
}

/* jQuery center div plugin */
jQuery.fn.center = function (absolute) {
    return this.each(function () {
        var t = jQuery(this);

        t.css({
            position:    absolute ? 'absolute' : 'fixed', 
            left:        '50%', 
            top:        '50%'
        }).css({
            marginLeft:    '-' + (t.outerWidth() / 2) + 'px', 
            marginTop:    '-' + (t.outerHeight() / 2) + 'px'
        });

        if (absolute) {
            t.css({
                marginTop:    parseInt(t.css('marginTop'), 10) + jQuery(window).scrollTop(), 
                marginLeft:    parseInt(t.css('marginLeft'), 10) + jQuery(window).scrollLeft()
            });
        }
    });
};

//=======================================ADDRESS LOOKUP===============================
/* this function will write the result in DOM object with classes '.city' and '.street' */
$(function()
{
	$(".street").attr("readonly", "readonly");
    $(".city").attr("readonly", "readonly");
    $(".street").keydown(function (e){if ($(".street").attr("readonly") != "" && e.keyCode != 9) e.preventDefault();});
    $(".city").keydown(function (e){ if ($(".city").attr("readonly") != "" && e.keyCode != 9) e.preventDefault();});
    // getZipcode() might be overridden on the page itself to point to a different input
    // refactor needed !
    
}
);

function loopkupAddress(zipcode, housenumber) {
    var webMethod = '/services/Service.asmx/GetAddressData';
    $("#progress_StreetName").show();
    $("#progress_CityName").show();
    $.ajax({
        type: "POST",
        url: webMethod,
        data: '{"zipcode": "' + zipcode + '", "housenumber" : "' + housenumber + '"}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
			$(".city").val(msg.d.City).trigger("change");
			$(".street").val(msg.d.StreetName).trigger("change");
        },
        error: function(request, status, error) {},
        complete: function(xhr, textStatus)
        {
			$("#progress_StreetName").hide();
			$("#progress_CityName").hide();
        }
        
    });
};

function showTopupOnce(productid, topuptype, productdescription) {
    var url = 'topuponce.aspx';

    if (productid) {
    	$.post(url, { ProductId: productid, TopupType: topuptype, ProductDescription: productdescription }, function(data) {
    		fancyboxOpen(data);
    	}, "html");
    }
}

function showSendSms() {
    var url = 'SendSms.aspx';
    $.post(url, function(data) {
    	fancyboxOpen(data);
    	$("input[name='sendDate']").datePicker();
    	$("input[name='sendLater']").click(function() {
    		var checked = $("input[name='sendLater']").is(":checked");
    		$(".sendLaterContainer").toggle(checked);
    	});
    	$("textarea[name='userSmsMessage']").keyup(function() {
    		var val = $(this).val();
    		var textLength = (val != null) ? val.length : 0;
    		var smsMaxLength = 160;
    		var smsCount = Math.max(1, Math.ceil(textLength / smsMaxLength));
    		var charCount = smsMaxLength - (textLength - (smsMaxLength * (smsCount - 1)));
    		$("#smsCount").text(smsCount);
    		$("#charCount").text(charCount);
    	});
    	$("input:submit[value='Verzenden']").click(function() {
    		var res = $.ajax({
    			async: false,
    			global: false,
    			type: 'POST',
    			url: "SendSmsProcess.aspx",
    			data:
                {
                	PhoneNumbers: $("input[name='mobileNumbers']").val(),
                	Message: $("textarea[name='userSmsMessage']").val(),
                	SendLater: $("input[name='sendLater']").is(":checked"),
                	Time: $("input[name='sendTime']").val(),
                	Date: $("input[name='sendDate']").val()
                },
    			dataType: "json",
    			error: function() {
    			},
    			success: function(response) {
    				var idMapping =
                    {
                    	Message: "userSmsMessage",
                    	PhoneNumbers: "mobileNumbers",
                    	Date: "sendLater"
                    }
    				if (!response.Success) {
    					for (var i = 0; i < response.Errors.length; i++) {
    						var error = response.Errors[i];
    						var id = idMapping[error.FieldName];
    						var input = $("[name='" + id + "']");

    						input.parent().addClass("formValidationError");

    						var errorDiv = $("#Error-" + error.FieldName);
    						errorDiv.text(error.Message);
    					}
    				}
    				else {
    					$(".sendAgain").click(function() {
    						closePopup();
    						showSendSms();
    					});
    					$("div#send").hide();
    					$("div#sendSuccess").show();
    					$("div#sendSuccess").parents("#popup").addClass("popupSMSThanx");
    					var ul = $("ul.numbersSend");
    					ul.text("");
    					for (var i = 0; i < response.SendToNumbers.length; i++) {
    						var number = response.SendToNumbers[i];
    						ul.append("<li>" + number + "</li>");
    					}
    				}
    			}
    		});
    	});
    }, "html");
}

/* PREVENT DEFAULT BEHAVIOUR OF BACKSPACE IN DISABLED INPUTS: GO BACK. IT ONLY OCCURS IN IE BUT TO BE BROWSER SAVE.. ALL BROWSERS ARE COVERED */
$(document).keydown(function(event) {
    var preventDefault;
    var backspace = 8;
    if (event.keyCode == backspace) {
        var element = event.srcElement || event.target;
        if (element.tagName.toUpperCase() == 'INPUT' || element.tagName.toUpperCase() == 'TEXTAREA') {
            preventDefault = element.readOnly || element.disabled;
        }
        else
            preventDefault = true;
    }
    else
        preventDefault = false;

    if (preventDefault)
        event.preventDefault();
});

$(function() {
	$(".btnClose").live("click", function() {
		$("#popup").remove();
		$(".dimmedOverlayType1").remove();
		return false;
	});
});

function OrderPrepaidTopup(linkElement) {
    var container = $(linkElement).closest(".productItem");
	var amount = $(".amount", container).val();
	if (!isNaN(amount) && parseInt(amount) >= 10 && parseInt(amount) <= 100) {
		window.location = "/prepaid/opwaarderen?amount=" + amount
	} else {
		alert("Vul een bedrag in tussen de 10 en 100 euro");
	}
}


/*************************
  enums
**************************/
var ConnectionType = { "Prepaid" : 0, "Postpaid" : 1 };
var CustomerType = { "Private" : 1, "Business" : 2};
$(function()
{
	$("#sidebar").jScroll({ resizeElement: $("#mainContent")});
});


/* homepage carousel (T01C)
================================================ */
function CarouselSlider() { }

CarouselSlider.settings = {};
CarouselSlider.timer;

CarouselSlider.create = function(settings) {
	var empty = {};
	var defaults = {
		startSlide: 0,
		nextSlide: 1,
		slideDuration: 5000
	};

	if (settings.bundleCount != undefined) {
		this.settings = $.extend(empty, defaults, settings);

		if (this.settings.newStartSlide != undefined) {
			$("#bundleItem" + this.settings.newStartSlide).addClass('itemActive');
		}
		else {
			$("#bundleItem" + this.settings.startSlide).addClass('itemActive');
		}

		//if the newStartSlide != 0 --> we start with preselected package and we dont start sliding
		if (settings.newStartSlide == 0) {
			this.timer = setInterval("CarouselSlider.load()", this.settings.slideDuration);
		} else {
			CarouselSlider.showSlideItem(settings.newStartSlide);
		}

		$(".bundleCarousel .carousel .item").mouseover(function() {
			var index = $("div.item").index(this);
			CarouselSlider.showSlideItem(index);
			clearInterval(CarouselSlider.timer);
		});

		$(".bundleCarousel .carousel .item").click(function() {
			var packageID = $(".BlockCarouselPackageID", this).val();
			var mainBundleAlias = $(".BlockCarouselMainBundleID", this).val();

			if (packageID == undefined || packageID == "" || packageID == 0) {
				window.location = "abonnementen/" + mainBundleAlias + "/?abo=" + mainBundleAlias
			} else {
				window.location = "abonnementen/" + mainBundleAlias + "/package/" + packageID
			}
		});
	}
}
CarouselSlider.load = function() {
    var index = this.settings.nextSlide;
    if (this.settings.nextSlide == this.settings.bundleCount)
        index = this.settings.startSlide;

    if (this.settings.newStartSlide == undefined) {
        clearInterval(CarouselSlider.timer);
    }

    this.showSlideItem(index);
}

CarouselSlider.showSlideItem = function(index) {
	$(".bundleCarousel .bundleVisual").hide();
	$(".bundleCarousel .carousel .item").removeClass('itemActive');
	$("#bundleItem" + index).addClass('itemActive');
	$("#bundleVisual" + index).show();

	this.settings.nextSlide = index + 1;
}

function setAbonnementActive() {
	var i = $('#OrderNavigation ul li img[alt="Abonnement"]');
	$(i).attr('src', '/img/main-nav_active/Abonnement.gif');
	$(i).addClass('active');
}
function setMainBundleActive(altText) {
	var i = $('#OrderSubNavigation ul li img[alt="' + altText + '"]');
	var imageTitle = altText.replace(" ", "+");
	if ($(i).hasClass('active')) return;
	$(i).attr('src', '/img/sub-nav_active/'+imageTitle+'.gif');
	$(i).addClass('active');
	$(i).closest('li').addClass('active');
}
