﻿/* Utility Class */

com.timmons.srl.Utility = function() {


    

    var _disableGenericButtons = function(selector) {

        _disableElements(selector);
    };

    var _enableGenericButtons = function(selector) {

        _enableElements(selector);
    };

    var _enableElements = function(selector) {

        $(selector).removeClass("ui-state-disabled");
    };

    var _disableElements = function(selector) {

        $(selector).addClass("ui-state-disabled");
        $(selector).removeClass("ui-state-hover");
    };

    var _initializeGenericButtons = function(selector) {

        $(selector).live("mouseover", function() {

            $(this).addClass("ui-state-hover");
        });

        $(selector).live("mouseout", function() {

            $(this).removeClass("ui-state-hover");
        });
    };

    var _initializeDynamicButtons = function(selector) {

        $(selector).hover(
            function() {
                $(this).addClass("ui-state-hover");
            },
            function() {
                $(this).removeClass("ui-state-hover");
            }
        );
    };

    var _disableSteps = function(selector) {

        /* 
        Added code in the jQuery UI accordion - if we update to a new version we need to add the code back 
        unless the functionality is already added in the new version 
        */

        if (!selector) { // disable all steps

            _disableElements('#srlRequestAccordion .ui-accordion-header');

        } else { // disable steps in selector

            _disableElements(selector);
        }
    };

    var _enableSteps = function(step_number) {

        /* 
        Added code in the jQuery UI accordion - if we update to a new version we need to add the code back 
        unless the functionality is already added in the new version 
        */

        var selector=null;
        selector = '#srlRequestAccordion .ui-accordion-header:eq(' + (step_number) + ')';
        _enableElements(selector);


    };

    var _showStep = function(step_number) {

        $("#srlRequestAccordion").accordion('activate', step_number);
        
//        var active = $('#srlRequestAccordion').accordion('option', 'active');

//        if (active != step_number + 1) {
//            //            if(step_number >= 3){//                $("#srlRequestAccordion").accordion('activate', step_number);
//            }else{
//                $("#srlRequestAccordion").accordion('activate', step_number);
//            }
//        }
        
        if (step_number == 2) {
            $('#AddressIn').focus();
        }
        
 

    };

    var _isValidEmailAddress = function(emailAddress) {

        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);

        return pattern.test(emailAddress);
    };

    var _readablizeBytes = function(bytes) {
        var s = ['bytes', 'kb', 'MB', 'GB', 'TB', 'PB'];
        var e = Math.floor(Math.log(bytes) / Math.log(1024));
        return (bytes / Math.pow(1024, Math.floor(e))).toFixed(2) + " " + s[e];
    };

    return {

        enableNextButton: function(selector, step_number) {

            _enableGenericButtons(selector);

            _initializeDynamicButtons(selector);

            $(selector).click(function() {
                _enableSteps(step_number);
                _showStep(step_number);
            });
        },
        enableButton: function(selector) {

            _enableGenericButtons(selector);
            _initializeDynamicButtons(selector);
        },
        disableGenericButtons: function(selector) {

            _disableGenericButtons(selector);
        },
        disableNextButton: function(selector, step_number) {

            _disableGenericButtons(selector);

            $(selector).unbind();
        },
        enableSteps: function(step_number) {

            _enableSteps(step_number);
        },
        disableSteps: function(selector) {

            _disableSteps(selector);
        },
        showStep: function(step_number) {

            _showStep(step_number);
        },
        initializeGenericButtons: function(selector) {

            _initializeGenericButtons(selector);
        },
        initializeDynamicButtons: function(selector) {

            _initializeDynamicButtons(selector);
        },
        isValidEmailAddress: function(emailAddress) {

            return _isValidEmailAddress(emailAddress);
        },
        readablizeBytes: function(bytes) {

            return _readablizeBytes(bytes);
        }
    };
} ();
