(function()
{
    Portlet_User_SignInButton = function(id, classname)
    {
        this.options = {};

        this.events = [];

        this.menu2form = {
            'loginPlain'     : 'loginPlainForm',
            'loginIdCards'   : 'loginIdCardsForm',
            'loginIdMobiles' : 'loginIdMobilesForm',
            'loginCodeCards' : 'loginCodeCardsForm',
            'loginIp'        : 'loginIpForm',
            'loginCert'      : 'loginCertForm'
            };

        this.selectedForm = 'loginPlain';

        this.iPingPeriod = 5000;

        this.bDialogOpen = false;

        IApp_Portlet.apply(this, arguments);
    }

    Portlet_User_SignInButton.prototype = $.extend(new Portlet_User_SignIn,
    {
        init: function()
        {
            IApp_Portlet.prototype.init.apply(this, arguments);

            var self = this;

            this.$div.find('#BnsLogIn').click(function()
            {
                self.bDialogOpen = !self.bDialogOpen;

                if (self.bDialogOpen)
                {
                    self.showDialog();
                }
                else
                {
                    self.closeDialog();
                }

                return false;
            });

            this.$div.find('div.closeSignin').click(function()
            {
                self.closeDialog();
            });
        },
        initInputs: function()
        {
        	//init
        	if (this.$div.find('input:text').val() == ''){
            	this.$div.find('input:text').val('login name');
            }
            if (this.$div.find('input:password').val() == ''){
            	this.$div.find('input:password').val('password');
            }

            //focus
            this.$div.find('input:text').focus(function(){
            	if ($(this).val() == 'login name'){
            		$(this).val('');
            	}
            });
            this.$div.find('input:password').focus(function(){
            	if ($(this).val() == 'password'){
            		$(this).val('');
            	}
            });

            //focusout
            this.$div.find('input:text').focusout(function(){
            	if($(this).val() == ''){
            		$(this).val('login name');
            	}
            })
            this.$div.find('input:password').focusout(function(){
            	if($(this).val() == ''){
            		$(this).val('password');
            	}
            })
        },
        closeDialog: function()
        {
        	$('div.loginTypeSelectionHidden').slideToggle("slow");
            //$('div.loginTypeSelectionHidden').fadeOut();
            this.bDialogOpen = false;
        },

        showDialog: function()
        {
        	if (0 == $('#popupSignin').length)
            {
        		$('<div id="loginWrap"></div>').appendTo(document.body);
                $('<div id="popupSignin"></div>').appendTo('#loginWrap');
                $('div.loginTypeSelectionHidden').appendTo('#popupSignin');

                var p = $('#BnsLogIn');
            	var position = p.offset();
            	$('#loginWrap').css('top',position.top+35).css('left',position.left+250);

            }


            $('#popupSignin div.bodyHidden').hide();
            $('div.loginTypeSelectionHidden').slideToggle("slow");
            var self = this;

            // Init form submission handlers
        },
        
        showConfirmDialog: function(msg, authMethod)
        {
        	var self = this;

        	var msg = msg + '<br /><br />\
        	  <div class="buttons">\
        		<input class="btn-blue" type="button" value="Yes" name="close_session_yes" />\
				<input class="btn-blue" type="button" value="No" name="close_session_no" />\
        	  </div>'
        	;

        	new Dialog($('<p>').html(msg), {modal: false});

        	$('input[name=close_session_no]').click(function() {
        		tb_remove();
        	});

        	$('input[name=close_session_yes]').click(function() {
        		tb_remove();
        		switch(authMethod)
        		{
	        		case 'signIn':
	        			self.callRemoteFunc('signIn', { target: false, block: $('.loginTypeSelectionHidden'), data: [$('#username').val(), $('#password').val(), true]});
	        		  break;
	        		case 'signInIdCard':
	        			self.callRemoteFunc('signInIdCard', { target: false, block: $('.loginTypeSelectionHidden'), data: [$('#idcard_code').val(), true]});
	        		  break;
	        		case 'signInIdMobile':
	        			self.callRemoteFunc('signInIdMobile', { target: false, block: $('.loginTypeSelectionHidden'), data: [$('#idmobile_code').val(), true]});
	        		  break;
	        		case 'signInCodeCard':
	        			self.callRemoteFunc('signInCodeCard', { target: false, block: $('.loginTypeSelectionHidden'), data: [$('#codecard_username').val(), $('#codecard_code').val(), true]});
		        	  break;
	        		case 'signInByCert':
	        			self.callRemoteFunc('signInByCert', { target: false, block: $('.loginTypeSelectionHidden'), data: [true]});
			          break;
	        		case 'signInByIp':
	        			self.callRemoteFunc('signInByIp', { target: false, block: $('.loginTypeSelectionHidden'), data: [true]});
			          break;
        		}
        	});

        }
    })

})(jQuery);
