/* Code is heavy for mutex etc, to stop people from "breaking"
 * the correct functionality by going crazy with clicks. 
 * Double ensure syncronisation. 
 */

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	} else if (obj.x) {
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}

var imagePos = 0;
var IMAGE_ID_PREFIX = "lom-lead";
//var IMAGE_CAPTION_PREFIX = "lom-caption";
//var IMAGE_BOX_PREFIX = "lom-imgcaption";
var currentTimeout;
var faderTimeout;
var timeoutMutex = 0;
/* based on template parameter? */
var TOTAL_IMAGES = 0;
var toFade;
var toDisplay;
//var toCaption;
//var toUnCaption;
//var toUnBox;
//var toBox;
var prevImageSrc;


function loopCycloMatic() {
    // mutex
    if(timeoutMutex === 0) {
        displayNext(0);
		clearTimeout(currentTimeout);
	    currentTimeout = window.setTimeout("loopCycloMatic(0)", 6000);
	}
}

function startCycloMatic(bootstrap) {
    timeoutMutex = 0;
	clearTimeout(currentTimeout);
	currentTimeout = window.setTimeout("loopCycloMatic(0)", 6000);
}


function stopCycloMatic() {
    timeoutMutex = 1;
    clearTimeout(currentTimeout);
}


function setOpacity(obj, opacity) {
    opacity = (opacity == 100)?99.999:opacity;
    // IE/Win
    obj.style.filter = "alpha(opacity:"+opacity+")";
    // Safari<1.2, Konqueror
    obj.style.KHTMLOpacity = opacity/100;
    // Older Mozilla and Firefox
    obj.style.MozOpacity = opacity/100;
    // Safari 1.2, newer Firefox and Mozilla, CSS3
    obj.style.opacity = opacity/100;
}


function fadeIn(objId,opacity,amount) {
    if (document.getElementById) {
        obj = document.getElementById(objId);
        if (opacity <= 100) {
		    if(opacity == 20) {
			    amount = amount*2;
			} else if(opacity == 40) {
			    amount = amount*2;
			} else if(opacity == 60) {
			    amount = amount/2;
			} else if(opacity == 80) {
			    amount = amount/2;
			}
		    setOpacity(obj, opacity);
            opacity += amount;
            faderTimeout = window.setTimeout("fadeIn('"+objId+"',"+opacity+","+amount+")", 2);
        } else {
		    setOpacity(obj, 100);
		    return(true);
		}
    }
}

function displayNoneId(objId) {
    document.getElementById(objId).style.display = "none";
}

function displayNext(immediate) {
    toFade = IMAGE_ID_PREFIX + imagePos;
	//toUnCaption = IMAGE_CAPTION_PREFIX + imagePos;
	//toUnBox = IMAGE_BOX_PREFIX + imagePos;
	
	prevImageSrc = document.getElementById(toFade).getAttribute("src");

	document.getElementById("lead-group").style.backgroundImage = "url("+prevImageSrc+")";
	document.getElementById(toFade).style.display = "none";
	
	if(imagePos == TOTAL_IMAGES) { 
	    imagePos = 0; 
	} else {
	    ++imagePos;
	}
	
	toDisplay = IMAGE_ID_PREFIX + imagePos;
	//toCaption = IMAGE_CAPTION_PREFIX + imagePos;
	//toBox = IMAGE_BOX_PREFIX + imagePos;
	if(immediate) {
	    setOpacity((document.getElementById(toDisplay)), 100);
	    document.getElementById(toDisplay).style.display = "block";
	} else {
	    document.getElementById(toDisplay).style.display = "block";
	    setOpacity((document.getElementById(toDisplay)), 0);
		/*@cc_on
            /*@if (@_win32)
                fadeIn(toDisplay, 0, 2);
            @else @*/
                fadeIn(toDisplay, 0, 2);
            /*@end
        @*/
	}
	
	//document.getElementById(toUnCaption).style.display = "none";
	//document.getElementById(toUnBox).style.display = "none";
	//document.getElementById(toCaption).style.display = "block";
	//document.getElementById(toBox).style.display = "block";
	
	//document.getElementById("cyclo-index").innerHTML = "kristil concept "+(imagePos+1)+" of "+(TOTAL_IMAGES+1);
}

function displayPrevious(immediate) {
    toFade = IMAGE_ID_PREFIX + imagePos;
	//toUnCaption = IMAGE_CAPTION_PREFIX + imagePos;
	//toUnBox = IMAGE_BOX_PREFIX + imagePos;
	
	prevImageSrc = document.getElementById(toFade).src;

	document.getElementById("lead-group").style.backgroundImage = "url("+prevImageSrc+")";
	document.getElementById(toFade).style.display = "none";
	
	if(imagePos === 0) { 
	    imagePos = TOTAL_IMAGES; 
	} else {
	    --imagePos;
	}
	
	toDisplay = IMAGE_ID_PREFIX + imagePos;
	//toCaption = IMAGE_CAPTION_PREFIX + imagePos;
	if(immediate) {
	    setOpacity((document.getElementById(toDisplay)), 100);
	    document.getElementById(toDisplay).style.display = "block";
	} else {
	    setOpacity((document.getElementById(toDisplay)), 0);
	    document.getElementById(toDisplay).style.display = "block";
	    fadeIn(toDisplay, 0, 1);   
	}
	
	//document.getElementById(toUnCaption).style.display = "none";
	//document.getElementById(toUnBox).style.display = "none";
	//document.getElementById(toCaption).style.display = "block";
	//document.getElementById(toBox).style.display = "block";
	
	//document.getElementById("cyclo-index").innerHTML = "kristil concept "+(imagePos+1)+" of "+(TOTAL_IMAGES+1);
}
 

function cycloMaticInit() {
	document.getElementById("image-lead").onmouseover = function() {
	    stopCycloMatic();
	};
	
	document.getElementById("image-lead").onmouseout = function() {
	    startCycloMatic(1);
	};

//    document.getElementById("lomprev").onclick = function() {
//	    stopCycloMatic();
//		displayPrevious(1);
//		startCycloMatic(1);
//		return false;
//    };

//    document.getElementById("lomnext").onclick = function() {
//	    stopCycloMatic();
//		displayNext(1);
//		startCycloMatic(1);
//		return false;
//    };
	
	startCycloMatic(1);
}
