/**
 * @author Peter Mosmans
 * @copyright Go Forward
 * @company Go Forward
 * @url http://www.go-forward.nl
 * @version 1.4
 **/

 var imageShown = 0;
 var dropAction = false;
 
function showPopUp(isEnabled)	{
	if (isEnabled)	{
		window.open("/data/popup.htm","popup","menubar=0,resizable=0,width=400,height=300"); 
	}
}
 
function rotateImages(activeImage)	{
	var rotator = getElementsByTagAndClassName('IMG','rotate');
	if (imageShown != activeImage)	{
		fade(rotator[imageShown].id,{afterFinish: function()	{
			appear(rotator[activeImage].id);
		}});
	}	else	{
		appear(rotator[activeImage].id);
	}
	nextImage = activeImage+1;
	if(nextImage==rotator.length){ 
		nextImage = 0;
	};
	imageShown = activeImage;
	fade(rotator[activeImage].id,{'delay': 5, afterFinish: function()	{
		if (imageShown == activeImage)	{
			rotateImages(nextImage);	
		}
	}});
}	

function shuffleTiles() {
	var screenSize = getViewportDimensions();
	var offsetLeft = Math.max(((screenSize.w-1000)/2),0);
	var offsetTop = Math.max(((screenSize.h-750)/2),0);
	var tile = getElementsByTagAndClassName('IMG','shuffle');
	var counter = 0;
	var shuffledArray = getShuffledArray(tile.length);
	forEach(tile,function(elem)	{
		var currentPosition = getElementPosition(elem);
		var newPosition = new Object()
		newPosition.x = ((shuffledArray[counter]%5)*200)+offsetLeft;
		newPosition.y = ((Math.floor(shuffledArray[counter]/5))*150)+offsetTop;
		setElementPosition(elem, newPosition);
		showElement(elem);
		counter++;
	});
	shuffleTile();
}

function getShuffledArray(arrayLength) {
	var shuffledArray = new Array();
	for (var i=0;i<arrayLength;i++)	{
		shuffledArray[i]=i;
	}
	while (--arrayLength) {
		var j = Math.floor(Math.random()*(arrayLength+1));
		var tempi = shuffledArray[arrayLength];
		var tempj = shuffledArray[j];
		shuffledArray[arrayLength] = tempj;
		shuffledArray[j] = tempi;
	}
	return shuffledArray;
}

function shuffleTile()	{
	if (!dropAction)	{
		var tile = getElementsByTagAndClassName('IMG','shuffle');
		var fromTile = Math.floor(Math.random()*(tile.length));
		var toTile = Math.floor(Math.random()*tile.length);
		var fromPosition = getElementPosition(tile[fromTile].id);
		var toPosition = getElementPosition(tile[toTile].id);
		if (fromTile!=toTile) {
			setStyle(tile[fromTile].id, {'z-index': 2});
			Move(tile[fromTile].id, {'x':(toPosition.x-fromPosition.x), 'y': (toPosition.y-fromPosition.y), 'delay': 1.5, afterFinish: function () {
				if (!dropAction)	{
					Move(tile[toTile].id, {'x':(fromPosition.x-toPosition.x), 'y': (fromPosition.y-toPosition.y), 'delay': 1.5, afterFinish: function () {
						setStyle(tile[fromTile].id, {'z-index': 1});
						shuffleTile();
					}});
				}
			}});		
		} else { shuffleTile() }
	}
}

function lightOn(strElement)	{
	setStyle(strElement, {'background-image': 'url(/images/lamp-aan.gif)'});	
}

function lightOff(strElement)	{
	var j = Math.floor(Math.random()*6);
	setStyle(strElement, {'background-image': 'url(/images/lamp' + j + '.gif)'});
}

function randomizeLights()	{
	var menulink = getElementsByTagAndClassName('A','menulink');
	forEach(menulink,function(elem)	{
		var j = Math.floor(Math.random()*6);
		setStyle(elem, {'background-image': 'url(/images/lamp' + j + '.gif)'});
	});
}

function removeLinks()	{
	var d = getElementsByTagAndClassName('A');
	forEach(d,function(thisElement) {
		if (thisElement.id!='language')
			thisElement.href="#";
	});
}

/** Navigate functions **/

function openMenu()	{
	var screenSize = getViewportDimensions();
	var menulink = getElementsByTagAndClassName('A','menulink');
	var paddingX = 10;
	var relativeX = Math.floor((screenSize.w-50)/menulink.length);
	if (relativeX<100)	{
		relativeX = 100;
	}
	var relativeY = Math.floor((screenSize.h / 2));
	if (relativeY<200)	{
		relativeY = 200;
	}
	var offsetY = Math.floor(relativeY/4);
	var step = (menulink.length-1);
	log(screenSize.w + ", " + screenSize.h);
	log(relativeX + " en y " + relativeY);
	log(" en y " + offsetY);
	forEach(menulink,function(elem)	{
		var elementPosition = getElementPosition(elem);
		setElementPosition(elem, {x:0, y:screenSize.h-75});
		Move(elem, {x: paddingX+relativeX*step, y: -(offsetY + Math.floor(relativeY * (Math.sin((180-(180/menulink.length)*step)*Math.PI/180))))},{'delay':(1/menulink.length)*step});
		log(step + " op (x,y) " + relativeX*step + "," + (offsetY + Math.floor(relativeY * (1-Math.sin((180-(180/menulink.length)*step)*Math.PI/180)))));
		step--;
	});
}

function getVisualReference(numberElements)	{
	var minX = 600;
	var minY = 800;
	var paddingX = 25;
	var screenSize = getViewportDimensions();
	if (screenSize.h<minX)	{
		screenSize.h = minX;
	}
	if (screenSize.w<minY)	{
		screenSize.w = minY;
	}
	screenSize.x = Math.floor((screenSize.w-paddingX)/numberElements);
	screenSize.paddingX = paddingX;
	if (screenSize.x<100)	{
		screenSize.x = 100;
	}
	return screenSize;
}

function navigationMenu()	{
	var menulink = getElementsByTagAndClassName('A','menulink');
	var screenSize = getVisualReference(menulink.length);
	var step = 0;
	forEach(menulink,function(thisElement)	{
		setElementPosition(thisElement, {x: (screenSize.paddingX + screenSize.x*step)});
		var j = Math.floor(Math.random()*6);
		setStyle(thisElement, {'background-image': 'url(/images/lamp' + j + '.gif)'});
		step++;
		if((document.location.href.indexOf(thisElement.id))>0)	{
			// Morph(thisElement, {"style": {"font-size": "20px"}});
//			setStyle(thisElement,{"font-size": "20px"});
		}
	});
}

function goTo(strCaller, strUrl)	{
	var screenSize = getViewportDimensions();
	var otherElements = new Array();
	var menulink = getElementsByTagAndClassName('A','menulink');
	forEach(menulink,function(thisElement)	{
		var elementPosition = getElementPosition(thisElement);
		if (thisElement.id!=strCaller) {
			Morph(thisElement, {"style": {"height": "1px"}});
		}	else	{
			Morph(thisElement, {"style": {"font-size": "20px"},'delay':2, afterFinish: function () {
				document.location.href=strUrl;
			}});
		}
	});
}

function dropTiles(strCaller, strUrl)	{
	dropAction = true;
	setStyle(strCaller, {'cursor':'progress'});
	var screenSize = getViewportDimensions();
	var mosaicElements = new Array();
	var tiles = getElementsByTagAndClassName('IMG','tile');
	var firstElement = true;
	forEach(tiles,function(thisElement)	{
		var elementPosition = getElementPosition(thisElement);
		if (elementPosition.x != null)	{
			Move(thisElement, {x: -elementPosition.x, y: -elementPosition.y+screenSize.h-75});
			if (firstElement)	{ 
				firstElement = false;
				fade(thisElement,{'delay':2, afterFinish: function () {
				document.location.href=strUrl;
				}});
			}	else	{
				fade(thisElement,{'delay':0.1, afterFinish: function () {
				}});
			}
		}
	});
}

function toggleTab(thisTab, thisImage)	{
	var tabs = getElementsByTagAndClassName('DIV','tab');
	forEach(tabs,function(thisElement)	{
		if (thisElement.id!=thisTab)	{ 
			hideElement(thisElement);
		}	else	{
			showElement(thisTab);
		}
	});
	if (thisImage > 0)	{
		rotateImages(thisImage);
	}
	if (thisImage == -99)	{
		showGoogleMap();
	}
}

function preloadImage(strUrl)	{
	var dummyImage = new Image();
	dummyImage.src = strUrl;
}
	
function soundShowGo(strCaller, strUrl)	{
	setStyle(strCaller, {'cursor':'progress'});
	$('sound').innerHTML="<embed src='/data/sounds/remmen.mp3' height=0 width=0 hidden=true autostart=true loop=false>";
	grow($('deur'), {'delay':2, afterFinish: function () {
		callLater(3, function() 	{
			document.location.href=strUrl;
		});
	}});
}

function backgroundPlay(strSound)	{
	$('sound').innerHTML="<embed src='/data/sounds/" + strSound + ".mp3' height=0 width=0 hidden=true autostart=true loop=3 type=audio/mpeg>";
}

function showGoogleMap()	{
	var map = null;
	var geocoder = null;
	if (GBrowserIsCompatible()) {
		map = new GMap2($("map"));
		map.addControl(new GSmallMapControl());
		geocoder = new GClientGeocoder();
		if (geocoder) {
			geocoder.getLatLng(
				'Ruysdaelstraat 54-56, Amsterdam, Nederland',
				function(point) {
					if (point) {
						map.setCenter(point, 13);
						var marker = new GMarker(point);
						map.addOverlay(marker);
						marker.openInfoWindowHtml('<img src="/images/deur.gif" class="mapimage" alt="Restaurant Le Garage " /><b>Le Garage &amp; En Pluche</b><br />&nbsp;<br />Ruysdaelstraat 54-56<br />Amsterdam');
    	        	}
    	     	}
    	    );
		}
	}
}

