var url;
var pathArray = location.href.split('/');
var protocol = pathArray[0];
var host = pathArray[2];
if (host == "localhost") {
    url = protocol + '//' + host + "/" + pathArray[3];
} else {
    url = protocol + '//' + host;
}

var App = function () {

    var currentPage = ''; // current page
    var collapsed = false; //sidebar collapsed
    var is_mobile = false; //is screen mobile?
    var is_mini_menu = false; //is mini-menu activated
    var is_fixed_header = false; //is fixed header activated
    var responsiveFunctions = []; //responsive function holder

    /*-----------------------------------------------------------------------------------*/
    /*	Runs callback functions set by App.addResponsiveFunction()
     /*-----------------------------------------------------------------------------------*/
    var runResponsiveFunctions = function () {
        // reinitialize other subscribed elements
        for (var i in responsiveFunctions) {
            var each = responsiveFunctions[i];
            each.call();
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	To get the correct viewport width based on  http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/
     /*-----------------------------------------------------------------------------------*/
    var getViewPort = function () {
        var e = window, a = 'inner';
        if (!('innerWidth' in window)) {
            a = 'client';
            e = document.documentElement || document.body;
        }
        return {
            width: e[a + 'Width'],
            height: e[a + 'Height']
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Check layout size
     /*-----------------------------------------------------------------------------------*/
    var checkLayout = function () {
        //Check if sidebar has mini-menu
        is_mini_menu = $('#sidebar').hasClass('mini-menu');
        //Check if fixed header is activated
        is_fixed_header = $('#header').hasClass('navbar-fixed-top');
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Sidebar & Main Content size match
     /*-----------------------------------------------------------------------------------*/
    var handleSidebarAndContentHeight = function () {
        var content = $('#content');
        var sidebar = $('#sidebar');
        var body = $('body');
        var height;

        if (body.hasClass('sidebar-fixed')) {
            height = $(window).height() - $('#header').height() + 1;
        } else {
            height = sidebar.height() + 20;
        }
        if (height >= content.height()) {
            content.attr('style', 'min-height:' + height + 'px !important');
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Sidebar
     /*-----------------------------------------------------------------------------------*/
    var handleSidebar = function () {
        jQuery('.sidebar-menu .has-sub > a').click(function () {
            var last = jQuery('.has-sub.open', $('.sidebar-menu'));
            last.removeClass("open");
            jQuery('.arrow', last).removeClass("open");
            jQuery('.sub', last).slideUp(200);

            var thisElement = $(this);
            var slideOffeset = -200;
            var slideSpeed = 200;

            var sub = jQuery(this).next();
            if (sub.is(":visible")) {
                jQuery('.arrow', jQuery(this)).removeClass("open");
                jQuery(this).parent().removeClass("open");
                sub.slideUp(slideSpeed, function () {
                    if ($('#sidebar').hasClass('sidebar-fixed') == false) {
                        App.scrollTo(thisElement, slideOffeset);
                    }
                    handleSidebarAndContentHeight();
                });
            } else {
                jQuery('.arrow', jQuery(this)).addClass("open");
                jQuery(this).parent().addClass("open");
                sub.slideDown(slideSpeed, function () {
                    if ($('#sidebar').hasClass('sidebar-fixed') == false) {
                        App.scrollTo(thisElement, slideOffeset);
                    }
                    handleSidebarAndContentHeight();
                });
            }
        });

        // Handle sub-sub menus
        jQuery('.sidebar-menu .has-sub .sub .has-sub-sub > a').click(function () {
            var last = jQuery('.has-sub-sub.open', $('.sidebar-menu'));
            last.removeClass("open");
            jQuery('.arrow', last).removeClass("open");
            jQuery('.sub', last).slideUp(200);

            var sub = jQuery(this).next();
            if (sub.is(":visible")) {
                jQuery('.arrow', jQuery(this)).removeClass("open");
                jQuery(this).parent().removeClass("open");
                sub.slideUp(200);
            } else {
                jQuery('.arrow', jQuery(this)).addClass("open");
                jQuery(this).parent().addClass("open");
                sub.slideDown(200);
            }
        });
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Collapse Sidebar Programatically
     /*-----------------------------------------------------------------------------------*/
    var collapseSidebar = function () {
        var iconElem = document.getElementById("sidebar-collapse").querySelector('[class*="fa-"]');
        var iconLeft = iconElem.getAttribute("data-icon1");
        var iconRight = iconElem.getAttribute("data-icon2");
        /* For Navbar */
        jQuery('.navbar-brand').addClass("mini-menu");
        /* For sidebar */
        jQuery('#sidebar').addClass("mini-menu");
        jQuery('#main-content').addClass("margin-left-50");
        jQuery('.sidebar-collapse i').removeClass(iconLeft);
        jQuery('.sidebar-collapse i').addClass(iconRight);
        /* Remove placeholder from Search Bar */
        jQuery('.search').attr('placeholder', '');
        collapsed = true;
        /* Set a cookie so that mini-sidebar persists */
        $.cookie('mini_sidebar', '1');
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Responsive Sidebar Collapse
     /*-----------------------------------------------------------------------------------*/
    var responsiveSidebar = function () {
        //Handle sidebar collapse on screen width
        var width = $(window).width();
        if (width < 768) {
            is_mobile = true;
            //Hide the sidebar completely
            jQuery('#main-content').addClass("margin-left-0");
        }
        else {
            is_mobile = false;
            //Show the sidebar completely
            jQuery('#main-content').removeClass("margin-left-0");
            var menu = $('.sidebar');
            if (menu.parent('.slimScrollDiv').size() === 1) { // destroy existing instance before resizing
                menu.slimScroll({
                    destroy: true
                });
                menu.removeAttr('style');
                $('#sidebar').removeAttr('style');
            }
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Sidebar Collapse
     /*-----------------------------------------------------------------------------------*/
    var handleSidebarCollapse = function () {
        var viewport = getViewPort();
        if ($.cookie('mini_sidebar') === '1') {
            /* For Navbar */
            jQuery('.navbar-brand').addClass("mini-menu");
            /* For sidebar */
            jQuery('#sidebar').addClass("mini-menu");
            jQuery('#main-content').addClass("margin-left-50");
            collapsed = true;
        }
        //Handle sidebar collapse on user interaction
        jQuery('.sidebar-collapse').click(function () {
            //Handle mobile sidebar toggle
            if (is_mobile && !(is_mini_menu)) {
                //If sidebar is collapsed
                if (collapsed) {
                    jQuery('body').removeClass("slidebar");
                    jQuery('.sidebar').removeClass("sidebar-fixed");
                    //Add fixed top nav if exists
                    if (is_fixed_header) {
                        jQuery('#header').addClass("navbar-fixed-top");
                        jQuery('#main-content').addClass("margin-top-100");
                    }
                    collapsed = false;
                    $.cookie('mini_sidebar', '0');
                }
                else {
                    jQuery('body').addClass("slidebar");
                    jQuery('.sidebar').addClass("sidebar-fixed");
                    //Remove fixed top nav if exists
                    if (is_fixed_header) {
                        jQuery('#header').removeClass("navbar-fixed-top");
                        jQuery('#main-content').removeClass("margin-top-100");
                    }
                    collapsed = true;
                    $.cookie('mini_sidebar', '1');
                    handleMobileSidebar();
                }
            }
            else { //Handle regular sidebar toggle
                var iconElem = document.getElementById("sidebar-collapse").querySelector('[class*="fa-"]');
                var iconLeft = iconElem.getAttribute("data-icon1");
                var iconRight = iconElem.getAttribute("data-icon2");
                //If sidebar is collapsed
                if (collapsed) {
                    /* For Navbar */
                    jQuery('.navbar-brand').removeClass("mini-menu");
                    /* For sidebar */
                    jQuery('#sidebar').removeClass("mini-menu");
                    jQuery('#main-content').removeClass("margin-left-50");
                    jQuery('.sidebar-collapse i').removeClass(iconRight);
                    jQuery('.sidebar-collapse i').addClass(iconLeft);
                    /* Add placeholder from Search Bar */
                    jQuery('.search').attr('placeholder', "Search");
                    collapsed = false;
                    $.cookie('mini_sidebar', '0');
                }
                else {
                    /* For Navbar */
                    jQuery('.navbar-brand').addClass("mini-menu");
                    /* For sidebar */
                    jQuery('#sidebar').addClass("mini-menu");
                    jQuery('#main-content').addClass("margin-left-50");
                    jQuery('.sidebar-collapse i').removeClass(iconLeft);
                    jQuery('.sidebar-collapse i').addClass(iconRight);
                    /* Remove placeholder from Search Bar */
                    jQuery('.search').attr('placeholder', '');
                    collapsed = true;
                    $.cookie('mini_sidebar', '1');
                }
                $("#main-content").on('resize', function (e) {
                    e.stopPropagation();
                });
            }
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Fixed Sidebar on Mobile devices
     /*-----------------------------------------------------------------------------------*/
    var handleMobileSidebar = function () {
        var menu = $('.sidebar');
        if (menu.parent('.slimScrollDiv').size() === 1) { // destroy existing instance before updating the height
            menu.slimScroll({
                destroy: true
            });
            menu.removeAttr('style');
            $('#sidebar').removeAttr('style');
        }
        menu.slimScroll({
            size: '7px',
            color: '#a1b2bd',
            opacity: .3,
            height: "100%",
            allowPageScroll: false,
            disableFadeOut: false
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Fixed Sidebar
     /*-----------------------------------------------------------------------------------*/
    var handleFixedSidebar = function () {
        var menu = $('.sidebar-menu');

        if (menu.parent('.slimScrollDiv').size() === 1) { // destroy existing instance before updating the height
            menu.slimScroll({
                destroy: true
            });
            menu.removeAttr('style');
            $('#sidebar').removeAttr('style');
        }

        if ($('.sidebar-fixed').size() === 0) {
            handleSidebarAndContentHeight();
            return;
        }

        var viewport = getViewPort();
        if (viewport.width >= 992) {
            var sidebarHeight = $(window).height() - $('#header').height() + 1;

            menu.slimScroll({
                size: '7px',
                color: '#a1b2bd',
                opacity: .3,
                height: sidebarHeight,
                allowPageScroll: false,
                disableFadeOut: false
            });
            handleSidebarAndContentHeight();
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Windows Resize function
     /*-----------------------------------------------------------------------------------*/
    jQuery(window).resize(function () {
        setTimeout(function () {
            checkLayout();
            handleSidebarAndContentHeight();
            responsiveSidebar();
            handleFixedSidebar();
            handleNavbarFixedTop();
            runResponsiveFunctions();
        }, 50); // wait 50ms until window resize finishes.
    });
    /*-----------------------------------------------------------------------------------*/
    /*	Date Range Picker
     /*-----------------------------------------------------------------------------------*/
    var handleDateTimePickers = function () {

        $('#reportrange').daterangepicker(
                {
                    startDate: moment().subtract('days', 29),
                    endDate: moment(),
                    minDate: '01/01/2012',
                    maxDate: '12/31/2014',
                    dateLimit: {days: 60},
                    showDropdowns: true,
                    showWeekNumbers: true,
                    timePicker: false,
                    timePickerIncrement: 1,
                    timePicker12Hour: true,
                    ranges: {
                        'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)],
                        'Last 30 Days': [moment().subtract('days', 29), moment()],
                        'This Month': [moment().startOf('month'), moment().endOf('month')]
                    },
                    opens: 'left',
                    buttonClasses: ['btn btn-default'],
                    applyClass: 'btn-small btn-primary',
                    cancelClass: 'btn-small',
                    format: 'MM/DD/YYYY',
                    separator: ' to ',
                    locale: {
                        applyLabel: 'Submit',
                        fromLabel: 'From',
                        toLabel: 'To',
                        customRangeLabel: 'Custom Range',
                        daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
                        monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
                        firstDay: 1
                    }
                },
        function (start, end) {
            console.log("Callback has been called!");
            $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
        }
        );
        //Set the initial state of the picker label
        $('#reportrange span').html('Custom');
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Team View
     /*-----------------------------------------------------------------------------------*/
    var handleTeamView = function () {
        c();
        $(".team-status-toggle").click(function (y) {
            y.preventDefault();
            w(this);
            $(this).parent().toggleClass("open");
            var z = x(this);
            $(z).slideToggle(200, function () {
                $(this).toggleClass("open")
            })
        });
        $("body").click(function (z) {
            var y = z.target.className.split(" ");
            if ($.inArray("team-status", y) == -1 && $.inArray("team-status-toggle", y) == -1 && $(z.target).parents().index($(".team-status")) == -1 && $(z.target).parents(".team-status-toggle").length == 0) {
                w()
            }
        });
        $(".team-status #teamslider").each(function () {
            $(this).slimScrollHorizontal({
                width: "100%",
                alwaysVisible: true,
                color: "#fff",
                opacity: "0.5",
                size: "5px"
            })
        });
        var w = function (y) {
            $(".team-status").each(function () {
                var z = $(this);
                if (z.is(":visible")) {
                    var A = x(y);
                    if (A != ("#" + z.attr("id"))) {
                        $(this).slideUp(200, function () {
                            $(this).toggleClass("open");
                            $(".team-status-toggle").each(function () {
                                var B = x(this);
                                if (B == ("#" + z.attr("id"))) {
                                    $(this).parent().removeClass("open")
                                }
                            })
                        })
                    }
                }
            })
        };
        var x = function (y) {
            var z = $(y).data("teamStatus");
            if (typeof z == "undefined") {
                z = "#team-status"
            }
            return z
        }
    }
    var c = function () {
        $(".team-status").each(function () {
            var x = $(this);
            x.css("position", "absolute").css("margin-top", "-1000px").show();
            var w = 0;
            $("ul li", this).each(function () {
                w += $(this).outerWidth(true) + 15
            });
            x.css("position", "relative").css("margin-top", "0").hide();
            $("ul", this).width(w)
        })
    };

    /*-----------------------------------------------------------------------------------*/
    /*	Homepage tooltips
     /*-----------------------------------------------------------------------------------*/
    var handleHomePageTooltips = function () {
        //On Hover
        //Default tooltip (Top)
        $('.tip').tooltip();
        //Bottom tooltip
        $('.tip-bottom').tooltip({
            placement: 'bottom'
        });
        //Left tooltip
        $('.tip-left').tooltip({
            placement: 'left'
        });
        //Right tooltip
        $('.tip-right').tooltip({
            placement: 'right'
        });
        //On Focus
        //Default tooltip (Top)
        $('.tip-focus').tooltip({
            trigger: 'focus'
        });
    }

    /*-----------------------------------------------------------------------------------*/
    /* Box tools
     /*-----------------------------------------------------------------------------------*/
    var handleBoxTools = function () {
        //Collapse
        jQuery('.box .tools .collapse, .box .tools .expand').click(function () {
            var el = jQuery(this).parents(".box").children(".box-body");
            if (jQuery(this).hasClass("collapse")) {
                jQuery(this).removeClass("collapse").addClass("expand");
                var i = jQuery(this).children(".fa-chevron-up");
                i.removeClass("fa-chevron-up").addClass("fa-chevron-down");
                el.slideUp(200);
            } else {
                jQuery(this).removeClass("expand").addClass("collapse");
                var i = jQuery(this).children(".fa-chevron-down");
                i.removeClass("fa-chevron-down").addClass("fa-chevron-up");
                el.slideDown(200);
            }
        });

        /* Close */
        jQuery('.box .tools a.remove').click(function () {
            var removable = jQuery(this).parents(".box");
            if (removable.next().hasClass('box') || removable.prev().hasClass('box')) {
                jQuery(this).parents(".box").remove();
            } else {
                jQuery(this).parents(".box").parent().remove();
            }
        });

        /* Reload */
        jQuery('.box .tools a.reload').click(function () {
            var el = jQuery(this).parents(".box");
            App.blockUI(el);
            window.setTimeout(function () {
                App.unblockUI(el);
            }, 1000);
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	SlimScroll
     /*-----------------------------------------------------------------------------------*/
    var handleSlimScrolls = function () {
        if (!jQuery().slimScroll) {
            return;
        }

        $('.scroller').each(function () {
            $(this).slimScroll({
                size: '7px',
                color: '#a1b2bd',
                height: $(this).attr("data-height"),
                alwaysVisible: ($(this).attr("data-always-visible") == "1" ? true : false),
                railVisible: ($(this).attr("data-rail-visible") == "1" ? true : false),
                railOpacity: 0.1,
                disableFadeOut: true
            });
        });
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Bootbox alerts
     /*-----------------------------------------------------------------------------------*/
    var handleBootbox = function () {
        $(".basic-alert").click(function () {
            bootbox.alert("Hello World");
        });
        $(".confirm-dialog").click(function () {
            bootbox.confirm("Are you sure?", function (result) {
            });
        });
        $(".multiple-buttons").click(function () {
            bootbox.dialog({
                message: "I am a custom dialog",
                title: "Custom title",
                buttons: {
                    success: {
                        label: "Success!",
                        className: "btn-success",
                        callback: function () {
                            Example.show("great success");
                        }
                    },
                    danger: {
                        label: "Danger!",
                        className: "btn-danger",
                        callback: function () {
                            Example.show("uh oh, look out!");
                        }
                    },
                    main: {
                        label: "Click ME!",
                        className: "btn-primary",
                        callback: function () {
                            Example.show("Primary button");
                        }
                    }
                }
            });
        });
        $(".multiple-dialogs").click(function () {
            bootbox.alert("In 1 second a new modal will open");
            setTimeout(function () {
                bootbox.dialog({
                    message: "Will you purchase this awesome theme",
                    title: "Pop quiz",
                    buttons: {
                        success: {
                            label: "Yes!",
                            className: "btn-success",
                            callback: function () {
                                bootbox.alert("Congratulations! You made the right decision.", function () {
                                    $(".bootbox").modal("hide");
                                });
                            }
                        },
                        danger: {
                            label: "No!",
                            className: "btn-danger",
                            callback: function () {
                                bootbox.alert("Oops, we're sorry to hear that!", function () {
                                    $(".bootbox").modal("hide");
                                });

                            }
                        },
                        main: {
                            label: "Click ME!",
                            className: "btn-primary",
                            callback: function () {
                                bootbox.alert("Hello World", function () {
                                    $(".bootbox").modal("hide");
                                });
                            }
                        }
                    }
                });
            }, 1000);
        });
        $(".programmatic-close").click(function () {
            bootbox.alert("In 3 second this modal will close..");
            setTimeout(function () {
                $(".bootbox").modal("hide");
            }, 3000);
        });

    }
    /*-----------------------------------------------------------------------------------*/
    /*	Popovers
     /*-----------------------------------------------------------------------------------*/
    var handlePopovers = function () {
        //Default (Right)
        $('.pop').popover();
        //Bottom 
        $('.pop-bottom').popover({
            placement: 'bottom'
        });
        //Left 
        $('.pop-left').popover({
            placement: 'left'
        });
        //Top 
        $('.pop-top').popover({
            placement: 'top'
        });
        //Trigger hover 
        $('.pop-hover').popover({
            trigger: 'hover'
        });
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Hubspot messenger
     /*-----------------------------------------------------------------------------------*/
    var handleMessenger = function () {

        //Normal
        $("#normal").click(function () {
            var mytheme = $('input[name=theme]:checked').val();
            var mypos = $('input[name=position]:checked').val();
            //Set theme
            Messenger.options = {
                extraClasses: 'messenger-fixed ' + mypos,
                theme: mytheme
            }
            //Call
            Messenger().post({
                message: "This is a normal notification!",
                showCloseButton: true
            });
        });
        //Interactive
        $("#interactive").click(function () {
            var mytheme = $('input[name=theme]:checked').val();
            var mypos = $('input[name=position]:checked').val();
            //Set theme
            Messenger.options = {
                extraClasses: 'messenger-fixed ' + mypos,
                theme: mytheme
            }
            var msg;
            msg = Messenger().post({
                message: 'Launching thermonuclear war...',
                type: 'info',
                actions: {
                    cancel: {
                        label: 'cancel launch',
                        action: function () {
                            return msg.update({
                                message: 'Thermonuclear war averted',
                                type: 'success',
                                showCloseButton: true,
                                actions: false
                            });
                        }
                    }
                }
            });
        });
        //Timer
        $("#timer").click(function () {
            var mytheme = $('input[name=theme]:checked').val();
            var mypos = $('input[name=position]:checked').val();
            //Set theme
            Messenger.options = {
                extraClasses: 'messenger-fixed ' + mypos,
                theme: mytheme
            }
            var i;
            i = 0;
            Messenger().run({
                errorMessage: 'Error destroying alien planet',
                successMessage: 'Alien planet destroyed!',
                showCloseButton: true,
                action: function (opts) {
                    if (++i < 3) {
                        return opts.error({
                            status: 500,
                            readyState: 0,
                            responseText: 0
                        });
                    } else {
                        return opts.success();
                    }
                }
            });
        });
        //Prompts
        $("#prompts").click(function () {
            var mytheme = $('input[name=theme]:checked').val();
            var mypos = $('input[name=position]:checked').val();
            //Set theme
            Messenger.options = {
                extraClasses: 'messenger-fixed ' + mypos,
                theme: mytheme
            }
            Messenger().run({
                successMessage: 'Data saved.',
                errorMessage: 'Error saving data',
                progressMessage: 'Saving data',
                showCloseButton: true,
            }, {
                url: 'http://www.example.com/data'
            });
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Alerts
     /*-----------------------------------------------------------------------------------*/
    var handleAlerts = function () {
        $(".alert").alert();
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Magic Suggest
     /*-----------------------------------------------------------------------------------*/
    var handleMagicSuggest = function () {
        var jsonData = [];
        var cities = 'New York,Los Angeles,Chicago,Houston,Paris,Marseille,Toulouse,Lyon,Bordeaux,Philadelphia,Phoenix,San Antonio,San Diego,Dallas,San Jose,Jacksonville'.split(',');
        for (var i = 0; i < cities.length; i++)
            jsonData.push({id: i, name: cities[i], status: i % 2 ? 'Already Visited' : 'Planned for visit', coolness: Math.floor(Math.random() * 10) + 1});
        var ms1 = $('#ms1').magicSuggest({
            data: jsonData,
            sortOrder: 'name',
            value: [0],
            selectionPosition: 'right',
            groupBy: 'status',
            maxDropHeight: 200
        });
        var ms2 = $('#ms2').magicSuggest({
            width: '80%',
            data: jsonData
        });
        var ms3 = $('#ms3').magicSuggest({
            selectionPosition: 'bottom',
            renderer: function (city) {
                return '<div>' +
                        '<div style="font-family: Arial; font-weight: bold">' + city.name + '</div>' +
                        '<div><b>Cooooolness</b>: ' + city.coolness + '</div>' +
                        '</div>';
            },
            minChars: 1,
            selectionStacked: true,
            data: jsonData
        });
        var ms4 = $('#ms4').magicSuggest({
            data: [{id: 1, label: 'one'}, {id: 2, label: 'two'}, {id: 3, label: 'three'}],
            displayField: 'label',
            value: [1, 3]
        });
        var ms5 = $('#ms5').magicSuggest({
            width: '80%',
            data: 'marilyn@monroe.com,mother@teresa.com,john@kennedy.com,martin@luther.com,nelson@mandela.com,winston@churchill.com,bill@gates.com,muhammad@ali.com,mahatma@gandhi.com,margaret@thatcher.com,charles@gaulle.com,christopher@colombus.com,george@orwell.com,charles@darwin.com,elvis@presley.com,albert@einstein.com,paul@mccartney.com,queen@elizabeth.com,queen@victoria.com,john@keynes.com,mikhail@gorbachev.com,jawaharlal@nehru.com,leonardo@vinci.com,louis@pasteur.com,leo@tolstoy.com,pablo@picasso.com,vincent@gogh.com,franklin@roosevelt.com,john@paul.com,neil@armstrong.com,thomas@edison.com,rosa@parks.com,aung@kyi.com,lyndon@johnson.com,ludwig@beethoven.com,oprah@winfrey.com,indira@gandhi.com,eva@peron.com,benazir@bhutto.com,desmond@tutu.com,dalai@lama.com,walt@disney.com,peter@sellers.com,barack@obama.com,malcolm@x.com,richard@branson.com,jesse@owens.com,ernest@hemingway.com,john@lennon.com,henry@ford.com,haile@selassie.com,joseph@stalin.com,lord@baden.com,michael@jordon.com,george@bush.com,osama@laden.com,fidel@castro.com,oscar@wilde.com,coco@chanel.com,amelia@earhart.com,adolf@hitler.com,mary@magdalene.com,alfred@hitchcock.com,michael@jackson.com,mata@hari.com,emmeline@pankhurst.com,ronald@reagan.com,lionel@messi.com,babe@ruth.com,bob@geldof.com,leon@trotsky.com,roger@federer.com,sigmund@freud.com,woodrow@wilson.com,mao@zedong.com,katherine@hepburn.com,audrey@hepburn.com,david@beckham.com,tiger@woods.com,usain@bolt.com,bill@cosby.com,carl@lewis.com,prince@charles.com,jacqueline@onassis.com,billie@holiday.com,virginia@woolf.com,billie@king.com,kylie@minogue.com,anne@frank.com,emile@zatopek.com,lech@walesa.com,christiano@ronaldo.com,yoko@ono.com,julie@andrews.com,florence@nightingale.com,marie@curie.com,stephen@hawking.com,tim@lee.com,lady@gaga.com,lance@armstrong.com,jon@stewart.com,scarlett@johansson.com,larry@page.com,sergey@brin.com,roman@abramovich.com,rupert@murdoch.com,al@gore.com,sacha@baron.com,george@clooney.com,paul@krugman.com,jimmy@wales.com'
        });
        var ms6 = $('#ms6').magicSuggest({
            // will fetch data from options
        });
        var ms7 = $('#ms7').magicSuggest({
            data: jsonData,
            resultAsString: true,
            maxSelection: 1,
            maxSelectionRenderer: function () {
            }
        })
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Timeago
     /*-----------------------------------------------------------------------------------*/
    var handleTimeAgo = function () {
        jQuery(document).ready(function () {
            var curr_time = moment().format('YYYY-MM-DD HH:mm');
            var yesterday = moment().subtract('days', 1).format('MMM D, YYYY');
            $("#curr-time").html(curr_time);
            $("#curr-time").attr('title', curr_time);
            $("#curr-time").attr('data-original-title', curr_time);
            $("#yesterday").html(yesterday);
            $("#yesterday").attr('title', yesterday);
            $("#yesterday").attr('data-original-title', yesterday);
            jQuery("abbr.timeago").timeago();
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Init Timeago
     /*-----------------------------------------------------------------------------------*/
    var initTimeAgo = function () {
        jQuery("abbr.timeago").timeago();
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Date & Color Picker
     /*-----------------------------------------------------------------------------------*/
    var handleDateColorpicker = function () {
        $(".datepicker").datepicker();
        $(".inlinepicker").datepicker({
            inline: true,
            showOtherMonths: true
        });
        $(".datepicker-fullscreen").pickadate();
        $(".timepicker-fullscreen").pickatime();
        //Color picker
        $('.colorpicker').colorpicker();
        var a = $("#color-pickers")[0].style;
        $("#colorpicker-event").colorpicker().on("changeColor", function (b) {
            a.backgroundColor = b.color.toHex()
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Raty
     /*-----------------------------------------------------------------------------------*/
    var handleRaty = function () {
        $.fn.raty.defaults.path = 'js/jquery-raty/img';
        $('#score-demo').raty({score: 3});
        $('#number-demo').raty({number: 10});
        $('#readOnly-demo').raty({readOnly: true, score: 2});
        $('#halfShow-true-demo').raty({score: 3.26});
        $('#starHalf-demo').raty({
            path: 'js/jquery-raty/img',
            half: true,
            starOff: 'cookie-off.png',
            starOn: 'cookie-on.png',
            starHalf: 'cookie-half.png'
        });
        $('#star-off-and-star-on-demo').raty({
            path: 'js/jquery-raty/img',
            starOff: 'off.png',
            starOn: 'on.png'
        });
        $('#cancel-off-and-cancel-on-demo').raty({
            path: 'js/jquery-raty/img',
            cancel: true,
            cancelOff: 'cancel-custom-off.png',
            cancelOn: 'cancel-custom-on.png',
            starOn: 'star-on.png',
            starOff: 'star-off.png'
        });
        $('#size-demo').raty({
            path: 'js/jquery-raty/img',
            cancel: true,
            cancelOff: 'cancel-off-big.png',
            cancelOn: 'cancel-on-big.png',
            half: true,
            size: 24,
            starHalf: 'star-half-big.png',
            starOff: 'star-off-big.png',
            starOn: 'star-on-big.png'
        });
        $('#target-div-demo').raty({
            cancel: true,
            target: '#target-div-hint'
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Stateful buttons
     /*-----------------------------------------------------------------------------------*/
    var handleStatefulButtons = function () {
        $(document).ready(function () {
            $("#btn-load").on("click", function () {
                var a = $(this);
                a.button("loading");
                setTimeout(function () {
                    a.button("reset")
                }
                , 1500)
            }
            );
            $("#btn-load-complete").on("click", function () {
                var a = $(this);
                a.button("loading");
                setTimeout(function () {
                    a.button("complete")
                }
                , 1500)
            }
            )
        }
        );
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Toggle buttons
     /*-----------------------------------------------------------------------------------*/
    var handleToggle = function () {
        $('.radio1').on('switch-change', function () {
            $('.radio1').bootstrapSwitch('toggleRadioState');
        });
        // or
        $('.radio1').on('switch-change', function () {
            $('.radio1').bootstrapSwitch('toggleRadioStateAllowUncheck');
        });
        // or
        $('.radio1').on('switch-change', function () {
            $('.radio1').bootstrapSwitch('toggleRadioStateAllowUncheck', false);
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	jQuery UI Sliders
     /*-----------------------------------------------------------------------------------*/
    var handleSliders = function () {
        function repositionTooltip(e, ui) {
            $
            var div = $(ui.handle).data("bs.tooltip").$tip[0];
            var pos = $.extend({}, $(ui.handle).offset(), {width: $(ui.handle).get(0).offsetWidth,
                height: $(ui.handle).get(0).offsetHeight
            });

            var actualWidth = div.offsetWidth;

            tp = {left: pos.left + pos.width / 2 - actualWidth / 2}
            $(div).offset(tp);

            $(div).find(".tooltip-inner").text(ui.value);
        }

        $("#slider").slider({value: 15, slide: repositionTooltip, stop: repositionTooltip});
        $("#slider .ui-slider-handle:first").tooltip({title: $("#slider").slider("value"), trigger: "manual"}).tooltip("show");

        $("#slider-default").slider();

        $("#slider-range").slider({
            range: true, min: 0, max: 500, values: [75, 300]
        });

        $("#slider-range-min").slider({
            range: "min", value: 37, min: 1, max: 700, slide: function (a, b) {
                $("#slider-range-min-amount").text("$" + b.value)
            }
        });

        $("#slider-range-max").slider({
            range: "max", min: 1, max: 700, value: 300, slide: function (a, b) {
                $("#slider-range-max-amount").text("$" + b.value)
            }
        });

        $("#slider-vertical-multiple > span").each(function () {
            var a = parseInt($(this).text(), 10);
            $(this).empty().slider({
                value: a, range: "min", animate: true, orientation: "vertical"}
            )
        }
        );
        $("#slider-vertical-range-min").slider({
            range: "min", value: 400, min: 1, max: 600, orientation: "vertical"
        });
        $("#slider-horizontal-range-min").slider({
            range: "min", value: 600, min: 1, max: 1000
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	jQuery UI Progress
     /*-----------------------------------------------------------------------------------*/
    var handleProgress = function () {
        $(document).ready(function () {
            jQuery.fn.anim_progressbar = function (aOptions) {
                // def values
                var iCms = 1000;
                var iMms = 60 * iCms;
                var iHms = 3600 * iCms;
                var iDms = 24 * 3600 * iCms;

                // def options
                var aDefOpts = {
                    start: new Date(), // now
                    finish: new Date().setTime(new Date().getTime() + 60 * iCms), // now + 60 sec
                    interval: 100
                }
                var aOpts = jQuery.extend(aDefOpts, aOptions);
                var vPb = this;

                // each progress bar
                return this.each(
                        function () {
                            var iDuration = aOpts.finish - aOpts.start;

                            // calling original progressbar
                            $(vPb).children('.pbar').progressbar();

                            // looping process
                            var vInterval = setInterval(
                                    function () {
                                        var iLeftMs = aOpts.finish - new Date(); // left time in MS
                                        var iElapsedMs = new Date() - aOpts.start, // elapsed time in MS
                                                iDays = parseInt(iLeftMs / iDms), // elapsed days
                                                iHours = parseInt((iLeftMs - (iDays * iDms)) / iHms), // elapsed hours
                                                iMin = parseInt((iLeftMs - (iDays * iDms) - (iHours * iHms)) / iMms), // elapsed minutes
                                                iSec = parseInt((iLeftMs - (iDays * iDms) - (iMin * iMms) - (iHours * iHms)) / iCms), // elapsed seconds
                                                iPerc = (iElapsedMs > 0) ? iElapsedMs / iDuration * 100 : 0; // percentages

                                        // display current positions and progress
                                        $(vPb).children('.percent').html('<b>' + iPerc.toFixed(1) + '%</b>');
                                        $(vPb).children('.elapsed').html(iDays + ' day ' + iHours + ' hr : ' + iMin + ' min : ' + iSec + ' sec remaining</b>');
                                        $(vPb).children('.pbar').children('.ui-progressbar-value').css('width', iPerc + '%');

                                        // in case of Finish
                                        if (iPerc >= 100) {
                                            clearInterval(vInterval);
                                            $(vPb).children('.percent').html('<b>100%</b>');
                                            $(vPb).children('.elapsed').html('Completed');
                                        }
                                    }, aOpts.interval
                                    );
                        }
                );
            }

            // default mode
            $('#progress1').anim_progressbar();

            // from second #5 till 15
            var iNow = new Date().setTime(new Date().getTime() + 5 * 1000); // now plus 5 secs
            var iEnd = new Date().setTime(new Date().getTime() + 15 * 1000); // now plus 15 secs
            $('#progress2').anim_progressbar({start: iNow, finish: iEnd, interval: 100});

            // we will just set interval of updating to 1 sec
            $('#progress3').anim_progressbar({interval: 1000});
        });

    }
    /*-----------------------------------------------------------------------------------*/
    /*	jQuery Knob
     /*-----------------------------------------------------------------------------------*/
    var handleKnobs = function () {
        $(".knob").knob({
            change: function (value) {
                //console.log("change : " + value);
            },
            release: function (value) {
                //console.log(this.$.attr('value'));
                console.log("release : " + value);
            },
            cancel: function () {
                console.log("cancel : ", this);
            },
            draw: function () {

                // "tron" case
                if (this.$.data('skin') == 'tron') {

                    var a = this.angle(this.cv)  // Angle
                            , sa = this.startAngle          // Previous start angle
                            , sat = this.startAngle         // Start angle
                            , ea                            // Previous end angle
                            , eat = sat + a                 // End angle
                            , r = 1;

                    this.g.lineWidth = this.lineWidth;

                    this.o.cursor
                            && (sat = eat - 0.3)
                            && (eat = eat + 0.3);

                    if (this.o.displayPrevious) {
                        ea = this.startAngle + this.angle(this.v);
                        this.o.cursor
                                && (sa = ea - 0.3)
                                && (ea = ea + 0.3);
                        this.g.beginPath();
                        this.g.strokeStyle = this.pColor;
                        this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, sa, ea, false);
                        this.g.stroke();
                    }

                    this.g.beginPath();
                    this.g.strokeStyle = r ? this.o.fgColor : this.fgColor;
                    this.g.arc(this.xy, this.xy, this.radius - this.lineWidth, sat, eat, false);
                    this.g.stroke();

                    this.g.lineWidth = 2;
                    this.g.beginPath();
                    this.g.strokeStyle = this.o.fgColor;
                    this.g.arc(this.xy, this.xy, this.radius - this.lineWidth + 1 + this.lineWidth * 2 / 3, 0, 2 * Math.PI, false);
                    this.g.stroke();

                    return false;
                }
            }
        });
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Custom tabs
     /*-----------------------------------------------------------------------------------*/
    var handleCustomTabs = function () {
        var adjustMinHeight = function (y) {
            $(y).each(function () {
                var A = $($($(this).attr("href")));
                var z = $(this).parent().parent();
                if (z.height() > A.height()) {
                    A.css("min-height", z.height())
                }
            })
        };
        $("body").on("click", '.nav.nav-tabs.tabs-left a[data-toggle="tab"], .nav.nav-tabs.tabs-right a[data-toggle="tab"]', function () {
            adjustMinHeight($(this))
        });
        adjustMinHeight('.nav.nav-tabs.tabs-left > li.active > a[data-toggle="tab"], .nav.nav-tabs.tabs-right > li.active > a[data-toggle="tab"]');
        if (location.hash) {
            var w = location.hash.substr(1);
            $('a[href="#' + w + '"]').click()
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Fuel UX Tree
     /*-----------------------------------------------------------------------------------*/
    var handleTree = function () {
        $('#tree1').admin_tree({
            dataSource: treeDataSource,
            multiSelect: true,
            loadingHTML: '<div class="tree-loading"><i class="fa fa-spinner fa-2x fa-spin"></i></div>',
            'open-icon': 'fa-minus',
            'close-icon': 'fa-plus',
            'selectable': true,
            'selected-icon': 'fa-check',
            'unselected-icon': 'fa-times'
        });
        $('#tree3').admin_tree({
            dataSource: treeDataSource3,
            multiSelect: true,
            loadingHTML: '<div class="tree-loading"><i class="fa fa-spinner fa-2x fa-spin"></i></div>',
            'open-icon': 'fa-minus-square',
            'close-icon': 'fa-plus-square',
            'selectable': true,
            'selected-icon': 'fa-check',
            'unselected-icon': 'fa-times'
        });
        $('#tree2').admin_tree({
            dataSource: treeDataSource2,
            loadingHTML: '<div class="tree-loading"><i class="fa fa-spinner fa-2x fa-spin"></i></div>',
            'open-icon': 'fa-folder-open',
            'close-icon': 'fa-folder',
            'selectable': false,
            'selected-icon': null,
            'unselected-icon': null
        });


        //To add font awesome support
        $('.tree').find('[class*="fa-"]').addClass("fa");
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Nestable Lists
     /*-----------------------------------------------------------------------------------*/
    var handleNestableLists = function () {
        var updateOutput = function (e)
        {
            var list = e.length ? e : $(e.target),
                    output = list.data('output');
            if (window.JSON) {
                output.val(window.JSON.stringify(list.nestable('serialize')));//, null, 2));
            } else {
                output.val('JSON browser support required for this demo.');
            }
        };

        // activate Nestable for list 1
        $('#nestable').nestable({
            group: 1
        })
                .on('change', updateOutput);

        // activate Nestable for list 2
        $('#nestable2').nestable({
            group: 1
        })
                .on('change', updateOutput);

        // output initial serialised data
        updateOutput($('#nestable').data('output', $('#nestable-output')));
        updateOutput($('#nestable2').data('output', $('#nestable2-output')));

        $('#nestable-menu').on('click', function (e)
        {
            var target = $(e.target),
                    action = target.data('action');
            if (action === 'expand-all') {
                $('.dd').nestable('expandAll');
            }
            if (action === 'collapse-all') {
                $('.dd').nestable('collapseAll');
            }
        });

        $('#nestable3').nestable();
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Table Cloth
     /*-----------------------------------------------------------------------------------*/
    var handleTablecloth = function () {
        $("#example-dark").tablecloth({
            theme: "dark"
        });
        $("#example-paper").tablecloth({
            theme: "paper",
            striped: true
        });
        $("#example-stats").tablecloth({
            theme: "stats",
            sortable: true,
            condensed: true,
            striped: true,
            clean: true
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Data Tables
     /*-----------------------------------------------------------------------------------*/
    var handleDataTables = function () {
        $('#datatable1').dataTable({
            "sPaginationType": "bs_full"
        });
        $('#datatable2').dataTable({
            "sPaginationType": "bs_full",
            sDom: "<'row'<'dataTables_header clearfix'<'col-md-4'l><'col-md-8'Tf>r>>t<'row'<'dataTables_footer clearfix'<'col-md-6'i><'col-md-6'p>>>",
            oTableTools: {
                aButtons: ["copy", "print", "csv", "xls", "pdf"],
                sSwfPath: url + "/Htmllayout/cloud/js/datatables/extras/TableTools/media/swf/copy_csv_xls_pdf.swf"
            }
        });
        $('.datatable').each(function () {
            var datatable = $(this);
            // SEARCH - Add the placeholder for Search and Turn this into in-line form control
            var search_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] input');
            search_input.attr('placeholder', 'Search');
            search_input.addClass('form-control input-sm');
            // LENGTH - Inline-Form control
            var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_length] select');
            length_sel.addClass('form-control input-sm');
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	jqGrid
     /*-----------------------------------------------------------------------------------*/
    var handleJqgrid = function () {
        var grid_data =
                [
                    {id: "1", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "2", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "3", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "4", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "5", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "6", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "7", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "8", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "9", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "10", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "11", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "12", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "13", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "14", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "15", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "16", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "17", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "18", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "19", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "20", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "21", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "22", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "23", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "24", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"},
                    {id: "25", invdate: "2007-12-03", name: "Client1", amount: "1000.00", tax: "140.00", total: "1000.00", note: "This is a note"}
                ];
        jQuery("#rowed3").jqGrid({
            data: grid_data,
            datatype: "local",
            height: 250,
            colNames: ['Inv No', 'Date', 'Client', 'Amount', 'Tax', 'Total', 'Notes'],
            colModel: [{
                    name: 'id',
                    index: 'id',
                    width: 55
                }, {
                    name: 'invdate',
                    index: 'invdate',
                    width: 90,
                    editable: true
                }, {
                    name: 'name',
                    index: 'name',
                    width: 100,
                    editable: true
                }, {
                    name: 'amount',
                    index: 'amount',
                    width: 80,
                    align: "right",
                    editable: true
                }, {
                    name: 'tax',
                    index: 'tax',
                    width: 80,
                    align: "right",
                    editable: true
                }, {
                    name: 'total',
                    index: 'total',
                    width: 80,
                    align: "right",
                    editable: true
                }, {
                    name: 'note',
                    index: 'note',
                    width: 150,
                    sortable: false,
                    editable: true
                }],
            rowNum: 10,
            rowList: [10, 20, 30],
            pager: '#prowed3',
            sortname: 'id',
            viewrecords: true,
            sortorder: "asc",
            editurl: "server.html",
            caption: "Inline navigator",
            autowidth: true
        });
        jQuery("#rowed3").jqGrid('navGrid', "#prowed3", {
            edit: false,
            add: false,
            del: false
        });
        jQuery("#rowed3").jqGrid('inlineNav', "#prowed3");
        /* Add tooltips */
        $('.navtable .ui-pg-button').tooltip({container: 'body'});
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Typeahead
     /*-----------------------------------------------------------------------------------*/
    var handleTypeahead = function () {
        $('#autocomplete-example').typeahead({
            name: 'countries',
            local: ["red", "blue", "green", "yellow", "brown", "black"]
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Autosize
     /*-----------------------------------------------------------------------------------*/
    var handleAutosize = function () {
        $('textarea.autosize').autosize();
        $('textarea.autosize').addClass('textarea-transition');
    }
    /*-----------------------------------------------------------------------------------*/
    /*	jquery Counatble
     /*-----------------------------------------------------------------------------------*/
    var handleCountable = function () {
        $('.countable').simplyCountable();
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Select2
     /*-----------------------------------------------------------------------------------*/
    var handleSelect2 = function () {
        function movieFormatResult(movie) {
            var markup = "<table class='movie-result'><tr>";
            if (movie.posters !== undefined && movie.posters.thumbnail !== undefined) {
                markup += "<td class='movie-image'><img src='" + movie.posters.thumbnail + "'/></td>";
            }
            markup += "<td class='movie-info'><div class='movie-title'>" + movie.title + "</div>";
            if (movie.critics_consensus !== undefined) {
                markup += "<div class='movie-synopsis'>" + movie.critics_consensus + "</div>";
            }
            else if (movie.synopsis !== undefined) {
                markup += "<div class='movie-synopsis'>" + movie.synopsis + "</div>";
            }
            markup += "</td></tr></table>"
            return markup;
        }

        function movieFormatSelection(movie) {
            return movie.title;
        }
        /* Basic */
        $("#e1").select2();
        /* Multi-Value Select Boxes */
        $("#e2").select2();
        /* With Placeholders */
        $("#e3").select2({
            placeholder: "Select a State",
            allowClear: true
        });
        /* With Placeholders */
        $("#e4").select2({
            placeholder: "Select a State"
        });
        /* Minimum Input */
        $("#e5").select2({
            placeholder: "Select 2 characters",
            minimumInputLength: 2
        });
        /* Maximum Selection Size */
        $("#e6").select2({
            placeholder: "Select a maximum of 3 states",
            maximumSelectionSize: 3
        });
        /* Loading Remote Data */
        $("#e7").select2({
            placeholder: "Search for a movie",
            minimumInputLength: 1,
            ajax: {// instead of writing the function to execute the request we use Select2's convenient helper
                url: "http://api.rottentomatoes.com/api/public/v1.0/movies.json",
                dataType: 'jsonp',
                data: function (term, page) {
                    return {
                        q: term, // search term
                        page_limit: 10,
                        apikey: "uekzdmffsrmqzwdtcgmc5yu9" //please do not copy API. Use your own. Copying will be treated as a violation - Cloud Admin Author
                    };
                },
                results: function (data, page) { // parse the results into the format expected by Select2.
                    // since we are using custom formatting functions we do not need to alter remote JSON data
                    return {results: data.movies};
                }
            },
            initSelection: function (element, callback) {
                // the input tag has a value attribute preloaded that points to a preselected movie's id
                // this function resolves that id attribute to an object that select2 can render
                // using its formatResult renderer - that way the movie name is shown preselected
                var id = $(element).val();
                if (id !== "") {
                    $.ajax("http://api.rottentomatoes.com/api/public/v1.0/movies/" + id + ".json", {
                        data: {
                            apikey: "uekzdmffsrmqzwdtcgmc5yu9" //please do not copy API. Use your own. Copying will be treated as a violation - Cloud Admin Author
                        },
                        dataType: "jsonp"
                    }).done(function (data) {
                        callback(data);
                    });
                }
            },
            formatResult: movieFormatResult, // omitted for brevity, see the source of this page
            formatSelection: movieFormatSelection, // omitted for brevity, see the source of this page
            dropdownCssClass: "bigdrop", // apply css that makes the dropdown taller
            escapeMarkup: function (m) {
                return m;
            } // we do not want to escape markup since we are displaying html in results
        });
        /* Tagging Support */
        $("#e8").select2({
            tags: ["red", "green", "blue"]
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Uniform
     /*-----------------------------------------------------------------------------------*/
    var handleUniform = function () {
        $(".uniform").uniform();
    }
    /*-----------------------------------------------------------------------------------*/
    /*	All Checkboxes
     /*-----------------------------------------------------------------------------------*/
    var handleAllUniform = function () {
        $("select, input[type='checkbox']").uniform();
    }
    /*-----------------------------------------------------------------------------------*/
    /*	BT Wysiwyg
     /*-----------------------------------------------------------------------------------*/
    var handleWysiwyg = function () {
        /* Init Bootstrap WYSIWYG */
        function initToolbarBootstrapBindings() {
            var fonts = ['Serif', 'Sans', 'Arial', 'Arial Black', 'Courier',
                'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande', 'Lucida Sans', 'Tahoma', 'Times',
                'Times New Roman', 'Verdana'],
                    fontTarget = $('[title=Font]').siblings('.dropdown-menu');
            $.each(fonts, function (idx, fontName) {
                fontTarget.append($('<li><a data-edit="fontName ' + fontName + '" style="font-family:\'' + fontName + '\'">' + fontName + '</a></li>'));
            });
            $('a[title]').tooltip({container: 'body'});
            $('.dropdown-menu input').click(function () {
                return false;
            })
                    .change(function () {
                        $(this).parent('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle');
                    })
                    .keydown('esc', function () {
                        this.value = '';
                        $(this).change();
                    });

            $('[data-role=magic-overlay]').each(function () {
                var overlay = $(this), target = $(overlay.data('target'));
                overlay.css('opacity', 0).css('position', 'absolute').offset(target.offset()).width(target.outerWidth()).height(target.outerHeight());
            });
            if ("onwebkitspeechchange"  in document.createElement("input")) {
                var editorOffset = $('#editor').offset();
                $('#voiceBtn').css('position', 'absolute').offset({top: editorOffset.top, left: editorOffset.left + $('#editor').innerWidth() - 35});
            } else {
                $('#voiceBtn').hide();
            }
        }
        ;
        function showErrorAlert(reason, detail) {
            var msg = '';
            if (reason === 'unsupported-file-type') {
                msg = "Unsupported format " + detail;
            }
            else {
                console.log("error uploading file", reason, detail);
            }
            $('<div class="alert"> <button type="button" class="close" data-dismiss="alert">&times;</button>' +
                    '<strong>File upload error</strong> ' + msg + ' </div>').prependTo('#alerts');
        }
        ;
        initToolbarBootstrapBindings();
        $('#editor').wysiwyg({fileUploadError: showErrorAlert});
        /* Disable auto-inline */
        CKEDITOR.disableAutoInline = true;
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Dropzone
     /*-----------------------------------------------------------------------------------*/
    var handleDropzone = function () {
        try {
            $(".dropzone").dropzone({
                paramName: "file", // The name that will be used to transfer the file
                maxFilesize: 0.5, // MB

                addRemoveLinks: true,
                dictResponseError: 'Error while uploading file!',
                //change the previewTemplate to use Bootstrap progress bars
                previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n  <div class=\"dz-details\">\n    <div class=\"dz-filename\"><span data-dz-name></span></div>\n    <div class=\"dz-size\" data-dz-size></div>\n    <img data-dz-thumbnail />\n  </div>\n  <div class=\"progress progress-sm progress-striped active\"><div class=\"progress-bar progress-bar-success\" data-dz-uploadprogress></div></div>\n  <div class=\"dz-success-mark\"><span></span></div>\n  <div class=\"dz-error-mark\"><span></span></div>\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n</div>"
            });
        } catch (e) {
            alert('Dropzone.js does not support older browsers!');
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	XCharts
     /*-----------------------------------------------------------------------------------*/
    var handleXcharts = function () {

        //Dynamic Chart
        function chart1() {
            var data = [{"xScale": "ordinal", "comp": [], "main": [{"className": ".main.l1", "data": [{"y": 15, "x": "2012-11-19T00:00:00"}, {"y": 11, "x": "2012-11-20T00:00:00"}, {"y": 8, "x": "2012-11-21T00:00:00"}, {"y": 10, "x": "2012-11-22T00:00:00"}, {"y": 1, "x": "2012-11-23T00:00:00"}, {"y": 6, "x": "2012-11-24T00:00:00"}, {"y": 8, "x": "2012-11-25T00:00:00"}]}, {"className": ".main.l2", "data": [{"y": 29, "x": "2012-11-19T00:00:00"}, {"y": 33, "x": "2012-11-20T00:00:00"}, {"y": 13, "x": "2012-11-21T00:00:00"}, {"y": 16, "x": "2012-11-22T00:00:00"}, {"y": 7, "x": "2012-11-23T00:00:00"}, {"y": 18, "x": "2012-11-24T00:00:00"}, {"y": 8, "x": "2012-11-25T00:00:00"}]}], "type": "line-dotted", "yScale": "linear"}, {"xScale": "ordinal", "comp": [], "main": [{"className": ".main.l1", "data": [{"y": 12, "x": "2012-11-19T00:00:00"}, {"y": 18, "x": "2012-11-20T00:00:00"}, {"y": 8, "x": "2012-11-21T00:00:00"}, {"y": 7, "x": "2012-11-22T00:00:00"}, {"y": 6, "x": "2012-11-23T00:00:00"}, {"y": 12, "x": "2012-11-24T00:00:00"}, {"y": 8, "x": "2012-11-25T00:00:00"}]}, {"className": ".main.l2", "data": [{"y": 29, "x": "2012-11-19T00:00:00"}, {"y": 33, "x": "2012-11-20T00:00:00"}, {"y": 13, "x": "2012-11-21T00:00:00"}, {"y": 16, "x": "2012-11-22T00:00:00"}, {"y": 7, "x": "2012-11-23T00:00:00"}, {"y": 18, "x": "2012-11-24T00:00:00"}, {"y": 8, "x": "2012-11-25T00:00:00"}]}], "type": "cumulative", "yScale": "linear"}, {"xScale": "ordinal", "comp": [], "main": [{"className": ".main.l1", "data": [{"y": 12, "x": "2012-11-19T00:00:00"}, {"y": 18, "x": "2012-11-20T00:00:00"}, {"y": 8, "x": "2012-11-21T00:00:00"}, {"y": 7, "x": "2012-11-22T00:00:00"}, {"y": 6, "x": "2012-11-23T00:00:00"}, {"y": 12, "x": "2012-11-24T00:00:00"}, {"y": 8, "x": "2012-11-25T00:00:00"}]}, {"className": ".main.l2", "data": [{"y": 29, "x": "2012-11-19T00:00:00"}, {"y": 33, "x": "2012-11-20T00:00:00"}, {"y": 13, "x": "2012-11-21T00:00:00"}, {"y": 16, "x": "2012-11-22T00:00:00"}, {"y": 7, "x": "2012-11-23T00:00:00"}, {"y": 18, "x": "2012-11-24T00:00:00"}, {"y": 8, "x": "2012-11-25T00:00:00"}]}], "type": "bar", "yScale": "linear"}];
            var order = [0, 1, 0, 2],
                    i = 0,
                    xFormat = d3.time.format('%A'),
                    chart = new xChart('line-dotted', data[order[i]], '#chart1', {
                        axisPaddingTop: 5,
                        dataFormatX: function (x) {
                            return new Date(x);
                        },
                        tickFormatX: function (x) {
                            return xFormat(x);
                        },
                        timing: 1250
                    }),
                    rotateTimer,
                    toggles = d3.selectAll('.multi button'),
                    t = 3500;

            function updateChart(i) {
                var d = data[i];
                chart.setData(d);
                toggles.classed('toggled', function () {
                    return (d3.select(this).attr('data-type') === d.type);
                });
                return d;
            }

            toggles.on('click', function (d, i) {
                clearTimeout(rotateTimer);
                updateChart(i);
            });

            function rotateChart() {
                i += 1;
                i = (i >= order.length) ? 0 : i;
                var d = updateChart(order[i]);
                rotateTimer = setTimeout(rotateChart, t);
            }
            rotateTimer = setTimeout(rotateChart, t);
        }

        //Time-Series Line
        function chart2() {
            var data = {
                "xScale": "time",
                "yScale": "linear",
                "type": "line",
                "main": [
                    {
                        "className": ".pizza",
                        "data": [
                            {
                                "x": "2012-11-05",
                                "y": 1
                            },
                            {
                                "x": "2012-11-06",
                                "y": 6
                            },
                            {
                                "x": "2012-11-07",
                                "y": 13
                            },
                            {
                                "x": "2012-11-08",
                                "y": -3
                            },
                            {
                                "x": "2012-11-09",
                                "y": -4
                            },
                            {
                                "x": "2012-11-10",
                                "y": 9
                            },
                            {
                                "x": "2012-11-11",
                                "y": 6
                            }
                        ]
                    }
                ]
            };
            var opts = {
                "dataFormatX": function (x) {
                    return d3.time.format('%Y-%m-%d').parse(x);
                },
                "tickFormatX": function (x) {
                    return d3.time.format('%A')(x);
                }
            };
            var myChart = new xChart('line', data, '#chart2', opts);
        }

        function chart3() {
            var tt = document.createElement('div'),
                    leftOffset = -(~~$('html').css('padding-left').replace('px', '') + ~~$('body').css('margin-left').replace('px', '')),
                    topOffset = -32;
            tt.className = 'ex-tooltip';
            document.body.appendChild(tt);

            var data = {
                "xScale": "time",
                "yScale": "linear",
                "main": [
                    {
                        "className": ".pizza",
                        "data": [
                            {
                                "x": "2012-11-05",
                                "y": 6
                            },
                            {
                                "x": "2012-11-06",
                                "y": 6
                            },
                            {
                                "x": "2012-11-07",
                                "y": 8
                            },
                            {
                                "x": "2012-11-08",
                                "y": 3
                            },
                            {
                                "x": "2012-11-09",
                                "y": 4
                            },
                            {
                                "x": "2012-11-10",
                                "y": 9
                            },
                            {
                                "x": "2012-11-11",
                                "y": 6
                            }
                        ]
                    }
                ]
            };
            var opts = {
                "dataFormatX": function (x) {
                    return d3.time.format('%Y-%m-%d').parse(x);
                },
                "tickFormatX": function (x) {
                    return d3.time.format('%A')(x);
                },
                "mouseover": function (d, i) {
                    var pos = $(this).offset();
                    $(tt).text(d3.time.format('%A')(d.x) + ': ' + d.y)
                            .css({top: topOffset + pos.top, left: pos.left + leftOffset})
                            .show();
                },
                "mouseout": function (x) {
                    $(tt).hide();
                }
            };
            var myChart = new xChart('line-dotted', data, '#chart3', opts);
        }

        function chart4() {
            var data = {
                "xScale": "ordinal",
                "yScale": "linear",
                "main": [
                    {
                        "className": ".pizza",
                        "data": [
                            {
                                "x": "Pepperoni",
                                "y": 4
                            },
                            {
                                "x": "Cheese",
                                "y": 8
                            }
                        ]
                    }
                ]
            };
            var myChart = new xChart('bar', data, '#chart4');
        }

        function chart5() {
            var data = {
                "xScale": "ordinal",
                "yScale": "linear",
                "main": [
                    {
                        "className": ".pizza",
                        "data": [
                            {
                                "x": "Pepperoni",
                                "y": 4
                            },
                            {
                                "x": "Cheese",
                                "y": 8
                            }
                        ]
                    },
                    {
                        "className": ".pizza",
                        "data": [
                            {
                                "x": "Pepperoni",
                                "y": 6
                            },
                            {
                                "x": "Cheese",
                                "y": 5
                            }
                        ]
                    }
                ]
            };
            var myChart = new xChart('bar', data, '#chart5');
        }

        function chart6() {
            var errorBar = {
                enter: function (self, storage, className, data, callbacks) {
                    var insertionPoint = xChart.visutils.getInsertionPoint(9),
                            container,
                            // Map each error bar into 3 points, so it's easier to draw as a single path
                            // Converts each point to a triplet with y from (y - e) to (y + e)
                            // It would be better to use the `preUpdateScale` method here,
                            // but for this quick example, we're taking a shortcut :)
                            eData = data.map(function (d) {
                                d.data = d.data.map(function (d) {
                                    return [{x: d.x, y: d.y - d.e}, {x: d.x, y: d.y}, {x: d.x, y: d.y + d.e}];
                                });
                                return d;
                            }),
                            paths;

                    // It's always a good idea to create containers for sets
                    container = self._g.selectAll('.errorLine' + className)
                            .data(eData, function (d) {
                                return d.className;
                            });

                    // The insertionPoint is a special method that helps us insert this
                    // vis at a particular z-index
                    // In this case, we've chosen the highest point (above everything else)
                    container.enter().insert('g', insertionPoint)
                            .attr('class', function (d, i) {
                                return 'errorLine' + className.replace(/\./g, ' ') +
                                        ' color' + i;
                            });

                    // Tell each path about its data
                    // and ensure we reuse any previously drawn item
                    paths = container.selectAll('path')
                            .data(function (d) {
                                return d.data;
                            }, function (d) {
                                return d[0].x;
                            });

                    paths.enter().insert('path')
                            .style('opacity', 0)
                            .attr('d', d3.svg.line()
                                    .x(function (d) {
                                        // We offset by half the rangeBand, because this is a bar chart
                                        return self.xScale(d.x) + self.xScale.rangeBand() / 2;
                                    })
                                    .y(function (d) {
                                        return self.yScale(d.y);
                                    })
                                    );

                    storage.containers = container;
                    storage.paths = paths;
                },
                update: function (self, storage, timing) {
                    // This is mostly duplication to the d3.svg.line from the enter() method
                    storage.paths.transition().duration(timing)
                            .style('opacity', 1)
                            .attr('d', d3.svg.line()
                                    .x(function (d) {
                                        return self.xScale(d.x) + self.xScale.rangeBand() / 2;
                                    })
                                    .y(function (d) {
                                        return self.yScale(d.y);
                                    })
                                    );
                },
                exit: function (self, storage, timing) {
                    storage.paths.exit()
                            .transition().duration(timing)
                            .style('opacity', 0);
                },
                destroy: function (self, storage, timing) {
                    storage.paths.transition().duration(timing)
                            .style('opacity', 0)
                            .remove();
                }
            };

            xChart.setVis('error', errorBar);

            var data = [{
                    "xScale": "ordinal",
                    "yScale": "linear",
                    "main": [
                        {
                            "className": ".errorExample",
                            "data": [
                                {
                                    "x": "Ponies",
                                    "y": 12
                                },
                                {
                                    "x": "Unicorns",
                                    "y": 23
                                },
                                {
                                    "x": "Trolls",
                                    "y": 1
                                }
                            ]
                        }
                    ],
                    "comp": [
                        {
                            "type": "error",
                            "className": ".comp.errorBar",
                            "data": [
                                {
                                    "x": "Ponies",
                                    "y": 12,
                                    "e": 5
                                },
                                {
                                    "x": "Unicorns",
                                    "y": 23,
                                    "e": 2
                                },
                                {
                                    "x": "Trolls",
                                    "y": 1,
                                    "e": 1
                                }
                            ]
                        }
                    ]
                },
                {
                    "xScale": "ordinal",
                    "yScale": "linear",
                    "main": [
                        {
                            "className": ".errorExample",
                            "data": [
                                {
                                    "x": "Ponies",
                                    "y": 76
                                },
                                {
                                    "x": "Unicorns",
                                    "y": 45
                                },
                                {
                                    "x": "Trolls",
                                    "y": 82
                                }
                            ]
                        }
                    ],
                    "comp": [
                        {
                            "type": "error",
                            "className": ".comp.errorBar",
                            "data": [
                                {
                                    "x": "Ponies",
                                    "y": 76,
                                    "e": 12
                                },
                                {
                                    "x": "Unicorns",
                                    "y": 45,
                                    "e": 3
                                },
                                {
                                    "x": "Trolls",
                                    "y": 82,
                                    "e": 12
                                }
                            ]
                        }
                    ]
                }
            ];

            var myChart = new xChart('bar', data[0], '#chart6'), i = 0;

            function timer() {
                setTimeout(function () {
                    timer();
                    i += 1;
                    myChart.setData(data[i % 2]);
                }, 3000);
            }
            timer();
        }

        //Run all charts
        chart1();
        chart2();
        chart3();
        chart4();
        chart5();
        chart6();
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Justgage
     /*-----------------------------------------------------------------------------------*/
    var handleGage = function () {
        var g1, g2, g3, g4, g5, g6;

        window.onload = function () {
            var g1 = new JustGage({
                id: "g1",
                value: getRandomInt(0, 100),
                min: 0,
                max: 100,
                title: "Custom Width",
                label: "",
                gaugeWidthScale: 0.2
            });

            var g2 = new JustGage({
                id: "g2",
                value: getRandomInt(0, 100),
                min: 0,
                max: 100,
                title: "Custom Shadow",
                label: "",
                shadowOpacity: 1,
                shadowSize: 0,
                shadowVerticalOffset: 4
            });

            var g3 = new JustGage({
                id: "g3",
                value: getRandomInt(0, 100),
                min: 0,
                max: 100,
                title: "Custom Colors",
                label: "",
                levelColors: [Theme.colors.red, Theme.colors.yellow, Theme.colors.green]
            });

            var g4 = new JustGage({
                id: "g4",
                value: getRandomInt(0, 100),
                min: 0,
                max: 100,
                title: "Hide Labels",
                showMinMax: false
            });


            var g5 = new JustGage({
                id: "g5",
                value: getRandomInt(0, 100),
                min: 0,
                max: 100,
                title: "Animation Type",
                label: "",
                startAnimationTime: 2000,
                startAnimationType: ">",
                refreshAnimationTime: 1000,
                refreshAnimationType: "bounce"
            });

            var g6 = new JustGage({
                id: "g6",
                value: getRandomInt(0, 100),
                min: 0,
                max: 100,
                title: "Minimal",
                label: "",
                showMinMax: false,
                gaugeColor: "#E6E6E6",
                levelColors: ["#555555"],
                showInnerShadow: false,
                startAnimationTime: 1,
                startAnimationType: "linear",
                refreshAnimationTime: 1,
                refreshAnimationType: "linear"
            });

            setInterval(function () {
                g1.refresh(getRandomInt(0, 100));
                g2.refresh(getRandomInt(0, 100));
                g3.refresh(getRandomInt(0, 100));
                g4.refresh(getRandomInt(0, 100));
                g5.refresh(getRandomInt(0, 100));
                g6.refresh(getRandomInt(0, 100));
            }, 2500);
        };
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Easy Pie chart
     /*-----------------------------------------------------------------------------------*/
    var handleEasyPie = function () {
        //Pie 1
        $('#pie_1').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent));
            },
            lineWidth: 3,
            barColor: '#A8BC7B'
        });
        var chart1 = window.chart = $('#pie_1').data('easyPieChart');
        $('#js_update_1').on('click', function () {
            chart1.update(Math.random() * 100);
        });

        //Pie 2
        $('#pie_2').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent));
            },
            lineWidth: 6,
            barColor: '#F0AD4E'
        });
        var chart2 = window.chart = $('#pie_2').data('easyPieChart');
        $('#js_update_2').on('click', function () {
            chart2.update(Math.random() * 100);
        });

        //Pie 3
        $('#pie_3').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent));
            },
            lineWidth: 9,
            barColor: '#D9534F'
        });
        var chart3 = window.chart = $('#pie_3').data('easyPieChart');
        $('#js_update_3').on('click', function () {
            chart3.update(Math.random() * 100);
        });

        //Pie 4
        $('#pie_4').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent));
            },
            lineWidth: 12,
            barColor: '#70AFC4',
            lineCap: 'butt'
        });
        var chart4 = window.chart = $('#pie_4').data('easyPieChart');
        $('#js_update_4').on('click', function () {
            chart4.update(Math.random() * 100);
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Easy Pie chart for profile
     /*-----------------------------------------------------------------------------------*/
    var handleProfileSkillPie = function () {

        //Pie 1
        $('#pie_1').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent) + "%");
            },
            lineWidth: 6,
            barColor: '#F0AD4E'
        });
        var chart1 = window.chart = $('#pie_1').data('easyPieChart');

        //Pie 2
        $('#pie_2').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent) + "%");
            },
            lineWidth: 6,
            barColor: '#D9534F'
        });
        var chart2 = window.chart = $('#pie_2').data('easyPieChart');

        //Pie 3
        $('#pie_3').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent) + "%");
            },
            lineWidth: 6,
            barColor: '#70AFC4'
        });
        var chart3 = window.chart = $('#pie_3').data('easyPieChart');
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Sparklines
     /*-----------------------------------------------------------------------------------*/
    var handleSparkline = function () {
        //Sparkline bar
        $(".sparkline").each(function () {
            var barSpacing, barWidth, color, height;
            color = $(this).attr("data-color") || "red";
            height = "18px";
            if ($(this).hasClass("big")) {
                barWidth = "5px";
                barSpacing = "2px";
                height = "40px";
            }
            return $(this).sparkline("html", {
                type: "bar",
                barColor: Theme.colors[color],
                height: height,
                barWidth: barWidth,
                barSpacing: barSpacing,
                zeroAxis: false
            });
        });
        //Sparkline Pie
        $(".sparklinepie").each(function () {
            var height;
            height = "50px";
            if ($(this).hasClass("big")) {
                height = "70px";
            }
            return $(this).sparkline("html", {
                type: "pie",
                height: height,
                sliceColors: [Theme.colors.blue, Theme.colors.red, Theme.colors.green, Theme.colors.orange]
            });
        });
        //Sparkline Line
        $(".linechart").each(function () {
            var height;
            height = "18px";
            if ($(this).hasClass("linechart-lg")) {
                height = "30px";
            }
            return $(this).sparkline("html", {
                type: "line",
                height: height,
                width: "150px",
                minSpotColor: Theme.colors.red,
                maxSpotColor: Theme.colors.green,
                spotRadius: 3,
                lineColor: Theme.colors.primary,
                fillColor: "rgba(94,135,176,0.1)",
                lineWidth: 1.2,
                highlightLineColor: Theme.colors.red,
                highlightSpotColor: Theme.colors.yellow
            });
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Fullcalendar
     /*-----------------------------------------------------------------------------------*/
    var handleCalendar = function () {
        /* initialize the external events
         -----------------------------------------------------------------*/

        var initDrag = function (el) {

            // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)
            // it doesn't need to have a start or end
            var eventObject = {
                title: $.trim(el.text()) // use the element's text as the event title
            };

            // store the Event Object in the DOM element so we can get to it later
            el.data('eventObject', eventObject);

            // make the event draggable using jQuery UI
            el.draggable({
                zIndex: 999,
                revert: true, // will cause the event to go back to its
                revertDuration: 0  //  original position after the drag
            });

        }

        var addEvent = function (title) {
            title = title.length == 0 ? "Untitled Event" : title;
            var html = $('<div class="external-event">' + title + '</div>');
            jQuery('#event-box').append(html);
            initDrag(html);
        }

        $('#external-events div.external-event').each(function () {
            initDrag($(this))
        });

        $('#add-event').unbind('click').click(function () {
            var title = $('#event-title').val();
            addEvent(title);
        });


        /* initialize the calendar
         -----------------------------------------------------------------*/
        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();

        var calendar = $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            selectable: true,
            selectHelper: true,
            select: function (start, end, allDay) {
                var title = prompt('Event Title:');
                if (title) {
                    calendar.fullCalendar('renderEvent',
                            {
                                title: title,
                                start: start,
                                end: end,
                                allDay: allDay
                            },
                    true // make the event "stick"
                            );
                }
                calendar.fullCalendar('unselect');
            },
            editable: true,
            editable: true,
                    droppable: true, // this allows things to be dropped onto the calendar !!!
            drop: function (date, allDay) { // this function is called when something is dropped

                // retrieve the dropped element's stored Event Object
                var originalEventObject = $(this).data('eventObject');

                // we need to copy it, so that multiple events don't have a reference to the same object
                var copiedEventObject = $.extend({}, originalEventObject);

                // assign it the date that was reported
                copiedEventObject.start = date;
                copiedEventObject.allDay = allDay;

                // render the event on the calendar
                // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
                $('#calendar').fullCalendar('renderEvent', copiedEventObject, true);

                // is the "remove after drop" checkbox checked?
                if ($('#drop-remove').is(':checked')) {
                    // if so, remove the element from the "Draggable Events" list
                    $(this).remove();
                }

            },
            events: [
                {
                    title: 'All Day Event',
                    start: new Date(y, m, 1),
                    backgroundColor: Theme.colors.blue,
                },
                {
                    title: 'Long Event',
                    start: new Date(y, m, d - 5),
                    end: new Date(y, m, d - 2),
                    backgroundColor: Theme.colors.red,
                },
                {
                    id: 999,
                    title: 'Repeating Event',
                    start: new Date(y, m, d - 3, 16, 0),
                    allDay: false,
                    backgroundColor: Theme.colors.yellow,
                },
                {
                    id: 999,
                    title: 'Repeating Event',
                    start: new Date(y, m, d + 4, 16, 0),
                    allDay: false,
                    backgroundColor: Theme.colors.primary,
                },
                {
                    title: 'Meeting',
                    start: new Date(y, m, d, 10, 30),
                    allDay: false,
                    backgroundColor: Theme.colors.green,
                },
                {
                    title: 'Lunch',
                    start: new Date(y, m, d, 12, 0),
                    end: new Date(y, m, d, 14, 0),
                    allDay: false,
                    backgroundColor: Theme.colors.red,
                },
                {
                    title: 'Birthday Party',
                    start: new Date(y, m, d + 1, 19, 0),
                    end: new Date(y, m, d + 1, 22, 30),
                    allDay: false,
                    backgroundColor: Theme.colors.gray,
                },
                {
                    title: 'Click for Google',
                    start: new Date(y, m, 28),
                    end: new Date(y, m, 29),
                    url: 'http://google.com/',
                    backgroundColor: Theme.colors.green,
                }
            ]
        });

    }
    /*-----------------------------------------------------------------------------------*/
    /*	JQVmaps
     /*-----------------------------------------------------------------------------------*/
    var handleJqvmaps = function () {
        var setMap = function (name) {
            var data = {
                map: 'world_en',
                backgroundColor: null,
                borderColor: '#333333',
                borderOpacity: 0.5,
                borderWidth: 1,
                color: Theme.colors.blue,
                enableZoom: true,
                hoverColor: Theme.colors.yellow,
                hoverOpacity: null,
                values: sample_data,
                normalizeFunction: 'linear',
                scaleColors: ['#b6da93', '#427d1a'],
                selectedColor: '#c9dfaf',
                selectedRegion: null,
                showTooltip: true,
                onRegionOver: function (event, code) {
                    //sample to interact with map
                    if (code == 'ca') {
                        event.preventDefault();
                    }
                },
                onRegionClick: function (element, code, region) {
                    //sample to interact with map
                    var message = 'You clicked "' + region + '" which has the code: ' + code.toUpperCase();
                    alert(message);
                }
            };

            data.map = name + '_en';
            var map = jQuery('#vmap_' + name);
            if (!map) {
                return;
            }
            map.width(map.parent().width());
            map.vectorMap(data);
        }

        //Init the maps
        setMap("world");
        setMap("usa");
        setMap("europe");
        setMap("russia");
        setMap("germany");
        App.addResponsiveFunction(function () {
            setMap("world");
            setMap("usa");
            setMap("europe");
            setMap("russia");
            setMap("germany");
        });
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Isotope
     /*-----------------------------------------------------------------------------------*/
    var handleIsotope = function () {
        // cache container
        var $container = $('#filter-items');
        // initialize isotope after image loaded
        $container.imagesLoaded(function () {
            $container.isotope({
                // options...
            });

            // filter items when filter link is clicked
            $('#filter-controls a').click(function () {
                var selector = $(this).attr('data-filter');
                $container.isotope({filter: selector});
                return false;
            });
            // filter on smaller screens
            $("#e1").change(function () {
                var selector = $(this).find(":selected").val();
                $container.isotope({filter: selector});
                return false;
            });
        });

        function handleIsotopeStretch() {
            var width = $(window).width();
            if (width < 768) {
                $('#filter-items .item').addClass('width-100');
            }
            else {
                $('#filter-items .item').removeClass('width-100');
            }
        }
        handleIsotopeStretch();
        /* On Resize show menu on desktop if hidden */
        jQuery(window).resize(function () {
            handleIsotopeStretch();
        });
    }

    /*-----------------------------------------------------------------------------------*/
    /*	Handle hover in gallery
     /*-----------------------------------------------------------------------------------*/
    var handleHover = function () {
        $('.filter-content').hover(function () {
            var hoverContent = $(this).children('.hover-content');
            hoverContent.removeClass('fadeOut').addClass('animated fadeIn').show();
        }, function () {
            var hoverContent = $(this).children('.hover-content');
            hoverContent.removeClass('fadeIn').addClass('fadeOut');
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Colorbox
     /*-----------------------------------------------------------------------------------*/
    var handleColorbox = function () {
        $('.colorbox-button').colorbox({rel: 'colorbox-button', maxWidth: '95%', maxHeight: '95%'});
        /* Colorbox resize function */
        var resizeTimer;
        function resizeColorBox()
        {
            if (resizeTimer)
                clearTimeout(resizeTimer);
            resizeTimer = setTimeout(function () {
                var myWidth = 442, percentageWidth = .95;
                if (jQuery('#cboxOverlay').is(':visible')) {
                    $.colorbox.resize({width: ($(window).width() > (myWidth + 20)) ? myWidth : Math.round($(window).width() * percentageWidth)});
                    $('.cboxPhoto').css({
                        width: $('#cboxLoadedContent').innerWidth(),
                        height: 'auto'
                    });
                    $('#cboxLoadedContent').height($('.cboxPhoto').height());
                    $.colorbox.resize();
                }
            }, 300)
        }

        // Resize Colorbox when resizing window or changing mobile device orientation
        jQuery(window).resize(resizeColorBox);
        window.addEventListener("orientationchange", resizeColorBox, false);
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Backstretch
     /*-----------------------------------------------------------------------------------*/
    var handleBackstretch = function () {
        $.backstretch([
            "img/login/1.jpg"
                    , "img/login/2.jpg"
                    , "img/login/3.jpg"
                    , "img/login/4.jpg"
        ], {duration: 3000, fade: 750});
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Chat
     /*-----------------------------------------------------------------------------------*/
    var handleChat = function (elem) {
        var append = function () {
            //Check if chat is empty
            var input = $('.' + elem + ' .chat-form input');
            var text = input.val();
            if (text.length == 0) {
                return;
            }

            //Get time
            var curr_time = moment().format('YYYY-MM-DD HH:mm:ss');

            var msg = '';
            msg += '<li class="animated fadeInLeft media">';
            msg += '<a class="pull-right" href="#">';
            msg += '<img class="media-object" alt="Generic placeholder image" src="img/chat/headshot2.jpg">';
            msg += '</a>';
            msg += '<div class="pull-right media-body chat-pop mod">';
            msg += '<h4 class="media-heading">You <span class="pull-left"><abbr id="curr-time" class="timeago" title="' + curr_time + '" >' + curr_time + '</abbr> <i class="fa fa-clock-o"></i></span></h4>';
            msg += text;
            msg += '</div>';
            msg += '</li>';

            var list = $('.' + elem + ' .chat-list');
            list.append(msg);
            jQuery("abbr.timeago").timeago();
            input.val("");
            $('.' + elem + ' .scroller').slimScroll({
                scrollTo: list.height()
            });
        }
        //If button is pressed
        $('.' + elem + ' .chat-form .btn').click(function (e) {
            e.preventDefault();
            append();
        });

        var input = $('.' + elem + ' .chat-form input');
        //If Enter is pressed
        input.keypress(function (e) {
            if (e.which == 13) {
                append();
                return false;
            }
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Timeline
     /*-----------------------------------------------------------------------------------*/
    var handleTimeline = function () {
        createStoryJS({
            type: 'timeline',
            width: '100%',
            height: '600',
            source: 'js/timelinejs/example_json.json',
            embed_id: 'my-timeline',
            debug: true,
            css: 'js/timelinejs/css/timeline.css',
            js: 'js/timelinejs/js/timeline-min.js'
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Slidernav
     /*-----------------------------------------------------------------------------------*/
    var handleSliderNav = function () {
        $('#address-book').sliderNav();

        $('#address-book .slider-content ul li ul li a').click(function (e) {
            e.preventDefault();
            var contact_card = $('#contact-card');
            //Get the name clicked on
            var name = $(this).text();
            //Set the name
            $('#contact-card .panel-title').html(name);
            $('#contact-card #card-name').html(name);
            //Randomize the image
            var img_id = Math.floor(Math.random() * (5 - 1 + 1)) + 1;
            //Set the image
            $('#contact-card .headshot img').attr('src', 'img/addressbook/' + img_id + '.jpg');
            contact_card.removeClass('animated fadeInUp').addClass('animated fadeInUp');
            var wait = window.setTimeout(function () {
                contact_card.removeClass('animated fadeInUp')
            },
                    1300
                    );
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Active Toggle
     /*-----------------------------------------------------------------------------------*/
    var handleActiveToggle = function () {
        $('#list-toggle .list-group a').click(function () {
            $('#list-toggle .list-group > a.active').removeClass('active');
            $(this).addClass('active');
        })
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handle Box Sortable
     /*-----------------------------------------------------------------------------------*/
    var handleBoxSortable = function () {
        $('.box-container').sortable({
            connectWith: '.box-container',
            items: '> .box',
            opacity: 0.8,
            revert: true,
            forceHelperSize: true,
            placeholder: 'box-placeholder',
            forcePlaceholderSize: true,
            tolerance: 'pointer'
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handles the go to top button at the footer
     /*-----------------------------------------------------------------------------------*/
    var handleGoToTop = function () {
        $('.footer-tools').on('click', '.go-top', function (e) {
            App.scrollTo();
            e.preventDefault();
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handles navbar fixed top
     /*-----------------------------------------------------------------------------------*/
    var handleNavbarFixedTop = function () {
        if (is_mobile && is_fixed_header) {
            //Manage margin top
            $('#main-content').addClass('margin-top-100');
        }
        if (!(is_mobile) && is_fixed_header) {
            //Manage margin top
            $('#main-content').removeClass('margin-top-100').addClass('margin-top-50');
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handles flot charts in dashboard
     /*-----------------------------------------------------------------------------------*/
    var handleDashFlotCharts = function () {
        function chartMonth() {
            var data1 = [[0, 1.5], [1, 2], [2, 1], [3, 1.5], [4, 2.5], [5, 2], [6, 2], [7, 0.5], [8, 1], [9, 1.5], [10, 2], [11, 2.5], [12, 2], [13, 1.5], [14, 2.8], [15, 2], [16, 3], [17, 2], [18, 2.5], [19, 3], [20, 2.5], [21, 2], [22, 1.5], [23, 2.5], [24, 2], [25, 1.5], [26, 1], [27, 0.5], [28, 1], [29, 1], [30, 1.5], [31, 1]];
            var data2 = [[0, 2.5], [1, 3.5], [2, 2], [3, 3], [4, 4], [5, 3.5], [6, 3.5], [7, 1], [8, 2], [9, 3], [10, 4], [11, 5], [12, 4], [13, 3], [14, 5], [15, 3.5], [16, 5], [17, 4], [18, 5], [19, 6], [20, 5], [21, 4], [22, 3], [23, 5], [24, 4], [25, 3], [26, 2], [27, 1], [28, 2], [29, 2], [30, 3], [31, 2]];

            var plot = $.plot($("#chart-dash"), [{
                    data: data2,
                    label: "Pageviews",
                    bars: {
                        show: true,
                        fill: true,
                        barWidth: 0.4,
                        align: "center",
                        lineWidth: 13
                    }
                }, {
                    data: data1,
                    label: "Visits",
                    lines: {
                        show: true,
                        lineWidth: 2
                    },
                    points: {
                        show: true,
                        lineWidth: 2,
                        fill: true
                    },
                    shadowSize: 0
                }, {
                    data: data1,
                    label: "Visits",
                    lines: {
                        show: true,
                        lineWidth: 1,
                        fill: true,
                        fillColor: {
                            colors: [{
                                    opacity: 0.05
                                }, {
                                    opacity: 0.01
                                }
                            ]
                        }
                    },
                    points: {
                        show: true,
                        lineWidth: 0.5,
                        fill: true
                    },
                    shadowSize: 0
                }], {
                grid: {
                    hoverable: true,
                    clickable: true,
                    tickColor: "#f7f7f7",
                    borderWidth: 0,
                    labelMargin: 10,
                    margin: {
                        top: 0,
                        left: 5,
                        bottom: 0,
                        right: 0
                    }
                },
                legend: {
                    show: false
                },
                colors: ["rgba(109,173,189,0.5)", "#70AFC4", "#DB5E8C"],
                xaxis: {
                    ticks: 5,
                    tickDecimals: 0,
                    tickColor: "#fff"
                },
                yaxis: {
                    ticks: 3,
                    tickDecimals: 0
                },
            });
            function showTooltip(x, y, contents) {
                $('<div id="tooltip">' + contents + '</div>').css({
                    position: 'absolute',
                    display: 'none',
                    top: y + 5,
                    left: x + 15,
                    border: '1px solid #333',
                    padding: '4px',
                    color: '#fff',
                    'border-radius': '3px',
                    'background-color': '#333',
                    opacity: 0.80
                }).appendTo("body").fadeIn(200);
            }
            var previousPoint = null;
            $("#chart-dash").bind("plothover", function (event, pos, item) {
                $("#x").text(pos.x.toFixed(2));
                $("#y").text(pos.y.toFixed(2));
                if (item) {
                    if (previousPoint != item.dataIndex) {
                        previousPoint = item.dataIndex;
                        $("#tooltip").remove();
                        var x = item.datapoint[0].toFixed(2),
                                y = item.datapoint[1].toFixed(2);
                        showTooltip(item.pageX, item.pageY,
                                item.series.label + " of " + x + " = " + y);
                    }
                } else {
                    $("#tooltip").remove();
                    previousPoint = null;
                }
            });
        }

        //Select chart
        function chart_select() {
            // setup plot
            function getData(x1, x2) {

                var d = [];
                for (var i = 0; i <= 100; ++i) {
                    var x = x1 + i * (x2 - x1) / 100;
                    d.push([x, Math.cos(x * Math.sin(x))]);
                }

                return [
                    {label: "cos(x sin(x))", data: d}
                ];
            }

            var options = {
                grid: {
                    hoverable: true,
                    clickable: true,
                    tickColor: "#f7f7f7",
                    borderWidth: 0,
                    labelMargin: 10,
                    margin: {
                        top: 0,
                        left: 5,
                        bottom: 0,
                        right: 0
                    }
                },
                legend: {
                    show: false
                },
                series: {
                    lines: {
                        show: true
                    },
                    shadowSize: 0,
                    points: {
                        show: true
                    }
                },
                colors: ["#D9534F"],
                yaxis: {
                    ticks: 10
                },
                selection: {
                    mode: "xy",
                    color: "#F1ADAC"
                }
            };

            var startData = getData(0, 3 * Math.PI);

            var plot = $.plot("#placeholder", startData, options);

            // Create the overview plot

            var overview = $.plot($("#overview"), startData, {
                legend: {
                    show: false
                },
                series: {
                    lines: {
                        show: true,
                        lineWidth: 1
                    },
                    shadowSize: 0
                },
                xaxis: {
                    ticks: 4
                },
                yaxis: {
                    ticks: 3,
                    min: -2,
                    max: 2
                },
                colors: ["#D9534F"],
                grid: {
                    color: "#999",
                    borderWidth: 0,
                },
                selection: {
                    mode: "xy",
                    color: "#F1ADAC"
                }
            });

            // now connect the two

            $("#placeholder").bind("plotselected", function (event, ranges) {

                // clamp the zooming to prevent eternal zoom

                if (ranges.xaxis.to - ranges.xaxis.from < 0.00001) {
                    ranges.xaxis.to = ranges.xaxis.from + 0.00001;
                }

                if (ranges.yaxis.to - ranges.yaxis.from < 0.00001) {
                    ranges.yaxis.to = ranges.yaxis.from + 0.00001;
                }

                // do the zooming

                plot = $.plot("#placeholder", getData(ranges.xaxis.from, ranges.xaxis.to),
                        $.extend(true, {}, options, {
                            xaxis: {min: ranges.xaxis.from, max: ranges.xaxis.to},
                            yaxis: {min: ranges.yaxis.from, max: ranges.yaxis.to}
                        })
                        );

                // don't fire event on the overview to prevent eternal loop

                overview.setSelection(ranges, true);
            });

            $("#overview").bind("plotselected", function (event, ranges) {
                plot.setSelection(ranges);
            });

            // Add the Flot version string to the footer

            $("#footer").prepend("Flot " + $.plot.version + " &ndash; ");

        }

        //Revenue chart
        function chart_revenue() {
            var likes = [[1, Math.random() * 100], [2, Math.random() * 100], [3, Math.random() * 100], [4, Math.random() * 100], [5, Math.random() * 100], [6, Math.random() * 100], [7, Math.random() * 100], [8, Math.random() * 100], [9, Math.random() * 100], [10, Math.random() * 100], [11, Math.random() * 100], [12, Math.random() * 100]];

            var chartColor = $(this).parent().parent().css("color");

            var plot = $.plot($("#chart-revenue"),
                    [{data: likes}], {
                series: {
                    label: "Revenue",
                    lines: {
                        show: true,
                        lineWidth: 3,
                        fill: false
                    },
                    points: {
                        show: true,
                        lineWidth: 3,
                        fill: true,
                        fillColor: chartColor
                    },
                    shadowSize: 0
                },
                grid: {hoverable: true,
                    clickable: true,
                    tickColor: "rgba(255,255,255,.15)",
                    borderColor: "rgba(255,255,255,0)"
                },
                colors: ["#fff"],
                xaxis: {
                    font: {
                        color: "#fff"
                    },
                    ticks: 6,
                    tickDecimals: 0,
                    tickColor: chartColor,
                },
                yaxis: {
                    font: {
                        color: "#fff"
                    },
                    ticks: 4,
                    tickDecimals: 0,
                    autoscaleMargin: 0.000001
                },
                legend: {
                    show: false
                }
            });

            function showTooltip(x, y, contents) {
                $('<div id="tooltip">' + contents + '</div>').css({
                    position: 'absolute',
                    display: 'none',
                    top: y + 5,
                    left: x + 5,
                    border: '1px solid #fdd',
                    padding: '2px',
                    'background-color': '#dfeffc',
                    opacity: 0.80
                }).appendTo("body").fadeIn(200);
            }

            var previousPoint = null;
            $("#chart-revenue").bind("plothover", function (event, pos, item) {
                $("#x").text(pos.x.toFixed(2));
                $("#y").text(pos.y.toFixed(2));

                if (item) {
                    if (previousPoint != item.dataIndex) {
                        previousPoint = item.dataIndex;

                        $("#tooltip").remove();
                        var x = item.datapoint[0].toFixed(2),
                                y = item.datapoint[1].toFixed(2);

                        showTooltip(item.pageX, item.pageY,
                                item.series.label + " on " + x + " = " + y);
                    }
                }
                else {
                    $("#tooltip").remove();
                    previousPoint = null;
                }
            });
        }

        //Run the charts
        chartMonth();
        chart_select();
        chart_revenue();

        //Pie 1
        $('#dash_pie_1').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent) + "%");
            },
            lineWidth: 6,
            barColor: Theme.colors.purple
        });
        var chart1 = window.chart = $('#dash_pie_1').data('easyPieChart');
        //Pie 2
        $('#dash_pie_2').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent) + "%");
            },
            lineWidth: 6,
            barColor: Theme.colors.yellow
        });
        var chart2 = window.chart = $('#dash_pie_2').data('easyPieChart');
        //Pie 3
        $('#dash_pie_3').easyPieChart({
            easing: 'easeOutBounce',
            onStep: function (from, to, percent) {
                $(this.el).find('.percent').text(Math.round(percent) + "%");
            },
            lineWidth: 6,
            barColor: Theme.colors.pink
        });
        var chart3 = window.chart = $('#dash_pie_3').data('easyPieChart');

        //Update the charts
        $('.js_update').on('click', function () {
            chart1.update(Math.random() * 100);
            chart2.update(Math.random() * 100);
            chart3.update(Math.random() * 100);
            chart_revenue();
        });
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handles vertically growing bars
     /*-----------------------------------------------------------------------------------*/
    var handleVerticalChart = function () {
        if ($('.verticalChart')) {
            $('.singleBar').each(function () {
                var percent = $(this).find('.value span').html();
                $(this).find('.value').animate({height: percent}, 2000, function () {
                    $(this).find('span').fadeIn();
                });
            });
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handles theme skin switches
     /*-----------------------------------------------------------------------------------*/
    var handleThemeSkins = function () {
        // Handle theme colors
        var setSkin = function (color) {
            $('#skin-switcher').attr("href", "css/themes/" + color + ".css");
            $.cookie('skin_color', color);
        }
        $('ul.skins > li a').click(function () {
            var color = $(this).data("skin");
            setSkin(color);
        });

        //Check which theme skin is set
        if ($.cookie('skin_color')) {
            setSkin($.cookie('skin_color'));
        }
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handles Gritter on Load
     /*-----------------------------------------------------------------------------------*/
    var handleGritter = function () {
        if ($.cookie('gritter_show')) {
            return;
        }

        $.cookie('gritter_show', 1);
        setTimeout(function () {
            var unique_id = $.gritter.add({
                // (string | mandatory) the heading of the notification
                title: 'Welcome to Cloud Admin!',
                // (string | mandatory) the text inside the notification
                text: 'Cloud is a feature-rich Responsive Admin Dashboard Template with a wide array of plugins!',
                // (string | optional) the image to display on the left
                image: 'img/gritter/cloud.png',
                // (bool | optional) if you want it to fade out on its own or just sit there
                sticky: true,
                // (int | optional) the time you want it to be alive for before fading out
                time: '',
                // (string | optional) the class name you want to apply to that specific message
                class_name: 'my-sticky-class'
            });

            // You can have it return a unique id, this can be used to manually remove it later using
            setTimeout(function () {
                $.gritter.remove(unique_id, {
                    fade: true,
                    speed: 'slow'
                });
            }, 12000);
        }, 2000);

        setTimeout(function () {
            var unique_id = $.gritter.add({
                // (string | mandatory) the heading of the notification
                title: 'Customize Cloud Admin!',
                // (string | mandatory) the text inside the notification
                text: 'Cloud Admin is easily customizable, lightweight and has a great User Experience.',
                // (string | optional) the image to display on the left
                image: 'img/gritter/settings.png',
                // (bool | optional) if you want it to fade out on its own or just sit there
                sticky: true,
                // (int | optional) the time you want it to be alive for before fading out
                time: '',
                // (string | optional) the class name you want to apply to that specific message
                class_name: 'my-sticky-class'
            });

            // You can have it return a unique id, this can be used to manually remove it later using
            setTimeout(function () {
                $.gritter.remove(unique_id, {
                    fade: true,
                    speed: 'slow'
                });
            }, 13000);
        }, 8000);

        setTimeout(function () {

            $.extend($.gritter.options, {
                position: 'top-left'
            });

            var unique_id = $.gritter.add({
                position: 'top-left',
                // (string | mandatory) the heading of the notification
                title: 'Buy Cloud Admin!',
                // (string | mandatory) the text inside the notification
                text: 'Purchase Cloud Admin theme and get access to future updates at no extra cost. Buy now!',
                // (string | optional) the image to display on the left
                image: 'img/gritter/buy.png',
                // (bool | optional) if you want it to fade out on its own or just sit there
                sticky: true,
                // (int | optional) the time you want it to be alive for before fading out
                time: '',
                // (string | optional) the class name you want to apply to that specific message
                class_name: 'my-sticky-class'
            });

            $.extend($.gritter.options, {
                position: 'top-right'
            });

            // You can have it return a unique id, this can be used to manually remove it later using
            setTimeout(function () {
                $.gritter.remove(unique_id, {
                    fade: true,
                    speed: 'slow'
                });
            }, 15000);

        }, 15000);

        setTimeout(function () {

            $.extend($.gritter.options, {
                position: 'top-left'
            });

            var unique_id = $.gritter.add({
                // (string | mandatory) the heading of the notification
                title: 'Notification',
                // (string | mandatory) the text inside the notification
                text: 'You have 6 new notifications.',
                // (bool | optional) if you want it to fade out on its own or just sit there
                sticky: true,
                // (int | optional) the time you want it to be alive for before fading out
                time: '',
                // (string | optional) the class name you want to apply to that specific message
                class_name: 'my-sticky-class'
            });

            setTimeout(function () {
                $.gritter.remove(unique_id, {
                    fade: true,
                    speed: 'slow'
                });
            }, 4000);

            $.extend($.gritter.options, {
                position: 'top-right'
            });

        }, 20000);

        setTimeout(function () {

            $.extend($.gritter.options, {
                position: 'top-left'
            });

            var unique_id = $.gritter.add({
                // (string | mandatory) the heading of the notification
                title: 'Inbox',
                // (string | mandatory) the text inside the notification
                text: 'You have 5 new messages in your inbox.',
                // (bool | optional) if you want it to fade out on its own or just sit there
                sticky: true,
                // (int | optional) the time you want it to be alive for before fading out
                time: '',
                // (string | optional) the class name you want to apply to that specific message
                class_name: 'my-sticky-class'
            });

            $.extend($.gritter.options, {
                position: 'top-right'
            });

            setTimeout(function () {
                $.gritter.remove(unique_id, {
                    fade: true,
                    speed: 'slow'
                });
            }, 4000);

        }, 25000);
    }
    /*-----------------------------------------------------------------------------------*/
    /*	Handles Profile Edit
     /*-----------------------------------------------------------------------------------*/
    var handleProfileEdit = function () {
        $(".datepicker").datepicker();
    }
    return {
        //Initialise theme pages
        init: function () {

            if (App.isPage("index")) {
                handleDateTimePickers(); //Function to display Date Timepicker
                handleSparkline();		//Function to display Sparkline charts
                handleDashFlotCharts(); //Function to display flot charts in dashboard
                handleChat('chat-window'); //Function to handle chat
                handleCalendar();	//Function to display calendar
                handleGritter();	//Function to display Gritter notifications
            }
            if (App.isPage("widgets_box")) {
                handleBoxSortable(); //Function to handle Box sortables
            }
            if (App.isPage("elements")) {
                handleBootbox(); //Function to display Date Timepicker
                handleMagicSuggest(); //Function to display autosuggest
                handleDateColorpicker(); //Function to handle date and time picker
                handleRaty(); //To show star ratings
                handleTimeAgo(); //Function to handle timestamps
            }
            if (App.isPage("button_icons")) {
                handleStatefulButtons(); //Function to display stateful buttons
                handleToggle(); 		//Function to handle toggle buttons
            }
            if (App.isPage("sliders_progress")) {
                handleSliders(); //Function to display sliders
                handleProgress(); //Function to display progress bars
                handleKnobs();	//Function to display knobs
            }
            if (App.isPage("treeview")) {
                handleTree();	//Function to handle tree display
            }
            if (App.isPage("nestable_lists")) {
                handleNestableLists();	//Function to handle nestable lists
            }
            if (App.isPage("simple_table")) {
                handleTablecloth();	//Function to display tablecloth.js options
            }
            if (App.isPage("dynamic_table")) {
                handleDataTables();	//Function to display data tables
            }
            if (App.isPage("jqgrid_plugin")) {
                handleJqgrid();	//Function to display jqGrid
            }
            if (App.isPage("forms")) {
                handleTypeahead();	//Function to display autocomplete
                handleAutosize(); //Function to handle textarea autosize
                handleCountable(); //Function to handle char count
                handleSelect2(); //Function to handle select2
                handleUniform();	//Function to handle uniform inputs
                handleTimeAgo(); //Function to handle timestamps
            }
            if (App.isPage("rich_text_editors")) {
                handleWysiwyg();	//Function to display wysiwyg
            }
            if (App.isPage("dropzone_file_upload")) {
                handleDropzone();	//Function to display wysiwyg
            }
            if (App.isPage("xcharts")) {
                handleXcharts();	//Function to display xcharts
            }
            if (App.isPage("others")) {
                handleGage();	//Function to display justgage
                handleEasyPie();	//Function to display easy pie charts
                handleSparkline();	//Function to display sparklines
            }
            if (App.isPage("calendar")) {
                handleCalendar();	//Function to display calendar
                handleUniform();	//Function to handle uniform inputs
            }
            if (App.isPage("vector_maps")) {
                handleJqvmaps();	//Function to display vector maps
            }
            if (App.isPage("gallery")) {
                handleIsotope();	//Function to display portfolio
                handleHover();		//Function to display hover-content
                handleColorbox();		//Function to display colorbox
            }
            if (App.isPage("login")) {
                handleUniform();	//Function to handle uniform inputs
            }
            if (App.isPage("wizards_validations")) {
                handleUniform();	//Function to handle uniform inputs
            }
            if (App.isPage("login_bg")) {
                handleUniform();	//Function to handle uniform inputs
                handleBackstretch();	//Function to handle background images
            }
            if (App.isPage("chats")) {
                handleChat('chat-window');	//Function to handle chat
                handleChat('chat-widget');	//Function to handle chat
                initTimeAgo(); //Function to init timestamps
            }
            if (App.isPage("todo_timeline")) {
                handleTimeline();	//Function to display timeline
            }
            if (App.isPage("address_book")) {
                handleSliderNav();	//Function to display address book
            }
            if (App.isPage("orders")) {
                initTimeAgo(); //Function to init timestamps
            }
            if (App.isPage("faq")) {
                handleActiveToggle(); //Function to handle active toggle
            }
            if (App.isPage("user_profile")) {
                handleProfileSkillPie(); //Function to show skills in pie
                handleSparkline();	//Function to display sparklines
                handleUniform();	//Function to handle uniform inputs
                handleProfileEdit();	//Function to handle profile edit tab
            }
            if (App.isPage("mini_sidebar")) {
                collapseSidebar();	//Function to display mini menu				
            }
            if (App.isPage("fixed_header_sidebar")) {
                handleFixedSidebar();	//Function to display fixed sidebar
            }
            checkLayout();	//Function to check if mini menu/fixed header is activated
            handleSidebar(); //Function to display the sidebar
            handleSidebarCollapse(); //Function to hide or show sidebar
            handleSidebarAndContentHeight();  //Function to hide sidebar and main content height
            responsiveSidebar();		//Function to handle sidebar responsively
            handleTeamView(); //Function to toggle team view
            handleHomePageTooltips(); //Function to handle tooltips
            handleBoxTools(); //Function to handle box tools
            handleSlimScrolls(); //Function to handle slim scrolls
            handlePopovers(); //Function to handle popovers
            handleMessenger(); //Function to handle messenger
            handleAlerts(); //Function to handle alerts
            handleCustomTabs(); //Function to handle min-height of custom tabs
            handleGoToTop(); 	//Funtion to handle goto top buttons
            handleNavbarFixedTop();		//Function to check & handle if navbar is fixed top
            handleThemeSkins();		//Function to handle theme skins
        },
        //Set page
        setPage: function (name) {
            currentPage = name;
        },
        isPage: function (name) {
            return currentPage == name ? true : false;
        },
        //public function to add callback a function which will be called on window resize
        addResponsiveFunction: function (func) {
            responsiveFunctions.push(func);
        },
        // wrapper function to scroll(focus) to an element
        scrollTo: function (el, offeset) {
            pos = (el && el.size() > 0) ? el.offset().top : 0;
            jQuery('html,body').animate({
                scrollTop: pos + (offeset ? offeset : 0)
            }, 'slow');
        },
        // function to scroll to the top
        scrollTop: function () {
            App.scrollTo();
        },
        // initializes uniform elements
        initUniform: function (els) {
            if (els) {
                jQuery(els).each(function () {
                    if ($(this).parents(".checker").size() == 0) {
                        $(this).show();
                        $(this).uniform();
                    }
                });
            } else {
                handleAllUniform();
            }
        },
        // wrapper function to  block element(indicate loading)
        blockUI: function (el, loaderOnTop) {
            var imageurl = url + "/Htmllayout/cloud//img/loaders/12.gif";
            lastBlockedUI = el;
            jQuery(el).block({
                message: '<img src="' + imageurl + '" align="absmiddle">',
                css: {
                    border: 'none',
                    padding: '2px',
                    backgroundColor: 'none'
                },
                overlayCSS: {
                    backgroundColor: '#000',
                    opacity: 0.05,
                    cursor: 'wait'
                }
            });
        },
        // wrapper function to  un-block element(finish loading)
        unblockUI: function (el) {
            jQuery(el).unblock({
                onUnblock: function () {
                    jQuery(el).removeAttr("style");
                }
            });
        },
    };
}();
(function (a, b) {
    a.fn.admin_tree = function (d) {
        var c = {
            "open-icon": "fa fa-folder-open",
            "close-icon": "fa fa-folder",
            selectable: true,
            "selected-icon": "fa fa-check",
            "unselected-icon": "tree-dot"
        };
        c = a.extend({}, c, d);
        this.each(function () {
            var e = a(this);
            e.html('<div class = "tree-folder" style="display:none;">				<div class="tree-folder-header">					<i class="' + c["close-icon"] + '"></i>					<div class="tree-folder-name"></div>				</div>				<div class="tree-folder-content"></div>				<div class="tree-loader" style="display:none"></div>			</div>			<div class="tree-item" style="display:none;">				' + (c["unselected-icon"] == null ? "" : '<i class="' + c["unselected-icon"] + '"></i>') + '				<div class="tree-item-name"></div>			</div>');
            e.addClass(c.selectable == true ? "tree-selectable" : "tree-unselectable");
            e.tree(c)
        });
        return this
    }
})(window.jQuery);


(function () {
    this.Theme = (function () {
        function Theme() {
        }
        Theme.colors = {
            white: "#FFFFFF",
            primary: "#5E87B0",
            red: "#D9534F",
            green: "#A8BC7B",
            blue: "#70AFC4",
            orange: "#F0AD4E",
            yellow: "#FCD76A",
            gray: "#6B787F",
            lightBlue: "#D4E5DE",
            purple: "#A696CE",
            pink: "#DB5E8C",
            dark_orange: "#F38630"
        };
        return Theme;
    })();
})(window.jQuery);