/**
* A simple JavaScript image loaderimage loader
* @author Cuong Tham
* @url http://thecodecentral.com/2008/02/21/a-useful-javascript-image-loader
* @usage
* var loader = new ImageLoader('IMAGE_URL');
* //set event handler
* loader.loadEvent = function(url, image){
*   //action to perform when the image is loaded
*   document.body.appendChild(image);
* }
* loader.load();
*/
 
//source: http://snipplr.com/view.php?codeview&id=561
// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling)
{
  bubbling = bubbling || false;
  if(window.addEventListener)	{ // Standard
    element.addEventListener(type, expression, bubbling);
    return true;
  } else if(window.attachEvent) { // IE
    element.attachEvent('on' + type, expression);
    return true;
  } else return false;
}
 
var ImageLoader = function(url){
  this.url = url;
  this.image = null;
  this.loadEvent = null;
};
ImageLoader.prototype = {
  load:function(){
    this.image = document.createElement('img');
    var url = this.url;
    var image = this.image;
    var loadEvent = this.loadEvent;
    addListener(this.image, 'load', function(e){
       $('#previewImg').attr('src',url);
       movePreview();
    }, false);
    this.image.src = this.url;
  },
  getImage:function(){
    return this.image;
  }
};
 
 
function showPreview(src){
    $('#previewImg').css('display','block');
    var loader = new ImageLoader(src);
    loader.load();
}
 
function hidePreview(){
    $('#previewImg').css('display','none');
    $('#previewImg').attr('src','http://img.amur.eu/images/loading.gif');
}
function movePreview(){
    var xoffset = 0;
    var yoffset = 0;
    
    var hclient = document.all? truebody().clientHeight : window.innerHeight;
    var wclient = document.all? truebody().clientWidth : window.innerWidth;
    
    var picWidth = $('#previewImg').width()+20;
    var picHeight = $('#previewImg').height()+20;
    
    yoffset = -picHeight/2;
    if(yrel < -yoffset) yoffset = -yrel;
    if(hclient-yrel < -yoffset) yoffset = (2*yoffset)+(hclient-yrel);
    
    if(xrel+picWidth > wclient-30) xoffset = -(16+picWidth);
    else xoffset = 16;
    
    $('#previewImg').css('top',(ycoord+yoffset)+'px');
    $('#previewImg').css('left',(xcoord+xoffset)+'px');
}
 
var xcoord = 0;
var ycoord = 0;
var yrel = 0;
var xrel = 0;

document.onmousemove = mouseMove;
 
function mouseMove(e){
    if (typeof e != "undefined"){
	xcoord = e.pageX;
	ycoord = e.pageY;
	yrel = e.clientY;
	xrel = e.clientX;
    }
    else if (typeof window.event !="undefined"){
	xcoord = truebody().scrollLeft+event.clientX;
	ycoord = truebody().scrollTop+event.clientY;
	yrel = event.clientY;
	xrel = event.clientX;
    }
    movePreview();
}
