var RFM = RFM || {};
jQuery(function () {
    RFM.today.initialize();
});
RFM.today = (function ($) {
    var that = {};

    var lastUsernameCheck = null;

    that.initialize = function() {
        if (location.href.match(/register/)) {
            autoFillScreenNameOnRegister();
            setupUsernameCheck();
            validateRegistration();
        }
        setupPopupPlayer();
        setupMonthPicker();
        setupVersePicker(); 
        setupPrintLink();
        setupWidgetSlider();
        setupFontSizer();
   };

    function setupWidgetSlider() {
        $('#height-slider').slider({
            range: 'min',
            min: 50,
            max: 1000,
            step: 5,
            value: 945,
            slide: function(event, ui) {
                updateWidgetDim('height', ui.value);
            }
        });
        $('#width-slider').slider({
            range: 'min',
            min: 50,
            max: 500,
            step: 5,
            value: 460,
            slide: function(event, ui) {
                updateWidgetDim('width', ui.value);
            }
        });
    };

    function updateWidgetDim(orientation, value) {
        $('#large-widget-preview').attr(orientation, value);
        var val = $('#large-widget-code').val();
        var re = new RegExp(orientation + '="[0-9]+"');
        val = val.replace(re, orientation + '="' + value + '"');
        $('#large-widget-code').val(val);
    };
    

   function setupPrintLink() {
        $('a.print-page').click(function() {
            window.print();
            return false;
        });
    };

    function setupPopupPlayer() {
        $('a.popup-player').click(function() {
            var newwindow = window.open(this.href,'',
                'resizable=1,toolbar=0,location=0,status=0,menubar=0,scrollbars=1,width=510,height=350');
            newwindow.focus();
            return false;
        });
    };

    function setupFontSizer(){
        $("#fontUp").fontscale(".devotion_text","+");
        $("#fontDown").fontscale(".devotion_text","-");
        $("#fontReset").fontscale(".devotion_text", "reset");    
}

    function setupVersePicker(){
        if(!location.href.match(/archives/)) { return; }
        var book = {
            "Genesis" : '50',
            "Exodus" : '40',
            "Leviticus" : '27',
            "Numbers" : '36',
            "Deuteronomy" : '34',
            "Joshua" : '24',
            "Judges" : '21',
            "Ruth" : '4',
            "1 Samuel" : '31',
            "2 Samuel" : '24',
            "1 Kings" : '22',
            "2 Kings" : '25',
            "1 Chronicles" : '29',
            "2 Chronicles" : '36',
            "Ezra" : '10',
            "Nehemiah" : '13',
            "Esther" : '10',
            "Job" : '42',
            "Psalm" : '150',
            "Proverbs" : '31',
            "Ecclesiastes" : '12',
            "Song of Solomon" : '8',
            "Isaiah" : '66',
            "Jeremiah" : '52',
            "Lamentations" : '5',
            "Ezekiel" : '48',
            "Daniel" : '12',
            "Hosea" : '14',
            "Joel" : '3',
            "Amos" : '9',
            "Obadiah" : '1',
            "Jonah" : '4',
            "Micah" : '7',
            "Nahum" : '3',
            "Habakkuk" : '3',
            "Zephaniah" : '3',
            "Haggai" : '2',
            "Zechariah" : '14',
            "Malachi" : '4',
            "Matthew" : '28',
            "Mark" : '16',
            "Luke" : '24',
            "John" : '21',
            "Acts" : '28',
            "Romans" : '16',
            "1 Corinthians" : '16',
            "2 Corinthians" : '13',
            "Galatians" : '6',
            "Ephesians" : '6',
            "Philippians" : '4',
            "Colossians" : '4',
            "1 Thessalonians" : '5',
            "2 Thessalonians" : '3',
            "1 Timothy" : '6',
            "2 Timothy" : '4',
            "Titus" : '3',
            "Philemon" : '1',
            "Hebrews" : '13',
            "James" : '5',
            "1 Peter" : '5',
            "2 Peter" : '3',
            "1 John" : '5',
            "2 John" : '1',
            "3 John" : '1',
            "Jude" : '1',
            "Revelation" : '22'
        }

$("#bookbox").change(function() {
$("#chapterbox").html("");
var bookName = $("#bookbox").val();
for (var i=1; i<= parseInt(book[bookName]); i++){
var val = bookName + ' ' + i;
$("<option value='"+val+"'>"+i+"</option>").appendTo("#chapterbox");
}

});         
    };

    function setupMonthPicker() {
        $('.ui-datepicker-title').live('click', function() {
          $('[name=month]').val('true');
          $('[name=date]').val($('.ui-datepicker-month').html()+' '+$('.ui-datepicker-year').html());
          $("#todaypicker").submit();});
    };

    function validateRegistration() {
        if (!location.href.match(/register/)) { return; }
        $('#member_form').submit(function() {
            var error = false;
            var reqFields = {
                'first-name'       : "first name",
                'last-name'        : "last name",
                'email-account'    : 'email',
                'username-account' : 'screen name'
            };
            $.each(reqFields, function (id, text) {
                if ($('#'+id).val() == '') {
                    error = 'The ' + text + ' field is required.';
                }
            });
            $(this).find('input[type=password]').each(function(i, e) {
                if ($(e).val() == '') {
                    error = 'The password fields are required.';
                } 
            });
            if ($('#password-account').val() != $('#verify-password').val()) {
                error = 'Passwords do not match.';
            }

            if (!$('#accept_terms:checked').length) {
                error = 'You must agree to the Terms of Service.'
            }

            if (error) {
                alert(error); 
                return false;
            }
        });
    };

    function setupUsernameCheck() {
        if ($('#search_username_form').length == 0) { return; }
        $('#email-account').change(function() {
            that.isUsernameAvailable();
        });
    };

    that.isUsernameAvailable = function() {
        if ($('#email-account').val() == '') { return; }
        $('.un-loading').show();
        $('.username_available, .username_unavailable').hide();
        var now = new Date().getTime();
        // only allow searches every 6 seconds
        if (lastUsernameCheck && lastUsernameCheck + 6000 > now) {
            setTimeout("RFM.today.isUsernameAvailable()", 6000 - (now - lastUsernameCheck));
            return;
        }
        lastUsernameCheck = now;
        $('#search_username').val($('#email-account').val());
        $('#search_username_form').ajaxSubmit({
            success: function(responseText) {
                var usernames = responseText.split('|delimiter|');
                var found = false;
                for (var i = 0; i < usernames.length; i++) {
                    if (usernames[i].toLowerCase() == $('#search_username').val().toLowerCase()) {
                        found = true;
                    }
                }
                $('.un-loading').hide();
                $('.username_text').html($('#search_username').val());
                if (found) {
                    $('.username_unavailable').show();
                }
                else {
                    $('.username_available').show();
                }
            }
        });
    };

    that.isScreenNameAvailable = function() {
        var screenname = $('#username-account').val();
        if (screenname == '') { return; }
        $.ajax({
            type: 'GET',
            url:  '/members/search-screen-name/' + escape(screenname),
            dataType: 'text',

            beforeSend : function () {
                $('.screen_name_available, .screen_name_unavailable').hide();
                $('.sn-loading').show();
            },

            success : function (msg) {
                $('.screen_name_text').html(screenname);
                if (msg.match(/^true/)) {
                    $('.screen_name_available').hide();
                    $('.screen_name_unavailable').show();
                }
                else {
                    $('.screen_name_unavailable').hide();
                    $('.screen_name_available').show();
                }
            },

            complete: function () {
                $('.sn-loading').hide();
            }
        });
    };

    function autoFillScreenNameOnRegister() {
        if ($('#username-account').length == 0) { return; }
        // on first or last name update auto-generate screen name
        $('#first-name, #last-name').bind('change.autofill', function() {
            var sn = $('#first-name').val() + ' ' + $('#last-name').val();
            sn = sn.replace(/^\s+|\s+$/g,"");
            $('#username-account').val(sn);
            that.isScreenNameAvailable();
        });

        // on manual screen name change, remove auto-fill and check avail
        $('#username-account').change(function() {
            $('#last-name, #first-name').unbind('change.autofill');
            that.isScreenNameAvailable();
        });
    };

    return that;
}(jQuery));

