/*
Simple Image Trail script- By JavaScriptKit.com
Visit http://www.javascriptkit.com for this script and more
This notice must stay intact
*/

var offsetfrommouse=[15,25]; //image x,y offsets from cursor position in pixels. Enter 0,0 for no offset
var displayduration=0; //duration in seconds image should remain visible. 0 for always.

var defaultimageheight = 40;	// maximum image size.
var defaultimagewidth = 40;	// maximum image size.

var timer;

function findSize(w){
        if (w) {
            this.standardbody = w;
        } else {
            this.standardbody = (document.compatMode == "CSS1Compat")? document.documentElement : document.body; //create reference to common "body" across doctypes
        }
        var ie = document.all && !window.opera;
        var dom = document.getElementById;
        var scroll_top = (ie)? this.standardbody.scrollTop : window.pageYOffset;
        var scroll_left = (ie)? this.standardbody.scrollLeft : window.pageXOffset;
        var docWidth = (ie)? this.standardbody.clientWidth : window.innerWidth-this.scrollbarwidth;
        var docheight = (ie)? this.standardbody.clientHeight: window.innerHeight;
        var winW = (this.standardbody.offsetWidth>this.standardbody.scrollWidth)? this.standardbody.offsetWidth : this.standardbody.scrollWidth; //Full scroll height of document
        var winH = (this.standardbody.offsetHeight>this.standardbody.scrollHeight)? this.standardbody.offsetHeight : this.standardbody.scrollHeight; //Full scroll height of document
       
        if(!docWidth>0){docWidth = winW;}
       
        return { width: winW, height: winH, windowHeight:docheight, windowWidth:docWidth, scrollTop:scroll_top , scrollLeft:scroll_left };
};

function gettrailobj(){
	if (document.getElementById("preview_div")){
		return document.getElementById("preview_div")
	} else {
		var objectDiv = document.createElement('DIV');
		objectDiv.id				= 'preview_div';
		objectDiv.style.position	= 'absolute';
		objectDiv.style.zIndex		= '100';
		document.body.appendChild(objectDiv);
		return document.getElementById("preview_div");
	}
}

function truebody(){
	return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}


function imageHover(input){
	
	
	this.followmouse = function(e){
		var xcoord=offsetfrommouse[0]
		var ycoord=offsetfrommouse[1]
		
		var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
		var docheight=document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight)
		
		if (typeof e != "undefined"){
			if (docwidth - e.pageX < defaultimagewidth + 2*offsetfrommouse[0]){
				xcoord = e.pageX - xcoord - defaultimagewidth; // Move to the left side of the cursor
			} else {
				xcoord += e.pageX;
			}
			if (docheight - e.pageY < defaultimageheight + 2*offsetfrommouse[1]){
				ycoord += e.pageY - Math.max(0,(2*offsetfrommouse[1] + defaultimageheight + e.pageY - docheight - truebody().scrollTop));
			} else {
				ycoord += e.pageY;
			}

		} else if (typeof window.event != "undefined"){
			if (docwidth - event.clientX < defaultimagewidth + 2*offsetfrommouse[0]){
				xcoord = event.clientX + truebody().scrollLeft - xcoord - defaultimagewidth; // Move to the left side of the cursor
			} else {
				xcoord += truebody().scrollLeft+event.clientX
			}
			if (docheight - event.clientY < (defaultimageheight + 2*offsetfrommouse[1])){
				ycoord += event.clientY + truebody().scrollTop - Math.max(0,(2*offsetfrommouse[1] + defaultimageheight + event.clientY - docheight));
			} else {
				ycoord += truebody().scrollTop + event.clientY;
			}
		}
		
		var objTrail = gettrailobj();
		objTrail.style.left			= parseInt(xcoord,10) + "px"
		objTrail.style.top			= parseInt(ycoord,10) + "px"
	}
	
	// Hide Image Hover
	if(input===false){
		var objTrail = gettrailobj();
		objTrail.style.display		= 'none';
		document.onmousemove		= "";
	}
	// Show Image Hover
	else {
		var objTrail = gettrailobj();
		objTrail.style.display		= 'block';
		document.onmousemove = this.followmouse; // Mousemove event
		
		var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth - offsetfrommouse[0]
		var docheight=document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight)
		
		if( (navigator.userAgent.indexOf("Konqueror")==-1  || navigator.userAgent.indexOf("Firefox")!=-1 || (navigator.userAgent.indexOf("Opera")==-1 && navigator.appVersion.indexOf("MSIE")!=-1)) && (docwidth>650 && docheight>500)) {
			// Height and Width
			var width, height;
			if(input.width){width = input.width;}
			if(input.w){width = input.w;}
			if(input.height){height = input.height;}
			if(input.h){height = input.h;}
			
			( width == 0 ) ? width = defaultimagewidth: '';
			( height == 0 ) ? height = defaultimageheight: '';
				
			defaultimageheight = height
			defaultimagewidth = width
			
			// Create Box Content
			newHTML  = '<div id="hovermastercontainer" class="border_preview" style="width:' + width + 'px;height:'+ height +'px;">';
			
			newHTML += '<div id="loader_container">';
			newHTML += '<div id="loader">';
			newHTML += '<div align="center">Loading preview...</div>';
			newHTML += '<div id="loader_bg">';
			newHTML += '<div id="progress"> </div>';
			newHTML += '</div>';
			newHTML += '</div>';
			newHTML += '</div>';
			
			// Title (optional)
			if(input.title){newHTML += '<div class="title">' + input.title + '</div>';}
			if(input.t){newHTML += '<div class="title">' + input.t + '</div>';}
			
			// Image with loader
			newHTML += '<div class="preview_temp_load" id="hoverimagecontainer">';
			newHTML += '<img onload="javascript:image_hover_loaded();" src="' + input.src + '" border="0" id="hoverimage">';
			newHTML += '</div>';
			
			// Caption (optional)
			if(input.caption){newHTML += '<div class="caption">' + input.caption + '</div>';}
			if(input.c){newHTML += '<div class="caption">' + input.c + '</div>';}
			
			newHTML += '</div>'; 
			
			if(navigator.userAgent.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1 ){
				newHTML += '<iframe src="about:blank" scrolling="no" frameborder="0" width="' + width + '" height="' + height + '"></iframe>';
			}
			objTrail.innerHTML = newHTML;
		}
	}
}




/* ============================================================
| LOADER
============================================================ */
//var t_id = setInterval(animate,20); // MEMORY HOG!!!
var pos=0;
var dir=2;
var len=0;

function animate() {
	var elem = document.getElementById('progress');
	if(elem != null) {
	if (pos==0) len += dir;
	if (len>32 || pos>79) pos += dir;
	if (pos>79) len -= dir;
	if (pos>79 && len==0) pos=0;
	elem.style.left = pos;
	elem.style.width = len;
	}
}

function image_hover_loaded() {
	//this.clearInterval(t_id); // MEMORY HOG!!!
	var targelem = document.getElementById('loader_container');
	targelem.style.display='none';
	targelem.style.visibility='hidden';
	//var t_id = setInterval(animate,60); // MEMORY HOG!!!
	
	var hovermastercontainer = document.getElementById('hovermastercontainer');
	var hoverimage = document.getElementById('hoverimage');
	var size_hovermastercontainer = findSize(hovermastercontainer);
	var size_hoverimage = findSize(hoverimage);
	hovermastercontainer.style.height = size_hoverimage.height + 'px';
	hovermastercontainer.style.width = size_hoverimage.width + 'px';
}