//NuvuShadow- 2011 - A jQuery Plugin. NRC Studios - http://nuvushadow.nrcstudios.info written by: Nolan R Campbell - nuvuscripts@gmail.com
(function($){


     $.fn.nuvushadow = function( options ) {
      //set document width and height



		// default options
		options = $.extend({
		   area: document,
           type: 'text',
           shadowSpread:40,
           shadowSize: 10,
           xgravity: 5,
           ygravity:5,
           shadowColor: '#000000',
           shadowStrength: 10,
           boxinset: 'false',

		}, options);


    return this.each(function() {

        var $this = $(this);
        //extend settings as options
        var o = $.metadata ? $.extend({}, options, $this.metadata()) : options;

        //document mousemove event
   $(o.area).mousemove(function(e){
          //evt pageX and Y




        var x = e.clientX - ($this.offset().left+ ($this.width() / 2));
    var y = e.clientY - ($this.offset().top+ ($this.height() / 2));

    var d = Math.sqrt(x*x + y*y);


        //begin each function
        $(this).each( function() {


function shadowMove(){
  if(options.type == 'text'){
    var textshadow = (-x/o.xgravity) + 'px ' + (-y/o.ygravity)  + 'px ' + (d /  o.shadowSpread) + 'px' + o.shadowColor ;
         $this.css({'text-shadow':  textshadow });
         $this.css({'-moz-text-shadow':  textshadow});
         $this.css({'-o-text-shadow':  textshadow });
         $this.css({'-webkit-text-shadow': textshadow });
          } else if(options.type == 'box'){
            var boxshadow = parseInt(-x/o.xgravity) + 'px '+ parseInt(-y/o.ygravity)+'px ' + parseInt(d /  o.shadowSpread)+ 'px '+ o.shadowSize+ 'px'+o.shadowColor ;
            var boxshadowinset = parseInt((-x/o.xgravity)/4) + 'px '+ parseInt((-y/o.ygravity)/4)+'px ' + parseInt((d /  o.shadowSpread)/4)+ 'px '+ o.shadowSize+ 'px'+o.shadowColor ;
             if(options.boxinset == 'true'){

             $this.css({'box-shadow': boxshadowinset+' inset' });
               $this.css({'-moz-box-shadow':boxshadowinset+' inset' });
                $this.css({'-o-box-shadow': boxshadowinset+' inset'});
                 $this.css({'-webkit-box-shadow': boxshadowinset+' inset'}); }
                 else if(options.boxinset == 'false'){
                  $this.css({'box-shadow': boxshadow });
               $this.css({'-moz-box-shadow': boxshadow });
                $this.css({'-o-box-shadow': boxshadow});
                 $this.css({'-webkit-box-shadow': boxshadow});
                 }


          } ;

            }; //end setRanges()
   if(o.area == document){

             var x = e.clientX - ($this.offset().left+ ($this.width() / 2));
    var y = e.clientY - ($this.offset().top+ ($this.height() / 2));
             shadowMove();//run setRanges function
                           }
            else
            {
              var offset = $this.offset();
            var x = e.clientX - (offset.left+ ($this.width() / 2));
    var y = e.clientY - (offset.top+ ($this.height() / 2));
            // console.log(x + 'y:' + y);

              shadowMove();//run setRanges function

            } //end else
          } );//end each
        }); //end mousemove
      });//end return each

       $(window).resize(function(e){
        docWidth  = $(window).width()
        docHeight = $(window).height()
      });




     };//end each























  })(jQuery)


