(function($) {
    $.fn.cp_emptySelect = function() {
      return this.each(function(){
        if (this.tagName=='SELECT') this.options.length = 0;
      });
    }
    
    $.fn.cp_loadSelect = function(optionsDataArray) {
      return this.cp_emptySelect().each(function(){
        if (this.tagName=='SELECT') {
          var selectElement = this;
          $.each(optionsDataArray,function(index,optionData){
            var option = new Option(optionData.caption,
                                    optionData.value);
            if ($.browser.msie) {
              selectElement.add(option);
            }
            else {
              selectElement.add(option,null);
            }
          });
        }
      });
    }

    $.fn.cp_openWindow = function(settings) {
        
        settings = $.extend({
            url: '',
            resizable: 'yes',
            scrollbars: 'yes',
            width: 800,
            height: 600,
            posX: (screen.width-800)/2,
            posY: (screen.height-600)/2
        }, settings || {});

        settings.posX = (screen.width-settings.width)/2;
        settings.posY = (screen.height-settings.height)/2;
        
        return this.each(function(){
            a = window.open(settings.url,"","height=" + settings.height + ",width=" + settings.width + ",scrollbars=" + settings.scrollbars +
             ",resizable=" + settings.resizable + ",left=" + settings.posX + ",top=" + settings.posY);
        });
    }  

    /*
     * Centers a an element within a container div vertically or horizontally
     * Example: 
     * <div>
     *    <div class="centered"></div>
     * </div>
     * $(".centered").center();
     * 
     * For vertical alignment only:
     * $(".centered").center({
     *    vertical: true
     * });
     */
     
    $.fn.cp_center = function(params) {
        var options = {
            vertical: true,
            horizontal: true
        }
        op = jQuery.extend(options, params);
        
        return 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 paddings
            var paddingLeft  = parseInt($self.css("padding-left"));
            var paddingRight = parseInt($self.css("padding-right"));
            //get the borders
            var borderLeft = parseInt($self.css("border-left-width"));
            var borderRight = parseInt($self.css("border-right-width"));
            
            borderTop    = isNaN(borderTop)    ? 0 : borderTop;
            borderBottom = isNaN(borderBottom) ? 0 : borderBottom;
            borderLeft   = isNaN(borderLeft)   ? 0 : borderLeft;
            borderRight  = isNaN(borderRight)  ? 0 : borderRight;
            
            //get the media of padding and borders
            var mediaBorder = (borderTop+borderBottom)/2;
            var mediaPadding = (paddingTop+paddingBottom)/2;
            
            var mediaBorderH = (borderLeft+borderRight)/2;
            var mediaPaddingH = (paddingLeft+paddingRight)/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))-mediaPaddingH-mediaBorderH;
            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);
 