(function ($) {
	
	if (! $.cookie)
	{   //https://github.com/carhartl/jquery-cookie
		jQuery.cookie = function(name, value, options) {
			if (typeof value != 'undefined') { // name and value given, set cookie
				options = options || {};
				if (value === null) {
					value = '';
					options.expires = -1;
				}
				var expires = '';
				if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
					var date;
					if (typeof options.expires == 'number') {
						date = new Date();
						date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
					} else {
						date = options.expires;
					}
					expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
				}
				// CAUTION: Needed to parenthesize options.path and options.domain
				// in the following expressions, otherwise they evaluate to undefined
				// in the packed version for some reason...
				var path = options.path ? '; path=' + (options.path) : '';
				var domain = options.domain ? '; domain=' + (options.domain) : '';
				var secure = options.secure ? '; secure' : '';
				document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
			} else { // only name given, get cookie
				var cookieValue = null;
				if (document.cookie && document.cookie != '') {
					var cookies = document.cookie.split(';');
					for (var i = 0; i < cookies.length; i++) {
						var cookie = jQuery.trim(cookies[i]);
						// Does this cookie string begin with the name we want?
						if (cookie.substring(0, name.length + 1) == (name + '=')) {
							cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
							break;
						}
					}
				}
				return cookieValue;
			}
		};
	}
	
    function updateSelect(index, target) {
        var val = $(target).attr('selected');
        $(target).children('option').each(function (i, el) {
            if($(el).attr('value') == val) {
                $(target).attr('selectedIndex', i);
                return;
            }
        });
    }
   
    function refresh_packages()
    {
    	var checked = $(':radio[name="package"]:checked').val();
    	$('.packages .radio div').removeClass('on').addClass('off').each(function() {
    		var classes = $(this).attr('class');
    		var matches = classes.match(/_(\d)/);
    		if (checked == matches[1])
			{
    			$(this).addClass('on');
			}
    	});
    }
    
    function gup(name) {
      name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
      var regexS = "[\\?&]"+name+"=([^&#]*)";
      var regex = new RegExp( regexS );
      var results = regex.exec( window.location.href );
      if( results == null )
        return false;
      else
        return results[1];
    }
    
    $('.gotoLost').live('click', function(e) {
        e.preventDefault();
        $.dialog.close();
        $.mysw.utils.showAdvantages();
        $.mysw.utils.showForgotPassword();
        
        $('#wallet-forgot-username').focus();
        
        return false;
    });

    $(document).ready(function () {

    	// expect a session, if not: repost the current page    	
    	if (!$.cookie('MSWALLET') && $("#frm_reload").length && location.hash != "#no_cookie")
    		return $("#frm_reload").submit();
    	
    	if (!$.cookie('MSWALLET') && location.hash == "#no_cookie") {
    		alert("Om in te loggen moet deze browser cookies toelaten voor '" + location.hostname + "'.\n\n" +
    			   "To log in this browser must allow cookies for '" + location.hostname + "'.");
    	}
    	
    	refresh_packages();        
        if(gup('payment') == 'ok') {
            $.mysw.actions.paymentOk();
        }
        
    	$('#wallet-login-username').val($.cookie('username'));
    	
    	$('.packages .radio div').click(function(evt) {
    		evt.preventDefault();
    		$(this).siblings(':radio').click();
    		refresh_packages();
    	});
    	
        $('select').each(updateSelect);
        
        $('#wallet-login-forgot').bind('click', $.mysw.utils.showForgotPassword);
        $('#wallet-forgot-cancel').bind('click', $.mysw.utils.showLogin);
        $('.wallet-advantages-register').bind('click', $.mysw.utils.showRegister);
        $('#wallet-register-cancel').bind('click', $.mysw.utils.showAdvantages);
        
        $('#change-password-submit').bind('click', function (evt) {
                evt.preventDefault();
                $.mysw.actions.changePassword();
            });
        
        $('#user-language').bind('change', function (evt) {
            $.mysw.actions.setLanguage();
        });
        
        $('#user-country').bind('change', function (evt) {
            $.mysw.actions.setCountry();
        });
        
        $('#dialin-login-submit').bind('click', function (evt) {
            evt.preventDefault();
            $.mysw.actions.dialinLogin();
        });
        
        $('#dialin-login-input').bind('keyup', function (evt) {
            $(this).val($(this).val().replace(/[^0-9]+/gi, '').substring(0, 4));
            if(evt.which == 13) {
                $.mysw.actions.dialinLogin();
                $('#dialin-login-submit').focus();
            }
        });
        
        $('#wallet-login-submit').bind('click', function (evt) {
            evt.preventDefault();
            $.mysw.actions.walletLogin();
            // this causes multiple session-cookies
            //$(this).parents('form').submit(); //to /payment/dev/null such that the form data is caught by the browser
            $.cookie('username', $('#wallet-login-username').val(), {path: '', expires: 30});
        });
        
        $('#wallet-login-password').bind('keyup', function (evt) {
            if(evt.which == 13) {
                $.mysw.actions.walletLogin();
                $('#wallet-login-submit').focus();
            }
        });
        
        $('#wallet-forgot-submit').bind('click', function (evt) {
            evt.preventDefault();
            $.mysw.actions.walletForgotPassword();
        });
        
        $('#wallet-register-submit').bind('click', function (evt) {
            evt.preventDefault();
            $.mysw.actions.walletRegister();
        });
        
        $('#wallet-action-logout,.wallet-action-logout').bind('click', function (evt) {
            evt.preventDefault();
            $.mysw.actions.walletLogout();
        });
        
        $('.load-partner-site').bind('click', function (evt) {
            evt.preventDefault();
            $.mysw.actions.enterPartnerSite(this);
        });
        
        var paymentStep = 1;
        
        $('#payment-step-next').bind('click', function (evt) {
            evt.preventDefault();
            switch(paymentStep) {
                case 1:
                    if($('.payment-package:checked').length > 0) {
                        $('#payment-step-next').fadeOut('fast');
                        $('#payment-step-1').fadeOut('fast', function () {
                            $('#payment-step-2').fadeIn();
                            $('#payment-step-back').fadeIn();
                            $('#payment-step-next').fadeIn();
                        });
                    }
                    else
                    {
                    	$.mysw.utils.showMessage('payment-step-next-1');
                    	return;
                    }
                    break;
                case 2:
                    if($('.payment-type:checked').length > 0) {
                        $('#payment-step-next').fadeOut('fast');
                        if($('.payment-type:checked').val() == 'IDEAL') {
                            $('#payment-step-2').fadeOut('fast', function () {
                                $('#payment-step-3').fadeIn();
                                $('#payment-step-next').fadeIn();
                            });
                        }
                        else {
                            var data = {
                                'package': $('.payment-package:checked').val(),
                                'type': $('.payment-type:checked').val()
                                };
                            $.mysw.doAction('wallet', data, 'buyCredits', null, function (errors, data) {
                            	$.mysw.errorHandler(errors, data);
                            	$('#payment-step-next').fadeIn();
                            });
                        }
                    }
                    else
                    {
                    	$.mysw.utils.showMessage('payment-step-next-2');
                    	return;
                    }
                    break;
                case 3:
                    if($('.payment-bank:checked').length > 0) {
                        $('#payment-step-next').fadeOut('fast');
                        var data = {
                            'package': $('.payment-package:checked').val(),
                            'type': $('.payment-type:checked').val(),
                            'bank': $('.payment-bank:checked').val()
                            };
                        $.mysw.doAction('wallet', data, 'buyCredits', null, function (errors, data) {
                        	$.mysw.errorHandler(errors, data);
                        	$('#payment-step-next').fadeIn();
                        });
                    }
                    else
                    {
                    	$.mysw.utils.showMessage('payment-step-next-3');
                    	return;
                    }
                    return;
                    break;
            }
            paymentStep++;
        });
        
        $('#payment-step-back').bind('click', function (evt) {
            evt.preventDefault();
            switch(paymentStep) {
                case 1:
                    return; // reached first step already. no action.
                    break;
                case 2:
                    $('#payment-step-back').fadeOut();
                    $('#payment-step-next').fadeOut('fast');
                    $('#payment-step-2').fadeOut('fast', function () {
                        $('#payment-step-1').fadeIn();
                        $('#payment-step-next').fadeIn();
                    });
                    break;
                case 3:
                    $('#payment-step-next').fadeOut('fast');
                    $('#payment-step-3').fadeOut('fast', function () {
                        $('#payment-step-2').fadeIn();
                        $('#payment-step-next').fadeIn();
                    });
                    break;
            }
            paymentStep--;
        });
        
        $('#btn_feedback').parents('a:first').bind('click', function (evt) {
        	evt.preventDefault();
        	$('.reactie').parents('div:first').toggle('fast');
        });
        
        $('#btn_feedback_close').parents('a:first').bind('click', function (evt) {
        	evt.preventDefault();
        	$('#btn_feedback').click();
        });
        
        $('#feedback').bind('click', function (evt) {
            evt.preventDefault();
            $.mysw.actions.sendFeedback();
        });

        $('#no-credits-popup-close').bind('click', function (evt) {
            evt.preventDefault();
            $.dialog.close();
        });
        $('#no-credits-popup').dialog({
            width:530,
            height:140,
			imageBtnClose:'img/close.png',
            onOpen: function (current) {
                setTimeout(function () {
                    $.dialog.close(current);
                }, 5000);
            }
        });
        
        $('#wallet-action-settings').bind('click', function (evt) {
            evt.preventDefault();
            
            $('#change-password-popup').dialog({
                width:400,
                height:200,
                imageBtnClose:'img/close.png'
            });
                
            $('#change-password-submit').bind('click', function (evt) {
                evt.preventDefault();
                $.mysw.actions.changePassword();
            });
        });
        
        $.mysw.utils.showMessage('payment-pending');
 
    });

})(jQuery);

