﻿/**
 * @author Alexandre Magno
 * @desc Center a element with jQuery
 * @version 1.0
 * @example
 * $("element").center({
 *
 *              vertical: true,
 *      horizontal: true
 *
 * });
 * @obs With no arguments, the default is above
 * @license free
 * @param bool vertical, bool horizontal
 * @contribution Paulo Radichi
 *
 */
jQuery.fn.center = function(params) {

                var options = {

                        vertical: true,
                        horizontal: true

                }
                op = jQuery.extend(options, params);

   this.each(function(){

                //initializing variables
                var $self = jQuery(this);
                //get the dimensions using dimensions plugin
                var width = $self.width();
                var height = $self.height();
                //get the paddings
                var paddingTop = parseInt($self.css("padding-top"));
                var paddingBottom = parseInt($self.css("padding-bottom"));
                //get the borders
                var borderTop = parseInt($self.css("border-top-width"));
                var borderBottom = parseInt($self.css("border-bottom-width"));
                //get the media of padding and borders
                var mediaBorder = (borderTop+borderBottom)/2;
                var mediaPadding = (paddingTop+paddingBottom)/2;
                //get the type of positioning
                var positionType = $self.parent().css("position");
                // get the half minus of width and height
                var halfWidth = (width/2)*(-1);
                var halfHeight = ((height/2)*(-1))-mediaPadding-mediaBorder;
                // initializing the css properties
                var cssProp = {
                        position: 'absolute'
                };

                if(op.vertical) {
                        cssProp.height = height;
                        cssProp.top = '50%';
                        cssProp.marginTop = halfHeight;
                }
                if(op.horizontal) {
                        cssProp.width = width;
                        cssProp.left = '50%';
                        cssProp.marginLeft = halfWidth;
                }
                //check the current position
                if(positionType == 'static') {
                        $self.parent().css("position","relative");
                }
                //aplying the css
                $self.css(cssProp);


   });

};

jQuery.fn.centerToWin = function(params) {

                var options = {

                        vertical: true,
                        horizontal: true

                }
                op = jQuery.extend(options, params);

   this.each(function(){
        //initializing variables
        var $self = jQuery(this);
        //get the dimensions using dimensions plugin
        var width = $self.width();
        var height = $self.height();      
        // initializing the css properties
        var cssProp= {
        };
        if(op.vertical) {
                cssProp.top = ($(window).height()/2) - (height/2);
        }
        if(op.horizontal) {
                cssProp.left = ($(window).width()/2) - (width/2);
        }
        //aplying the css
        $self.css(cssProp);
   });
};

var keys = {backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127}