$(document).ready(function() {
        
    $(loginSelector).zdialog({
          autoOpen: false,
          title:'',
          closeText:'×',
          position:['center',100],
          buttons: [],
          resizable: false,
          dialogClass: 'inline_login',
          id: '#inlineLogin',
          beforeClose: function() {
              var $element = $('.ui-dialog').live('webkitAnimationEnd', function(){
                      this.style.webkitAnimationName = '';
                  });
                  $element.css("webkitAnimationName", "scale_close");
          },
          open: function() {
              var settings = $(this).data('zdialog');
              var showContinueText = false;
              var showReauthText = false;
              if (settings.caller && ( settings.caller.hasClass('requires_login') || settings.caller.hasClass('requires_reauth')) ) {
                  showContinueText = true;
              }
              if (settings.caller && settings.caller.hasClass('requires_reauth') ) {
                  showReauthText = true;
              }
              if (settings.caller && settings.caller.hasClass('signup_link')) {
                  resetLoginDialog('register', fbEnabled, signupFBOnly, loginFBOnly, showContinueText, showReauthText);
              } else {
                  resetLoginDialog('login', fbEnabled, signupFBOnly, loginFBOnly, showContinueText, showReauthText);
              }
              if (!signupFBOnly && settings.caller && settings.caller.hasClass('follow_form')) {
                  var $form = settings.caller.closest('form');
                  var data = $form.get(0).action + '?' + $form.serialize();
                  var $registrationIframe = $('#inlineLogin div.iframe_register iframe');
                  $.postMessage( data, iframeRegisterSrc, $registrationIframe.get(0).contentWindow );
              }
          },
          eventNamespace: 'inline_login'
    });
    
    function resetLoginDialog(type, fbEnabled, signupFBOnly, loginFBOnly, showContinueText, showReauthText) {
        var ie6mode = $.browser.msie && /IE 6.0/.test(navigator.userAgent);
        if ( !fbEnabled || ( ie6mode )) {
            $('#inlineLogin .content div.login').hide();
            $('#inlineLogin .content div.register').hide();
            if (ie6mode) {
                $('#inlineLogin .ie6_title').show();
            }
            if (type == 'register' && !signupFBOnly) {
                $('#inlineLogin .content div.iframe_signin').hide();
                $('#inlineLogin .content div.iframe_register').show();
                $('#inlineLogin .login_tabs').show()
                    .find('span.tab').removeClass('active').end()
                    .find('span.last').hide().end()
                    .find('span.toemail').parent('span.tab').addClass('active');
            } else if (type == 'login' && !loginFBOnly) {
                $('#inlineLogin .content div.iframe_signin').show();
                $('#inlineLogin .content div.iframe_register').hide();
                $('#inlineLogin .login_tabs').show()
                    .find('span.tab').removeClass('active').end()
                    .find('span.last').hide().end()
                    .find('span.existingaccount').parent('span.tab').addClass('active');
            } else {
                $('#inlineLogin .content .ie6_sorry').show();
            }
        } else {
            if (type == 'register') {
                $('#inlineLogin .content div.login').hide();
                $('#inlineLogin .content div.register').show();
            } else {
                $('#inlineLogin .content div.login').show();
                $('#inlineLogin .content div.register').hide();
            }
            if (showContinueText) {
                $('#inlineLogin .content span.continue_text').show();
            } else {
                $('#inlineLogin .content span.continue_text').hide();
            }
            if (showReauthText) {
                $('#inlineLogin .reauth_message').show();
            } else { 
                $('#inlineLogin .reauth_message').hide();
            }
            $('#inlineLogin .content div.iframe_signin').hide();
            $('#inlineLogin .content div.iframe_register').hide();
            $('#inlineLogin .login_tabs').hide();
        }
    }

    $.receiveMessage( function(e) {
        if (e.data) {
            handleLoginResponse(e.data);
        }
    }, loginListenerDomain);

    $('#inlineLogin .inline_fblogin').click( function() {
        loginWithFacebook( handleLoginResponse, 'fbconnected=1' );        
    });
        
    $('#inlineLogin .existingaccount').click(function(){
        $('#inlineLogin .content div.login').hide();
        $('#inlineLogin .content div.register').hide();
        $('#inlineLogin .content div.iframe_signin').show();
        $('#inlineLogin .content div.iframe_register').hide();
        $('#inlineLogin .login_tabs').show()
            .find('span.tab').removeClass('active').end()
            .find('span.existingaccount').parent('span.tab').addClass('active');
    });
    
    $('#inlineLogin .toemail').click(function(){
        $('#inlineLogin .content div.login').hide();
        $('#inlineLogin .content div.register').hide();
        $('#inlineLogin .content div.iframe_register').show();
        $('#inlineLogin .content div.iframe_signin').hide();
        $('#inlineLogin .login_tabs').show()
            .find('span.tab').removeClass('active').end()
            .find('span.toemail').parent('span.tab').addClass('active');
    });
    
    $('#inlineLogin a.whyfacebook').click(function(){
        var $ul = $(this).closest('.auth').find('ul.whyfacebook');
        if ($(this).hasClass('active')) {
            $ul.slideUp('fast');
            $('#inlineLogin').animate({height: 225}, 'fast');
            $(this).removeClass('active');
        } else {
            $ul.slideDown('fast');
            $('#inlineLogin').animate({height: 275}, 'fast');
            $(this).addClass('active');
        }
        return false;
    });
    
    function handleLoginResponse(response, extras) {
        var rArr = response.split('=', 2);
        if (rArr[0] != 'sendToConfirmation' && rArr[0] != 'fbconnected' && rArr[0] != 'zoken') {
            return false;
        }
        
        if( rArr[0] == 'sendToConfirmation' ) {
            window.location = loginConfirmURL;            
        } else {
            var dialogEle = $('#inlineLogin').parent('.zdialog');
            var settings = dialogEle.data('zdialog');
            var callingEle = settings.caller;
            if (callingEle) {
                var actionEle = callingEle.closest('button, a');
                if (actionEle.get(0).nodeName == 'A') {
                    var url = actionEle.attr('href')
                    if (extras) {
                        response += '&' + extras;
                    } 
                    if(url.match(/\?/)) {
                        actionEle.attr('href', url + '&' + response);
                    } else {
                        actionEle.attr('href', url + '?' + response);
                    }
                    window.location = actionEle.attr('href');
                    $('.requires_login, .requires_reauth').unbind('click.inline_login');
                    dialogEle.dialog('destroy');
                } else {
                    $('#inlineLoginResult').attr('name', rArr[0]).val(rArr[1]).appendTo('.requires_login_result');
                    if (extras) {
                        var xArr = extras.split('=', 2);
                        $('#inlineLoginExtras').attr('name', xArr[0]).val(xArr[1]).appendTo('.requires_login_result');
                    }
                    $('.requires_login, .requires_reauth').unbind('click.inline_login');
                    dialogEle.dialog('destroy');
                    if (callingEle) {
                        callingEle.click();
                    }
                }
            }
        }
    }
});
