function isScrolledIntoView(elem)
{
  var docViewTop = $(window).scrollTop();
  var docViewBottom = docViewTop + $(window).height();

  var elemTop = $(elem).offset().top;
  var elemBottom = elemTop + $(elem).height();

  //return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
  return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

/*
 * imgPreview jQuery plugin
 * Copyright (c) 2009 James Padolsey
 * j@qd9.co.uk | http://james.padolsey.com
 * Dual licensed under MIT and GPL.
 * Updated: 09/02/09
 * @author James Padolsey
 * @version 0.22
 */
(function($){
    
    $.expr[':'].linkingToImage = function(elem, index, match){
        // This will return true if the specified attribute contains a valid link to an image:
        return !! ($(elem).attr(match[3]) && $(elem).attr(match[3]).match(/\.(gif|jpe?g|png|bmp)$/i));
    };
    
    $.fn.imgPreview = function(userDefinedSettings){
        
        var s = $.extend({
            
            /* DEFAULTS */
            
            // CSS to be applied to image:
            imgCSS: {},
            // Distance between cursor and preview:
            distanceFromCursor: {top:10, left:10},
            // Boolean, whether or not to preload images:
            preloadImages: true,
            // Callback: run when link is hovered: container is shown:
            onShow: function(){},
            // Callback: container is hidden:
            onHide: function(){},
            // Callback: Run when image within container has loaded:
            onLoad: function(){},
            // ID to give to container (for CSS styling):
            containerID: 'imgPreviewContainer',
            // Class to be given to container while image is loading:
            containerLoadingClass: 'loading',
            // Prefix (if using thumbnails), e.g. 'thumb_'
            thumbPrefix: '',
            // Where to retrieve the image from:
            srcAttr: 'href'
            
        }, userDefinedSettings),
        
        $container = $('<div/>').attr('id', s.containerID)
                        .append('<img/>').hide()
                        .css('position','absolute')
                        .attr('rel','init')
                        .addClass('imgprevv')
                        .appendTo('body'),
            
        $img = $('img', $container).css(s.imgCSS),
        

        // Get all valid elements (linking to images / ATTR with image link):
        $collection = this.filter(':linkingToImage(' + s.srcAttr + ')');
        
        // Re-usable means to add prefix (from setting):
        function addPrefix(src) {
            return src.replace(/(\/?)([^\/]+)$/,'$1' + s.thumbPrefix + '$2');
        }
        
        if(s.containerID != 'imgPreview_user'){
          if (s.preloadImages) {
              (function(i){
                  var tempIMG = new Image(),
                      callee = arguments.callee;
                      
                      //alert($($collection[i]).attr('class'));
                  //tempIMG.src = addPrefix($($collection[i]).attr(s.srcAttr));
                  tempIMG.src = $($collection[i]).attr(s.srcAttr);
                  tempIMG.onload = function(){
                      $collection[i + 1] && callee(i + 1);
                  };
              })(0);
          }
        }
        
        
        
        $collection
            .mousemove(function(e){
                var shouldtop = e.pageY + s.distanceFromCursor.top;
                var shouldleft = e.pageX + s.distanceFromCursor.left;
                //alert('not in view');
                var docViewTop = $(window).scrollTop();
                var docViewBottom = docViewTop + $(window).height();
                var elemTop = $container.offset().top;
                var elemBottom = elemTop + $container.height();
                
                //alert($container.attr('id'));
                if($container.attr('id') != 'imgPreview_user'){
                  if($container.attr('rel') == 'init'){                    
                    $container.attr('rel','notinit');
                  } else {
                    if(elemBottom >= docViewBottom){
                      /**$("#block-views-find_art_blocks-block_1 h2").text('mas mababa:'+elemBottom+'>='+docViewBottom+'kasi:elemtop('+elemTop+') + containerheight +('+$container.height()+') at ang docviewbottom = docviewtop('+docViewTop+') + windowheight('+$(window).height()+')');**/
                      //mas mababa
                      shouldtop = elemTop - (elemBottom - docViewBottom) ;
                    } else {
                      /**$("#block-views-find_art_blocks-block_1 h2").text('ok naman:'+elemBottom+'<'+docViewBottom+'kasi:elemtop('+elemTop+') + containerheight +('+$container.height()+') at ang docviewbottom = docviewtop('+docViewTop+') + windowheight('+$(window).height()+')');**/
                    } 
                  }
                }
                
                $container.css({
                    top: shouldtop + 'px',
                    left: shouldleft + 'px'
                });
                
            })
            .mouseout(function(e){
            })
            .hover(function(){
                
                $(".imgprevv").each(function(){
                  $(this).hide();
                }); 
                var link = this;
                $container
                    .addClass(s.containerLoadingClass)
                    .show();
                $img
                    .load(function(){
                        $container.removeClass(s.containerLoadingClass);
                        if($container.attr('id') != 'imgPreview_user'){
                          $img.show();
                        }
                        s.onLoad.call($img[0], link);
                    })
                    .attr( 'src' , addPrefix($(link).attr(s.srcAttr)) );
                s.onShow.call($container[0], link);
                
            }, function(){
                
                $container.hide();
                $img.unbind('load').attr('src','').hide();
                s.onHide.call($container[0], this);
                
            });
        
        // Return full selection, not $collection!
        return this;
        
    };
    
})(jQuery);
