/* [ ---- Gebo Admin Panel - dashboard ---- ] */





	$(document).ready(function() {


		//* small charts


		gebo_peity.init();


		//* charts


		gebo_charts.fl_1();


		gebo_charts.fl_2();


		//* sortable/searchable list


		gebo_flist.init();


		//* calendar


		gebo_calendar.init();


		//* responsive table


		gebo_media_table.init();


		//* resize elements on window resize


		var lastWindowHeight = $(window).height();


		var lastWindowWidth = $(window).width();


		$(window).on("debouncedresize",function() {


			if($(window).height()!=lastWindowHeight || $(window).width()!=lastWindowWidth){


				lastWindowHeight = $(window).height();


				lastWindowWidth = $(window).width();


				//* rebuild calendar


				$('#calendar').fullCalendar('render');


			}


		});


		//* small gallery grid


        gebo_gal_grid.small();


		


		//* to top


		$().UItoTop({inDelay:200,outDelay:200,scrollSpeed: 500});


	});


	


	//* small charts


	gebo_peity = {


		init: function() {


			$.fn.peity.defaults.line = {


				strokeWidth: 1,


				delimeter: ",",


				height: 32,


				max: null,


				min: 0,


				width: 50


			};


			$.fn.peity.defaults.bar = {


				delimeter: ",",


				height: 32,


				max: null,


				min: 0,


				width: 50


			};


			$(".p_bar_up").peity("bar",{


				colour: "#6cc334"


			});


			$(".p_bar_down").peity("bar",{


				colour: "#e11b28"


			});


			$(".p_line_up").peity("line",{


				colour: "#b4dbeb",


				strokeColour: "#3ca0ca"


			});


			$(".p_line_down").peity("line",{


				colour: "#f7bfc3",


				strokeColour: "#e11b28"


			});


		}


	};





	//* charts


    gebo_charts = {


        fl_1: function() {


            // Setup the placeholder reference


            elem = $('#fl_1');


            var sin = [], cos = [];


            for (var i = 0; i < 14; i += 0.5) {


                sin.push([i, Math.sin(i)]);


                cos.push([i, Math.cos(i)]);


            }


            // Setup the flot chart using our data


            $.plot(elem, 


                [


                    { label: "sin(x)",  data: sin},


                    { label: "cos(x)",  data: cos}


                ], 


                {


                    lines: { show: true },


                    points: { show: true },


                    yaxis: { min: -1.2, max: 1.2 },


                    grid: {


                        hoverable: true,


                        borderWidth: 1


                    },


					colors: [ "#8cc7e0", "#2d83a6" ]


                }


            );


            // Create a tooltip on our chart


            elem.qtip({


                prerender: true,


                content: 'Loading...', // Use a loading message primarily


                position: {


                    viewport: $(window), // Keep it visible within the window if possible


                    target: 'mouse', // Position it in relation to the mouse


                    adjust: { x: 8, y: -30 } // ...but adjust it a bit so it doesn't overlap it.


                },


                show: false, // We'll show it programatically, so no show event is needed


                style: {


                    classes: 'ui-tooltip-shadow ui-tooltip-tipsy',


                    tip: false // Remove the default tip.


                }


            });


         


            // Bind the plot hover


            elem.on('plothover', function(event, coords, item) {


                // Grab the API reference


                var self = $(this),


                    api = $(this).qtip(),


                    previousPoint, content,


         


                // Setup a visually pleasing rounding function


                round = function(x) { return Math.round(x * 1000) / 1000; };


         


                // If we weren't passed the item object, hide the tooltip and remove cached point data


                if(!item) {


                    api.cache.point = false;


                    return api.hide(event);


                }


         


                // Proceed only if the data point has changed


                previousPoint = api.cache.point;


                if(previousPoint !== item.dataIndex)


                {


                    // Update the cached point data


                    api.cache.point = item.dataIndex;


         


                    // Setup new content


                    content = item.series.label + '(' + round(item.datapoint[0]) + ') = ' + round(item.datapoint[1]);


         


                    // Update the tooltip content


                    api.set('content.text', content);


         


                    // Make sure we don't get problems with animations


                    //api.elements.tooltip.stop(1, 1);


         


                    // Show the tooltip, passing the coordinates


                    api.show(coords);


                }


            });


        },


        fl_2 : function() {


            // Setup the placeholder reference


            elem = $('#fl_2');


           


			var data = [


				{


					label: "Gulshan",


					data: 560


				},


				{


					label: "Mirpur",


					data: 360


				},


                {


					label: "Motijheel",


					data: 320


				},


				{


					label: "Mohammadpur",


					data: 280


				},


				{


					label: "Uttara",


					data: 160


				}


			];


			


			// Setup the flot chart using our data


            $.plot(elem, data,         


                {


					label: "Visitors by Location",


                    series: {


                        pie: {


                            show: true,


							highlight: {


								opacity: 0.2


							}


                        }


                    },


                    grid: {


                        hoverable: true,


                        clickable: true


                    },


					//colors: [ "#b3d3e8", "#8cbddd", "#65a6d1", "#3e8fc5", "#3073a0", "#245779", "#183b52" ]


					colors: [ "#b4dbeb", "#8cc7e0", "#64b4d5", "#3ca0ca", "#2d83a6", "#22637e", "#174356", "#0c242e" ]


                }


            );


            // Create a tooltip on our chart


            elem.qtip({


                prerender: true,


                content: 'Loading...', // Use a loading message primarily


                position: {


                    viewport: $(window), // Keep it visible within the window if possible


                    target: 'mouse', // Position it in relation to the mouse


                    adjust: { x: 7 } // ...but adjust it a bit so it doesn't overlap it.


                },


                show: false, // We'll show it programatically, so no show event is needed


                style: {


                    classes: 'ui-tooltip-shadow ui-tooltip-tipsy',


                    tip: false // Remove the default tip.


                }


            });


         


            // Bind the plot hover


            elem.on('plothover', function(event, pos, obj) {


                


                // Grab the API reference


                var self = $(this),


                    api = $(this).qtip(),


                    previousPoint, content,


         


                // Setup a visually pleasing rounding function


                round = function(x) { return Math.round(x * 1000) / 1000; };


         


                // If we weren't passed the item object, hide the tooltip and remove cached point data


                if(!obj) {


                    api.cache.point = false;


                    return api.hide(event);


                }


         


                // Proceed only if the data point has changed


                previousPoint = api.cache.point;


                if(previousPoint !== obj.seriesIndex)


                {


                    percent = parseFloat(obj.series.percent).toFixed(2);


                    // Update the cached point data


                    api.cache.point = obj.seriesIndex;


                    // Setup new content


                    content = obj.series.label + ' ( ' + percent + '% )';


                    // Update the tooltip content


                    api.set('content.text', content);


                    // Make sure we don't get problems with animations


                    //api.elements.tooltip.stop(1, 1);


                    // Show the tooltip, passing the coordinates


                    api.show(pos);


                }


            });


        }


    };





	//* filterable list


	gebo_flist = {


		init: function(){


			//*typeahead


			var list_source = [];


			$('.user_list li').each(function(){


				var search_name = $(this).find('.sl_name').text();


				//var search_email = $(this).find('.sl_email').text();


				list_source.push(search_name);


			});


			$('.user-list-search').typeahead({source: list_source, items:5});


			


			var pagingOptions = {};


			var options = {


				valueNames: [ 'sl_name', 'sl_status', 'sl_email' ],


				page: 10,


				plugins: [


					[ 'paging', {


						pagingClass	: "bottomPaging",


						innerWindow	: 1,


						left		: 1,


						right		: 1


					} ]


				]


			};


			var userList = new List('user-list', options);


			


			$('#filter-online').on('click',function() {


				$('ul.filter li').removeClass('active');


				$(this).parent('li').addClass('active');


				userList.filter(function(item) {


					if (item.values().sl_status == "online") {


						return true;


					} else {


						return false;


					}


				});


				return false;


			});


			$('#filter-offline').on('click',function() {


				$('ul.filter li').removeClass('active');


				$(this).parent('li').addClass('active');


				userList.filter(function(item) {


					if (item.values().sl_status == "offline") {


						return true;


					} else {


						return false;


					}


				});


				return false;


			});


			$('#filter-none').on('click',function() {


				$('ul.filter li').removeClass('active');


				$(this).parent('li').addClass('active');


				userList.filter();


				return false;


			});


			


			$('#user-list').on('click','.sort',function(){


					$('.sort').parent('li').removeClass('active');


					if($(this).parent('li').hasClass('active')) {


						$(this).parent('li').removeClass('active');


					} else {


						$(this).parent('li').addClass('active');


					}


				}


			);


		}


	};


	


	//* gallery grid


    gebo_gal_grid = {


        small: function() {


            //* small gallery grid


            $('#small_grid ul').imagesLoaded(function() {


                // Prepare layout options.


                var options = {


                  autoResize: true, // This will auto-update the layout when the browser window is resized.


                  container: $('#small_grid'), // Optional, used for some extra CSS styling


                  offset: 6, // Optional, the distance between grid items


                  itemWidth: 120, // Optional, the width of a grid item (li)


				  flexibleItemWidth: false


                };


                


                // Get a reference to your grid items.


                var handler = $('#small_grid ul li');


                


                // Call the layout function.


                handler.wookmark(options);


                


                $('#small_grid ul li > a').attr('rel', 'gallery').colorbox({


                    maxWidth	: '80%',


                    maxHeight	: '80%',


                    opacity		: '0.2', 


                    loop		: false,


                    fixed		: true


                });


            });


        }


    };


	


	//* calendar


	gebo_calendar = {


		init: function() {


			var date = new Date();


			var d = date.getDate();


			var m = date.getMonth();


			var y = date.getFullYear();


			var calendar = $('#calendar').fullCalendar({


				header: {


					left: 'prev,next',


					center: 'title,today',


					right: 'month,agendaWeek,agendaDay'


				},


				buttonText: {


					prev: '<i class="icon-chevron-left cal_prev" />',


					next: '<i class="icon-chevron-right cal_next" />'


				},


				aspectRatio: 1.5,


				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,


				theme: false,


				events: [


					{


						title: 'All Day Event',


						start: new Date(y, m, 1),


                        color: '#aedb97',


                        textColor: '#3d641b'


					},


					{


						title: 'Long Event',


						start: new Date(y, m, d-5),


						end: new Date(y, m, d-2)


					},


					{


						id: 999,


						title: 'Repeating Event',


						start: new Date(y, m, d+8, 16, 0),


						allDay: false


					},


					{


						id: 999,


						title: 'Repeating Event',


						start: new Date(y, m, d+15, 16, 0),


						allDay: false


					},


					{


						title: 'Meeting',


						start: new Date(y, m, d+12, 15, 0),


						allDay: false,


                        color: '#aedb97',


                        textColor: '#3d641b'


					},


					{


						title: 'Lunch',


						start: new Date(y, m, d, 12, 0),


						end: new Date(y, m, d, 14, 0),


						allDay: false


					},


					{


						title: 'Birthday Party',


						start: new Date(y, m, d+1, 19, 0),


						end: new Date(y, m, d+1, 22, 30),


						allDay: false,


                        color: '#cea97e',


                        textColor: '#5e4223'


					},


					{


						title: 'Click for Google',


						start: new Date(y, m, 28),


						end: new Date(y, m, 29),


						url: 'http://google.com/'


					}


				],


				eventColor: '#bcdeee'


			})


		}


	};


	


    //* responsive tables


    gebo_media_table = {


        init: function() {


			$('.mediaTable').mediaTable();


        }


    };


