// JavaScript Document




var dragapproved=false
var z,x,y;
var slideValue = 1;

function initSite(){
	startSlideshow();	
}


function menuOver(mID){
	document.getElementById('menuitem' + mID).src = 'images/menu_' + mID + '_over_v2.png';	
}
function menuOut(mID){
	document.getElementById('menuitem' + mID).src = 'images/menu_' + mID + '_out_v2.png';	
}


/*
FADING IMAGE
*/

var inOp=100;
var fadeInterval;
var waitCount=0;
var currentImage = 0;
var currentObjectID = 2;
var upcomingObjectID = 1;

function startSlideshow(){
	fadeInterval = setInterval(fadeOnce,100);
}



function fadeOnce(){
	if(inOp < 104){
		var objIn = document.getElementById('illustrationImage' + upcomingObjectID).style;
		objIn.opacity = (inOp / 100);
		objIn.MozOpacity = (inOp / 100);
		objIn.KhtmlOpacity = (inOp / 100);
		objIn.filter = "alpha(opacity=" + inOp + ")";
		objIn.visibility = 'visible';
	
		inOp+=4;
	} else {
		waitCount++;
		if(waitCount > 50){
			//THE NEXT IMAGE ID IN IMAGE ARRAY
			//document.title = currentImage;	
			if(currentImage < imageCount){
				currentImage++;
			} else {
				currentImage = 0;
			}
			
			
			//SET THE IMAGE OBJECT THAT IS TO BE MADE
			//VISIBLE AND THE ONE THAT SHOULD BE Z-INDEXED TO THE BOTTOM.
			if(currentObjectID == 1){
				currentObjectID = 2;
				upcomingObjectID = 1;
			} else {
				currentObjectID = 1;
				upcomingObjectID = 2;
			}
			
			//1. SET THE UNDERLYING IMAGES OPACITY TO 0 BEFORE MOVING IT TO THE TOP
			var objIn = document.getElementById('illustrationImage' + upcomingObjectID).style;
			objIn.opacity = (0 / 100);
			objIn.MozOpacity = (0 / 100);
			objIn.KhtmlOpacity = (0 / 100);
			objIn.filter = "alpha(opacity=" + 0 + ")";
			objIn.visibility = 'visible';
			
			//MOVE THE UNDERLYING IMAGE TO THE TOP
			document.getElementById('illustrationImage' + upcomingObjectID).style.zIndex = 2;
			document.getElementById('illustrationImage' + currentObjectID).style.zIndex = 1;

			document.getElementById('illustrationImage' + upcomingObjectID).src = 'images/pool/' + slideshowArray[currentImage];
			
			//RESET COUNTERS WHICH WILL START THE OPACITY CHANGE AT THE START OF THIS FUNCTION
			waitCount = 0;
			inOp = 0;
		}
	}
}




// Global vars. You don't need to make changes here to change your sliders.
// Changing the attributes in your (X)HTML file is enough.
var carpemouseover                = false;
var carpeDefaultSliderLength      = 280;
var carpeSliderDefaultOrientation = 'horizontal';
var carpeSliderClassName          = 'contentTextSliderHandle';
var carpeSliderDisplayClassName   = 'carpe_slider_display';
var carpesliders                  = [];
var carpedisplays                 = [];
var carpeslider                   = {};
var carpedisplay                  = {};
var n 							  = (document.layers) ? 1:0;
var ie 							  = (document.all) ? 1:0;



// carpeGetElementsByClass: Cross-browser function that returns
// an array with all elements that have a class attribute that
// contains className
function carpeGetElementsByClass(className)
{
	var classElements = new Array();
	var els = document.getElementsByTagName("*");
	var elsLen = els.length;
	var pattern = new RegExp("\\b" + className + "\\b");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
// carpeLeft: Cross-browser version of "element.style.left"
// Returns or sets the horizontal position of an element.
function carpeLeft(elmnt, pos)
{
	if (!(elmnt = document.getElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.left) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.left = pos + 'px';
		else {
			pos = parseInt(elmnt.style.left);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelLeft) {
		if (typeof(pos) == 'number') elmnt.style.pixelLeft = pos;
		else pos = elmnt.style.pixelLeft;
	}
	return pos;
}
// carpeTop: Cross-browser version of "element.style.top"
// Returns or sets the vertical position of an element.
function carpeTop(elmnt, pos)
{
	if (!(elmnt = document.getElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.top) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.top = pos + 'px';
		else {
			pos = parseInt(elmnt.style.top);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelTop) {
		if (typeof(pos) == 'number') elmnt.style.pixelTop = pos;
		else pos = elmnt.style.pixelTop;
	}
	return pos;
}
// moveSlider: Handles slider and display while dragging
function moveSlider(evnt)
{
	var evnt = (!evnt) ? window.event : evnt; // The mousemove event
	if (carpemouseover) { // Only if slider is dragged
		carpeslider.x = carpeslider.startOffsetX + evnt.screenX; // Horizontal mouse position relative to allowed slider positions
		carpeslider.y = carpeslider.startOffsetY + evnt.screenY; // Horizontal mouse position relative to allowed slider positions
		if (carpeslider.x > carpeslider.xMax) carpeslider.x = carpeslider.xMax; // Limit horizontal movement
		if (carpeslider.x < 0) carpeslider.x = 0; // Limit horizontal movement
		if (carpeslider.y > carpeslider.yMax) carpeslider.y = carpeslider.yMax; // Limit vertical movement
		if (carpeslider.y < 0) carpeslider.y = 0; // Limit vertical movement
		carpeLeft(carpeslider.id, carpeslider.x);  // move slider to new horizontal position
		carpeTop(carpeslider.id, carpeslider.y); // move slider to new vertical position
		var sliderVal = carpeslider.x + carpeslider.y; // pixel value of slider regardless of orientation
		var sliderPos = (carpeslider.distance / carpedisplay.valuecount) * 
			Math.round(carpedisplay.valuecount * sliderVal / carpeslider.distance);
		var v = Math.round((sliderPos * carpeslider.scale + carpeslider.from) * // calculate display value
			Math.pow(10, carpedisplay.decimals)) / Math.pow(10, carpedisplay.decimals);
		carpedisplay.value = v; // put the new value in the slider display element
		var sHeight = (document.getElementById('contentTextBox').offsetHeight + 20) - document.getElementById('contentTextBoxMask').offsetHeight;
		var tBoxPos = Math.round((sHeight * v)/100) * -1;
		document.getElementById('contentTextBox').style.top = tBoxPos + "px";

		
		return false;
	
	}
	return
}

function scrollOnce(scrollDir){
	var currentPos = document.getElementById('contentTextBox').offsetTop;
	if(((currentPos + (scrollDir * 10)) < 0) && ((currentPos + (scrollDir * 10)) > ((document.getElementById('contentTextBox').offsetHeight - (document.getElementById('contentTextBoxMask').offsetHeight - 20)) * -1))){
		document.getElementById('contentTextBox').style.top = (currentPos + (scrollDir * 10)) + "px";
	}
	
	if(scrollDir > 0 && document.getElementById('contentTextBox').offsetTop > -11){
		document.getElementById('contentTextBox').style.top = 0;
	}
		
	
	var percent = (document.getElementById('contentTextBox').offsetTop * -1)/ (document.getElementById('contentTextBox').offsetHeight - document.getElementById('contentTextBoxMask').offsetHeight + 20);
	document.getElementById('slider5').style.top = ((290 * percent)) + "px";
}


// slide: Handles the start of a slider move.
function slide(evnt)
{
	if (!evnt) evnt = window.event; // Get the mouse event causing the slider activation.
	carpeslider = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated slider element.
	var dist = parseInt(carpeslider.getAttribute('distance')); // The allowed slider movement in pixels.
	carpeslider.distance = dist ? dist : carpeDefaultSliderLength; // Deafault distance from global var.
	var ori = carpeslider.getAttribute('orientation'); // Slider orientation: 'horizontal' or 'vertical'.
	var orientation = ((ori == 'horizontal') || (ori == 'vertical')) ? ori : carpeSliderDefaultOrientation;
		// Default orientation from global variable.
	var displayId = carpeslider.getAttribute('display'); // ID of associated display element.
	carpedisplay = document.getElementById(displayId); // Get the associated display element.
	carpedisplay.sliderId = carpeslider.id; // Associate the display with the correct slider.
	var dec = parseInt(carpedisplay.getAttribute('decimals')); // Number of decimals to be displayed.
	carpedisplay.decimals = dec ? dec : 0; // Default number of decimals: 0.
	var val = parseInt(carpedisplay.getAttribute('valuecount'))  // Allowed number of values in the interval.
	carpedisplay.valuecount = val ? val : carpeslider.distance + 1 // Default number of values: the sliding distance.
	var from = parseFloat(carpedisplay.getAttribute('from')) // Min/start value for the display.
	from = from ? from : 0 // Default min/start value: 0.
	var to = parseFloat(carpedisplay.getAttribute('to')) // Max value for the display.
	to = to ? to : carpeslider.distance // Default number of values: the sliding distance.
	carpeslider.scale = (to - from) / carpeslider.distance // Slider-display scale [value-change per pixel of movement].
	if (orientation == 'vertical') { // Set limits and scale for vertical sliders.
		carpeslider.from = to // Invert for vertical sliders. "Higher is more."
		carpeslider.xMax = 0
		carpeslider.yMax = carpeslider.distance
		carpeslider.scale = -carpeslider.scale // Invert scale for vertical sliders. "Higher is more."
	}
	else { // Set limits for horizontal sliders.
		carpeslider.from = from;
		carpeslider.xMax = carpeslider.distance;
		carpeslider.yMax = 0;
	}
	carpeslider.startOffsetX = carpeLeft(carpeslider.id) - evnt.screenX; // Slider-mouse horizontal offset at start of slide.
	carpeslider.startOffsetY = carpeTop(carpeslider.id) - evnt.screenY; // Slider-mouse vertical offset at start of slide.
	carpemouseover = true;
	
	
	document.onmousemove = moveSlider; // Start the action if the mouse is dragged.
	document.onmouseup = sliderMouseUp; // Stop sliding.
	
	return false;
}


// sliderMouseUp: Handles the mouseup event after moving a slider.
// Snaps the slider position to allowed/displayed value. 
function sliderMouseUp()
{
	if (carpemouseover) {
		var v = (carpedisplay.value) ? carpedisplay.value : 0 // Find last display value.
		var pos = (v - carpeslider.from)/(carpeslider.scale) // Calculate slider position (regardless of orientation).
		if (carpeslider.yMax == 0) {
			pos = (pos > carpeslider.xMax) ? carpeslider.xMax : pos;
			pos = (pos < 0) ? 0 : pos;
			carpeLeft(carpeslider.id, pos); // Snap horizontal slider to corresponding display position.
		}
		if (carpeslider.xMax == 0) {
			pos = (pos > carpeslider.yMax) ? carpeslider.yMax : pos;
			pos = (pos < 0) ? 0 : pos;
			carpeTop(carpeslider.id, pos); // Snap vertical slider to corresponding display position.
		}
		if (document.removeEventListener) { // Remove event listeners from 'document' (W3C).
			document.removeEventListener('mousemove', moveSlider, false);
			document.removeEventListener('mouseup', sliderMouseUp, false);
		}
		else if (document.detachEvent) { // Remove event listeners from 'document' (IE).
			document.detachEvent('onmousemove', moveSlider);
			document.detachEvent('onmouseup', sliderMouseUp);
			document.releaseCapture();
		}
	}
	carpemouseover = false; // Stop the sliding.
}




function focusDisplay(evnt)
{
	if (!evnt) evnt = window.event; // Get the mouse event causing the display activation.
	carpedisplay = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated display element.
	var lock = carpedisplay.getAttribute('typelock'); // Is the user allowed to type into the display?
	if (lock == 'on') {
		carpedisplay.blur();
	}
	return;
}

window.onload = function() // Set up the sliders and the displays.
{
	carpesliders = carpeGetElementsByClass(carpeSliderClassName) // Find the horizontal sliders.
	for (i = 0; i < carpesliders.length; i++) {
		carpesliders[i].onmousedown = slide; // Attach event listener.
	}
	carpedisplays = carpeGetElementsByClass(carpeSliderDisplayClassName) // Find the displays.
	for (i = 0; i < carpedisplays.length; i++) {
		carpedisplays[i].onfocus = focusDisplay; // Attach event listener.
	}
	if(document.getElementById('contentTextBoxMask') != null){
		if(document.getElementById('contentTextBoxMask').offsetHeight >= document.getElementById('contentTextBox').offsetHeight){
			document.getElementById('contentTextSlider').style.visibility = 'hidden';
		} else {
			document.getElementById('contentTextSlider').style.visibility = 'visible';
		}
		initSite();
	}
	if (window.addEventListener){
		window.addEventListener('DOMMouseScroll', wheel, false);
	}
	window.onmousewheel = document.onmousewheel = wheel;
	
}

/** Event handler for mouse wheel event.
 */
function wheel(event){
        var delta = 0;
        if (!event) /* For IE. */
                event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
                if (window.opera)
                        delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
                delta = -event.detail/3;
        }
        if (delta){
        	scrollOnce(delta);
		}
        if (event.preventDefault){
        	event.preventDefault();
		}
		event.returnValue = false;
}





//-->

