/*--------------------------------------------------------------------------*/

// Additional methods for Element added by SU, Couloir
Object.extend(Element, {

	getXpos: function(element) {
   	element = $(element);
   	return parseFloat(element.getStyle('left') || '0');;
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src;
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href;
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}


});


Object.extend(Effect, {
//new addition for centering a div on a page
	centre: function(element) {
	    try {
    	    element = $(element);
    	}
    	catch(e) {
    	    return;
    	}
    	var my_dims = document.viewport.getDimensions()
 	   //	var my_width  = document.viewport.getWidth();
	    //var my_height = document.viewport.getHeight();
	    element.style.position = 'absolute';
    	//element.style.display  = 'block';
    	//element.style.zIndex   = 99;
		var scrollY = document.viewport.getScrollOffsets().top
		var elementDimensions = Element.getDimensions(element);
		var setX = ( my_dims.width  - elementDimensions.width  ) / 2;
		var setY = ( my_dims.height - elementDimensions.height ) / 2 + scrollY;
		setX = ( setX < 0 ) ? 0 : setX;
		setY = ( setY < 0 ) ? 0 : setY;
		element.style.left = setX + "px";
		element.style.top  = setY + "px";
		//alert(elementDimensions.height + "px, ")
	}
});


//Function to remove default scroll bar from page on IE
function noIEScrollbar()
{
	var IE = (navigator.userAgent.indexOf('MSIE') != -1);
	if(!IE)
		return;
	var root = document.all[1]; // IE >= 4

	if(root.style.overflow != 'hidden')
		root.style.overflow = 'hidden';
	document.body.style.width = root.clientWidth + 'px';
};

/*--------------------------------------------------------------------------*/
//Universal mouse over code
//Just add class="mouseover" to any image tag on page
//General variable declaration
var oversuffix = '_over';
var mouseOvers = new Array();
var mouseOuts = new Array();

function mouseGoesOver(el) {
	el.src = mouseOvers[el.number].src;
};
function mouseGoesOut(el) {
	el.src = mouseOuts[el.number].src;
};

function setMouseOvers(lang) {
	//Find all images on page
	var allimages = document.getElementsByTagName('img');
	allimages = $(allimages)
	//Extract mouse over images and set swap images
	var imouseovers = 0;
	var imouseLayer = 0;
	var	over_images = new Array();
	var	under_images = new Array();
	var iLink = new Array()
	for (i=0;i<allimages.length;i++){
		if (allimages[i].className == 'mouseover') {
			//get image type from extension
			var imagetype = allimages[i].src.substring(allimages[i].src.lastIndexOf('.'));
			mouseOuts[imouseovers] = new Image();
			mouseOuts[imouseovers].src = allimages[i].src;
			mouseOvers[imouseovers] = new Image();
			mouseOvers[imouseovers].src = allimages[i].src.substring(0,allimages[i].src.lastIndexOf('.')) + oversuffix + imagetype;
			allimages[i].number = imouseovers;
			//Set mouse enter and mouse leave events
			Event.observe(allimages[i], 'mouseover', function(event) {
				mouseGoesOver(this)
			});
			Event.observe(allimages[i], 'mouseout', function(event) {
				mouseGoesOut(this)
			});
			imouseovers++
		 }
		else {
			if  (allimages[i].className == 'mouseoverSec') {
				//get link
				iLink[imouseLayer]=allimages[i].up()
				//get new image
				under_images[imouseLayer] = allimages[i]
				over_images[imouseLayer] = new Image();
				over_images[imouseLayer].src= allimages[i].src.substring(0,allimages[i].src.lastIndexOf('/'))+'/intro_'+iLink[imouseLayer].className+'_'+lang+'.jpg'
				imouseLayer++
			}
		}
	}
	for (i=0;i<iLink.length;i++){
		newImage = under_images[i].clone()
		newImage.src= over_images[i].src
		newImage.setOpacity(0)
		newImage.setStyle({zIndex:100})
		//under_images[i].setStyle({cssFloat:'none'})
		newImage.className='over'
		iLink[i].insert({top: newImage});
		Event.observe(iLink[i], 'mouseover', function(event) {
			this.select(".over")[0].setOpacity(0.5)
		});
		Event.observe(iLink[i], 'mouseout', function(event) {
			this.select(".over")[0].setOpacity(0)
		});

	}
};

// End mouse over code
/*--------------------------------------------------------------------------*/
//Code for popup modal window info used for contact buton
function endModal(event, overlay) {
event.stop();
	var contentWindow =  $(overlay).next()
	new Effect.Fade(overlay, {
			duration: 1.5,
			delay: 0.5,
			afterFinish: function(effect) {effect.element.remove()}});
	new Effect.Fade( contentWindow, { duration: 1.0});
}

function centreModal() {
	var overlay = $('modalOverlay') || 0
	//If overlay exists, fit to window
	if (overlay != 0) {
		var contentBox = overlay.next()
	//	var pageSize = document.viewport.getDimensions();
	//	var scrollY = document.viewport.getScrollOffsets().top
		//alert(scrollY)
	//	overlay.setStyle({ width: pageSize.width + 'px', height: pageSize.height + scrollY + 'px' });
    	// Resize content box
		//contentBox.setStyle({ width: pageSize.width * 0.35 + 'px', height: pageSize.height * 0.5 + 'px' });
		//Centre content box
		Effect.centre(contentBox)
	}
}

function showModalWindow(event, contentId) {
	event.stop();
	//Add overlay div before contentID element
	var contentObj = $(contentId);
	contentObj.insert({before: Builder.node('div',{id:'modalOverlay'})});
	var overlayObj = $('modalOverlay')
	//hide overlay initially and set close on click action
	overlayObj.hide().observe('click', (function(event) { endModal(event, 'modalOverlay'); }));

	//run ie 6 code for png support
	if(typeof document.body.style.maxHeight === "undefined") {
	//	alert('IE 6 Detected');
		contentObj.show()
 		supersleight.limitTo(contentId)
 		supersleight.run()
		contentObj.hide()
	}

	//resize and fit to window content and overlay
	Effect.centre(contentObj)
	// Fade in overlay and content
    new Effect.Appear(overlayObj, { duration: 1.0, from: 0.0, to: 0.8 });
    new Effect.Appear(contentObj, {duration: 2.0, delay: 0.5})
}
function initModalWindow(buttonId, contentId) {
	button = $(buttonId)
	contentObj = $(contentId)
	contentObj.select('a')[0].observe('click', (function(event) { endModal(event, 'modalOverlay'); }));
	//modalLink = button.select('a')[0]
	button.observe('click', (function(event) { showModalWindow(event, contentId)}))




}
/*--------------------------------------------------------------------------*/
// Slide show code
//Function to set Images box length adding up content length and return it
function SetImagesBoxSize(boxId) {
	var imagesBox = $(boxId);
	imagesBox.cleanWhitespace(); // remove extra whitespace between dom elements i.e. images
	var length = 0
	//get only images
	var imagesArray = imagesBox.select('img');
	imagesArray.each(function(item, index) {
		item.setStyle( {top: 0, left: length +'px'});
		length = length + item.getWidth();
		//alert(length)
	});
	imagesBox.setStyle({width: length +'px'})
	return length
}

function scrollBack(cropBoxId, contentBoxId, speed) {
    	var xPos = parseFloat(Element.getStyle(contentBoxId, 'left')  || 0);
		speed = Math.abs(xPos / speed)

		if (xPos != 0) {
			new Effect.Move (contentBoxId,{ x: -xPos, y: 0, mode: 'relative', duration: speed, queue: {position: 'front', scope: 'objectscroll', limit: 1}, transition: Effect.Transitions.linear});
			};
		};
function scrollForward(cropBoxId, contentBoxId, speed) {
		var cropWidth = Element.getWidth(cropBoxId);
		var contentWidth = Element.getWidth(contentBoxId);
		var maxScroll = -(contentWidth - cropWidth);
    	var xPos = parseFloat(Element.getStyle(contentBoxId, 'left')  || 0);
    	var moveTo = maxScroll - xPos;
		var contentBox =  $(contentBoxId);
		speed = Math.abs(moveTo / speed)
		if (xPos>maxScroll) {
			new Effect.Move (contentBox,{ x: moveTo, y: 0, mode: 'relative', duration: speed, queue: {position: 'front', scope: 'objectscroll', limit: 1}, transition: Effect.Transitions.linear});
			};
		};

function stopScroll() {
		var queue = Effect.Queues.get('objectscroll');
		queue.each(function(e) { e.cancel() });
		};

function Scroll(element, type, qname) {
	var ImagesBox = $(element);
	var position = Element.getXpos(ImagesBox);
	var length = SetImagesBoxSize(ImagesBox);
	var NbrOfNodes = ImagesBox.childNodes.length;
	var amount = 0;
	var windowSize= document.viewport.getWidth()
	alert(windowSize)
	for (i=0;i<NbrOfNodes;i++) {
		if (ImagesBox.childNodes[i].nodeName == 'IMG') {
			amount =  Element.getWidth(ImagesBox.childNodes[i]);
			break;
		}  ;
	};

    switch(type){
		case 'left':
			//Check to see if scroll will end up past first image
			if (-position >=  amount) {
				amount = amount;
			}
			if (-position >= length-windowSize){
				amount = (2*amount-(length+position));
			}
			else {
				amount = -position;
			}
			break;
		case 'right':
			//Check to see if scroll will end up farther then last image
			if (length+position >= windowSize+amount) {
				amount = -amount;
			}
			else{
				amount = -((length+position)-windowSize);
			}
			break;
		};
	new Effect.Move(ImagesBox, { x: amount, y: 0, mode: 'relative', duration: 0.6, transition: Effect.Transitions.sinoidal, queue: {position: 'end', scope: qname, limit: 1}})

};



/*--------------------------------------------------------------------------*/

