camdub/Internships

View on GitHub
public/javascripts/application.js

Summary

Maintainability
F
3 days
Test Coverage
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
/*
 * Adminica UI
 *
 * Copyright (c) 2010 Tricycle Interactive
 *
 * http://www.tricycle.ie
 *
 * This file configures all the different jQuery scripts used in the Adminica Admin template. 
 * Links to the scripts can be found at the beginning of each function
 *
 */
 
 
 $(function() {
        
    // ICON CHANGING JQUERY ================================================
    var current_path = window.location.pathname;
    $('#nav_top').children('ul').children('li').each(function(){
        var iscurrent = false;
        $(this).find('a').each(function(){
            if ($(this).attr('href') == current_path){
                iscurrent = true;
            }
        });
        if(iscurrent){
            $(this).addClass('current');
            //$(this).chlidren('img').attr('src')
            $(this).find('img').attr('src', $(this).find('img').attr('src').replace('grey','white'));
        }
    });
    /*
    // AUTO-SUGGEST TEXT FIELDS ==============================================
    $("#internship_field_tokens").tokenInput("/fields.json", {
        crossDomain: false,
        prePopulate: $("#internship_field_tokens").data("pre"),
    });
    $("#internship_language_tokens").tokenInput("/languages.json", {
        crossDomain: false,
        prePopulate: $("#internship_language_tokens").data("pre"),
    });
    $("#internship_academic_focus_tokens").tokenInput("/academic_focuses.json", {
        crossDomain: false,
        prePopulate: $("#internship_academic_focus_tokens").data("pre"),
        minChars: 0,
    });
    $("#internship_location_tokens").tokenInput("/locations.json", {
        crossDomain: false,
        prePopulate: $("#internship_location_tokens").data("pre"),
    });
    $("#internship_semester_tokens").tokenInput("/semesters.json", {
        crossDomain: false,
        prePopulate: $("#internship_semester_tokens").data("pre"),
    });
    $("#internship_financial_assistance_option_tokens").tokenInput("/financial_assistance_options.json", {
        crossDomain: false,
        prePopulate: $("#internship_financial_assistance_tokens").data("pre"),
    });
    */
    // DATATABLES =============================================================
    // DataTables Config (more info can be found at http://www.datatables.net/)
    
    if($('.datatable').length > 0){
        var oTable = $('.datatable').dataTable( {
                    "bJQueryUI": true,
                    "sScrollX": "",
                    "bSortClasses": false,
                    "aaSorting": [[0,'asc']],
                    "bAutoWidth": true,
                    "bInfo": true,
                    "sScrollY": "100%",    
                    "sScrollX": "100%",
                    "bScrollCollapse": true,
                    "sPaginationType": "full_numbers",
                    "bRetrieve": true
                    } );
              $(window).bind('resize', function () {
                      oTable.fnAdjustColumnSizing();
                  } );
    }
                    
        
            
            var tiny_params = {
            width:500,
            height:175,
            mode: 'specific_textareas',
            editor_deselector : "no_editor",
            cssclass:'te',
            controlclass:'tecontrol',
            rowclass:'teheader',
            dividerclass:'tedivider',
            controls:['bold','italic','underline','strikethrough','|','subscript','superscript','|',
                      'orderedlist','unorderedlist','|','outdent','indent','|','leftalign',
                      'centeralign','rightalign','blockjustify','|','unformat','|','undo','redo','n',
                      'font','size','style','|','image','hr','link','unlink','|','cut','copy','paste','print'],
            footer:false,
            fonts:['Verdana','Arial','Georgia','Trebuchet MS'],
            xhtml:true,
            cssfile:'/javascripts/tinyeditor/style.css',
            
            footerclass:'tefooter',
            toggle:{text:'source',activetext:'wysiwyg',cssclass:'toggler'},
            resize:{cssclass:'resize'}
        };
        tinyMCE.init(tiny_params);
        
        // prettify stuff
        /*$('.tiny_editor').each(function(index) {
            tiny_params.id = 'tiny-' + index;
            tiny_params.bodyid = 'editor-' + index;
            $(this).attr('id', tiny_params.id);
            if(index > 0)
                return;
            tiny_params.id = $(this).attr('name');
            $(this).attr('id', tiny_params.id);
            tiny_params.bodyid = 'editor-' + index;
    
            //new TINY.editor.edit('editor' + index, tiny_params);
            
            iframeId = $(this).attr('name')+"_ifr";
            $("#"+iframeId).ready(function () { //The function below executes once the iframe has finished loading
                    //$('some selector', frames['nameOfMyIframe'].document).doStuff();
                    alert("Im in the iframe");
                    alert($("#"+iframeId).contents().find('body').click(function(){alert($("#"+iframeId).contents().find('body').html())}));
                });
            $('#editor-'+index).focusout(function(){alert('car')});
            
        });*/
        
        // Sidenav Accordion Config
            $( "ul#accordion" ).accordion({
                collapsible: true,
                active:false,
                header: 'li a.top_level',
                autoHeight:false,
                icons:false
            });

        // Top Nav Dropdown Accordion Config                
            $( "ul.dropdown" ).accordion({
                collapsible: true,
                active:false,
                header: 'li a.has_slide', // this is the element that will be clicked to activate the accordion 
                autoHeight:false,
                event: 'mousedown',
                icons:false
            });

         // Content Box Toggle Config 
            $("a.toggle").click(function(){
                $(this).toggleClass("toggle_closed").next().slideToggle("slow");
                return false; //Prevent the browser jump to the link anchor
            });
            
            // Set default to closed
            $(".toggle_closed").next().css("display","none");

         // Content Box Tabs Config
                $( ".tabs" ).tabs({ 
                    fx: {opacity: 'toggle', duration: 'slow'} 
                });

                $( ".side_tabs" ).tabs({ 
                    fx: {opacity: 'toggle', duration: 'slow', height:'auto'} 
                });


        // Content Box Accordion Config        
            $( ".content_accordion" ).accordion({
                collapsible: true,
                active:false,
                header: 'h3.bar', // this is the element that will be clicked to activate the accordion 
                autoHeight:false,
                event: 'mousedown',
                icons:false,
                animated: true
            });

        // Sortable Content Boxes Config                
            $( ".main_container" ).sortable({
                handle:'.grabber',  // the element which is used to 'grab' the item
                items:'div.box', // the item to be sorted when grabbed!
                opacity:0.8,
                revert:true,
                tolerance:'pointer',
                helper:'original',
                forceHelperSize:true,
                placeholder: 'dashed_placeholder',        
                forcePlaceholderSize:true
            });

        // Sortable Accordion Items Config            
            $( ".content_accordion" ).sortable({
                handle:'a.handle',
                axis: 'y', // the items can only be sorted along the y axis
                revert:true,
                tolerance:'pointer',
                forcePlaceholderSize:true
            });

        // Input Datepicker Config
            $( ".datepicker" ).datepicker({ dateFormat: 'd M yy' });; // the time format which will be input to the datepicker field upon selection. more info on formatting here: http://docs.jquery.com/UI/Datepicker/formatDate

        // input Slider    Config
            $( ".slider" ).slider(); // creates a simple slider with default settings


        // input Range Slider Config    
            $( ".slider_range" ).slider({
                range: true, // creates a range slider
                min: 0,
                max: 500,
                values: [ 75, 300 ],
                slide: function( event, ui ) {
                    $( "#amount" ).val( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ] );
                }
            });

            $( "#amount" ).val( "$" + $( "#slider_range" ).slider( "values", 0 ) +
                " - $" + $( "#slider_range" ).slider( "values", 1 ) );

        // Dialog Config
            $( "#dialog" ).dialog({
                autoOpen: false, 
                show: "fade",
                hide: "fade",
                modal: true 
            });

            $( "#opener" ).click(function() {
                $( "#dialog" ).dialog( "open" ); // the #dialog element activates the modal box specified above
                return false;
            });

        //Progress Bar Config
            $( "#progressbar" ).progressbar({
                value: 25
            });

        // Dismiss alert box
            $(".alert").click(function(){
                $(this).fadeOut('slow');
            });

        // target nav items with a dropdown for styling.
        $('ul.dropdown').parent().addClass('has_dropdown');

        // wizard

        $('.wizard_steps ul li a').click(function(){
            $('.wizard_steps ul li').removeClass('current');
            $(this).parent('li').addClass('current');

            var step = $(this).attr('href');
            var step_num = $(this).attr('href').replace('#step_','');

            var prog_val = (step_num*25);

            $( "#progressbar").progressbar({ value: prog_val });

            $('.wizard_content').children().hide();
            $('.wizard_content').children(step).fadeIn();

            return false;
        });

        $('button.next_step').click(function(){

            var step = $(this).attr('id');
            var hash_step = ('#'+step);

            var step_num = $(this).attr('id').replace('step_','');
            var prog_val = (step_num*25);

            $( "#progressbar").progressbar({ value: prog_val });

            $('.wizard_steps ul li').removeClass('current');
            $('a[href='+ hash_step +']').parent().addClass('current');

            $('.wizard_content').children().hide();
            $('.wizard_content').children(hash_step).fadeIn();

            return false;
        });
        
  
    // Other Scripts
        // Uniform Config (more info can found at http://pixelmatrixdesign.com/uniform/)
            //$( "select:not([multiple]), input:checkbox, input:radio, input:file").uniform();
            $( "select:not([class='chosen']), input:checkbox, input:radio, input:file").uniform();
            $('select.chosen').chosen();
/*
        // Tipsy Top Config (more info found at http://onehackoranother.com/projects/jquery/tipsy/)
            $('[title]').tipsy({
                fade: true,     // fade tooltips in/out?
                fallback: '',    // fallback text to use when no tooltip text
                gravity: 's',    // gravity
                opacity: 1,    // opacity of tooltip
                title: 'title',  // attribute/callback containing tooltip text
                trigger: 'hover' // how tooltip is triggered - hover | focus | manual        
            });  

        // Tipsy Side Config
            $('input[title]').tipsy({
                trigger: 'focus',  
                offset:'5',
                gravity: 'w'
            });

        // focus on first field in form
        //$("input[type='text']:first", document.forms[0]).focus();


        // iOS Device Touch Config (more info can be found at http://old.nabble.com/jQuery-UI-Support-on-the-iPhone-td22011162s27240.html)

            $('.main_container').sortable();
            $('.grabber').addTouch();
            $('ul.content_accordion').sortable();
            $('a.handle').addTouch();
            $('.ui-slider-handle').addTouch();
            
            // static tables alternating rows
                $('table.static tr:even').addClass("even")


            // FileTree Config (more info can be found at http://abeautifulsite.net/blog/2008/03/jquery-file-tree/)
                $('#file_tree').fileTree({ 
                            root: '/var/www/vhosts/tricycle.ie/httpdocs/adminica/file_tree/', 
                            script: '../../../js/jqueryFileTree/jqueryFileTree.php', 
                            loadMessage:'Loading...'  }, function(file) {
                            alert(file);
                            });

            //FancyBox Config (more info can be found at http://www.fancybox.net/)
                $(".gallery ul li a").fancybox({
                'overlayColor':'#000' 

                });
                $("a img.fancy").fancybox();

            //This configures the iPhone style Contacts display)      
                 $('#slider_list').sliderNav({height:'500'});



            //Slide to top link
                $().UItoTop({ easingType: 'easeOutQuart' });


            //Fullcalendar        

                $('#calendar').fullCalendar({
                        firstDay:'1',
                        weekMode:'liquid',
                        aspectRatio: '1.5',
                        theme:true,
                        selectable:true,
                        editable:true,
                        draggable:true,
                        droppable:true,
                        timeFormat:'H:mm',
                        axisFormat:'H:mm',
                        columnFormat:{
                            month: 'ddd',    // Mon
                            week: 'ddd dS', // Mon 9/7
                            day: 'dddd dS MMMM'  // Monday 9/7
                        },
                        titleFormat:{
                            month: 'MMMM yyyy',                             // September 2009
                            week: "MMM d[ yyyy]{ 'to'[ MMM] d, yyyy}", // Sep 7 - 13 2009
                            day: 'ddd, MMMM d, yyyy'                  // Tuesday, Sep 8, 2009
                        },
                        allDayText:'All Day',
                        header:{
                            left:   'prev title next, today',
                            center: '',
                            right:  'agendaWeek,agendaDay,month'
                            },

                        eventSources: [

                                // your event source
                                {
                                    events: [ // put the array in the `events` property
                                        {
                                            title  : 'Company AGM',
                                            start  : '2011-04-03',
                                            className:'calendar_green'
                                        },
                                        {
                                            title  : 'Business Trip',
                                            start  : '2011-04-15',
                                            end    : '2011-04-20',
                                            className:'calendar_blue'
                                        },
                                        {
                                            title  : 'Day off',
                                            start  : '2011-04-08 12:30:00',
                                            className:'calendar_red'
                                        }
                                    ]
                                },
                                {
                                    url: 'https://www.google.com/calendar/feeds/nueoipsjhgm857gpojq5563cfo@group.calendar.google.com/public/basic',
                                    className:'calendar_magenta'
                                },
                                {
                                    url: 'http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic',
                                    className: 'calendar_navy'
                                }


                            ],

                        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();
                        }

                    }

                    });

                $('ul#calendar_drag_list li a').each(function() {

                    // 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($(this).text()), // use the element's text as the event title
                        className: 'calendar_black'
                    };

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

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

                });

                // Graphs and Charts - Flot jQuery

                var line_data = [];
                for (var i = 0; i < 14; i += 0.2)
                    line_data.push([i, Math.sin(i)+8]);

                var bar_data = [[0, 5], [2, 7], [4, 11], [6, 1], [8, 8], [10, 7], [12, 9], [14, 3]];
                var bar_data_2 = [[1, 3], [3, 8], [5, 5], [7, 13], [9, 8], [11, 5], [13, 8], [15, 5]];

                // a null signifies separate line segments
                var point_data = [[0, 12], [7, 12], [8, 2.5], [12, 2.5], [15, 7]];

                var extra_data_1 = [];
                for (var i = -20; i < 20; i += 0.4)
                    extra_data_1.push([i, Math.tan(i)+(i*5)]);

                var extra_data_2 = [[1988, 483994], [1989, 479060], [1991, 401949], [1993, 402375], [1994, 377867], [1996, 337946], [1997, 336185], [1998, 328611], [2000, 342172], [2001, 344932], [2003, 440813], [2004, 480451], [2006, 528692]];

                var pie_data = [];
                var series = Math.floor(Math.random()*5)+1;
                for( var i = 0; i<series; i++)
                {
                    pie_data[i] = { label: "Series"+(i+1), data: Math.floor(Math.random()*100)+1 }
                }

                var pie_data_2 = [
                        { label: "Slice 1",  data: [[1,117]], color: '#122b45'},
                        { label: "Slice 2",  data: [[1,30]], color: '#064792'},
                        { label: "Slice 3",  data: [[1,44]], color: '#4C5766'},
                        { label: "Slice 4",  data: [[1,90]], color: '#9e253b'},
                        { label: "Slice 5",  data: [[1,70]], color: '#8d579a'},
                        { label: "Slice 6",  data: [[1,80]], color: '#2b4356'}
                    ];

                var adminica_grad_black = { colors: ["#4C5766 ", "#313841 "] };
                var adminica_grad_blue = { colors: ["#1C5EA0 ", "#064792 "] };
                var adminica_grad_navy = { colors: ["#2b4356 ", "#122b45 "] };
                var adminica_grad_red = { colors: ["#9e253b ", "#7C1F30 "] };
                var adminica_grad_green = { colors: ["#3d8336 ", "#277423 "] };
                var adminica_grad_magenta = { colors: ["#9b6ca6 ", "#8d579a "] };
                var adminica_grad_brown = { colors: ["#53453e ", "#3b2e28 "] };
                var adminica_grad_grey = { colors: ["#D0D6DA", "#4C5766"] };

                var adminica_black = "#4C5766 ";
                var adminica_blue = "#1C5EA0 ";
                var adminica_navy = "#2b4356 ";
                var adminica_red = "#9e253b ";
                var adminica_green = "#3d8336";
                var adminica_magenta = "#9b6ca6";
                var adminica_brown = "#53453e";

                $.plot($("#flot_pie"), pie_data_2,
                {
                        series: {
                            pie: {
                                show: true
                            },
                            grid: {
                                hoverable: true,
                                clickable: true
                            }
                        }
                });

                $.plot($("#flot_pie_2"), pie_data_2,
                {
                        series: {
                            pie: {
                                innerRadius: 0.75,
                                show: true
                            }        ,
                            grid: {
                                hoverable: true,
                                clickable: true
                            }
                        }
                });

                $.plot($("#flot_bar"), 
                [
                    {    

                        shadowSize: 25,
                        label:'Bar Chart 1',
                        color:adminica_magenta,
                        data: bar_data,
                        bars: { 
                            show: true,
                            fill: true,
                              fillColor: adminica_grad_magenta,
                            lineWidth: 0,
                            border:false
                            }
                    },        
                    {    

                        shadowSize: 25,
                        label:'Bar Chart 2',
                        color:'#4C5766',
                        data: bar_data_2,
                        bars: { 
                            show: true,
                            fill: true,
                              fillColor: adminica_grad_black,
                            lineWidth: 0,
                            border:false
                            }
                    }
                ],  
                    {
                        grid:{
                            show: true,
                            aboveData: false,
                            backgroundColor: { colors: ["#fff", "#eee"] },
                            labelMargin:15,
                            //axisMargin: number
                            //markings: array of markings or (fn: axes -> array of markings)
                            borderWidth: 1,
                            borderColor: '#cccccc',
                            //minBorderMargin: number or null
                            clickable: true,
                            hoverable: true,
                            autoHighlight: true,
                            mouseActiveRadius: 10
                            },
                        legend: {
                            show: true,
                            //labelFormatter: null or (fn: string, series object -> string)
                            labelBoxBorderColor: '#fff',
                            noColumns: 5,
                            //position: "ne" or "nw" or "se" or "sw"
                            margin: 10,
                            backgroundColor: '#fff'
                            //backgroundOpacity: number between 0 and 1
                            //container: "#legend_holder"
                          }
                    }
                );

                $.plot($("#flot_line"), 
                [
                    {    
                        shadowSize: 10,
                        label:'Line Chart 1',
                        color:adminica_blue,
                        data: line_data,
                        lines: { 
                            show: true,
                            fill: true,
                              fillColor: adminica_grad_grey,
                            lineWidth: 4
                            }
                    },
                    {    
                        shadowSize: 10,
                        label:'Line Chart 2',
                        color:adminica_red,
                        data: bar_data,
                        lines: { 
                            show: true,
                            fill: false,
                            lineWidth: 4
                            },
                        points: { 
                            show: true,
                            fill: false,
                            lineWidth: 2
                            }
                    }
                ],  
                    {
                        grid:{
                            show: true,
                            aboveData: false,
                            backgroundColor: { colors: ["#fff", "#eee"] },
                            labelMargin:15,
                            //axisMargin: number
                            //markings: array of markings or (fn: axes -> array of markings)
                            borderWidth: 1,
                            borderColor: '#cccccc',
                            //minBorderMargin: number or null
                            clickable: true,
                            hoverable: true,
                            autoHighlight: true,
                            mouseActiveRadius: 10
                            },
                        legend: {
                            show: true,
                            //labelFormatter: null or (fn: string, series object -> string)
                            labelBoxBorderColor: '#fff',
                            noColumns: 5,
                            //position: "ne" or "nw" or "se" or "sw"
                            margin: 10,
                            backgroundColor: '#fff'
                            //backgroundOpacity: number between 0 and 1
                            //container: "#legend_holder"
                          }
                    }
                );

                $.plot($("#flot_points"), 
                [
                    {    
                        shadowSize: 10,
                        label:'Points Chart',
                        color:adminica_blue,
                        data: extra_data_2,
                        points: { 
                            show: true,
                            fill: true,
                            fillColor: '#ffffff',
                            lineWidth: 3
                            },
                        lines: { 
                            show: true,
                            fill: true,
                              fillColor: adminica_grad_black,
                            lineWidth: 5
                            }
                    }
                ],  
                    {
                        grid:{
                            show: true,
                            aboveData: false,
                            backgroundColor: { colors: ["#fff", "#eee"] },
                            labelMargin:15,
                            //axisMargin: number
                            //markings: array of markings or (fn: axes -> array of markings)
                            borderWidth: 1,
                            borderColor: '#cccccc',
                            //minBorderMargin: number or null
                            clickable: true,
                            hoverable: true,
                            autoHighlight: true,
                            mouseActiveRadius: 10
                            },
                        legend: {
                            show: true,
                            //labelFormatter: null or (fn: string, series object -> string)
                            labelBoxBorderColor: '#fff',
                            noColumns: 5,
                            //position: "ne" or "nw" or "se" or "sw"
                            margin: 10,
                            backgroundColor: '#fff'
                            //backgroundOpacity: number between 0 and 1
                            //container: "#legend_holder"
                          }
                    }
                );

                // resize the charts when the window resizes
                $(window).resize(function() {
                      $('#flot_bar').resize();
                      $('#flot_line').resize();
                      $('#flot_points').resize();
                      $('#flot_pie').resize();
                  });
        */

});