//DrewMenu 0.9.3 -- created exclusively for BrainForest Digital by Drew H. Matamales
//Copyright 2010 Drew H. Matamales.  All Rights Reserved.  Do not use any of this code (or any of the elements on the website) without permission.  
//This needs both Prototype and Scriptaculous in order to run.


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
		|| this.searchVersion(navigator.appVersion)
		|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
				return data[i].identity;
			}
			else if (dataProp)
			return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
	{
		string: navigator.userAgent,
		subString: "Chrome",
		identity: "Chrome"
	},
	{ 	string: navigator.userAgent,
		subString: "OmniWeb",
		versionSearch: "OmniWeb/",
		identity: "OmniWeb"
	},
	{
		string: navigator.vendor,
		subString: "Apple",
		identity: "Safari",
		versionSearch: "Version"
	},
	{
		prop: window.opera,
		identity: "Opera"
	},
	{
		string: navigator.vendor,
		subString: "iCab",
		identity: "iCab"
	},
	{
		string: navigator.vendor,
		subString: "KDE",
		identity: "Konqueror"
	},
	{
		string: navigator.userAgent,
		subString: "Firefox",
		identity: "Firefox"
	},
	{
		string: navigator.vendor,
		subString: "Camino",
		identity: "Camino"
	},
	{		// for newer Netscapes (6+)
		string: navigator.userAgent,
		subString: "Netscape",
		identity: "Netscape"
	},
	{
		string: navigator.userAgent,
		subString: "MSIE",
		identity: "Explorer",
		versionSearch: "MSIE"
	},
	{
		string: navigator.userAgent,
		subString: "Gecko",
		identity: "Mozilla",
		versionSearch: "rv"
	},
	{ 		// for older Netscapes (4-)
		string: navigator.userAgent,
		subString: "Mozilla",
		identity: "Netscape",
		versionSearch: "Mozilla"
	}
	],
	dataOS : [
	{
		string: navigator.platform,
		subString: "Win",
		identity: "Windows"
	},
	{
		string: navigator.platform,
		subString: "Mac",
		identity: "Mac"
	},
	{
		string: navigator.userAgent,
		subString: "iPhone",
		identity: "iPhone/iPod"
	},
	{
		string: navigator.platform,
		subString: "Linux",
		identity: "Linux"
	}
	]

};
BrowserDetect.init();

var PageEffects = {
	itemFadeEffect:function(item){
		this.item = item;
		Event.observe(window, 'load', function() {
			Effect.Appear( item );
		});


		Event.observe(window, 'beforeunload', function() {
			Effect.Fade( item, {duration: 0.3});
		})
	}
}


var MenuFunctions = {


	menuClick:function(menuName){

		this.menuName = menuName;

		//Effect.Pulsate( menuName , { pulses:1, duration: 1} );
		Effect.Pulsate( menuName , { pulses: 3, duration: 2, fps: 100, from: 0.4 });


		$( menuName ).morph('color:#090;');

	},



	openSubmenu:function(menuName) {

		//this.closeAllMenus();



		new Effect.Opacity( 'mainMenu', {from: 1.0, to: 0.6, duration: 0.5, fps:100 });

		new Effect.Move( 'mainMenu', {fps:100, duration:0.6, x: startPosition.mainMenuX , y: startPosition.mainMenuY - 4, mode: 'absolute', transition: Effect.Transitions.linear });

		this.menuName = menuName;

		Effect.Appear(  menuName +'Sub', { duration: 0.7 });

		new Effect.Move( menuName + 'Sub', { duration:2, fps:100, x: startPosition.subMenuX , y: startPosition.subMenuY + 10, mode: 'absolute', transition: Effect.Transitions.spring });

		//new Effect.Move( menuName + 'Sub', { x: startPosition.subMenuX , y: startPosition.subMenuY + 20, mode: 'absolute', transition: Effect.Transitions.sinoidal ,  queue: 'end'});

		$( menuName ).morph('color:#090;');




	},



	closeSubmenu:function(menuName){

		this.menuName = menuName;



		//Effect.Opacity( menuName + 'Sub', {from: 1.0, to: 0.0, duration: 1.0 });

		new Effect.Move( 'mainMenu', {fps:100, x: startPosition.mainMenuX , y: startPosition.mainMenuY, mode: 'absolute', transition: Effect.Transitions.sinoidal
	});

	new Effect.Move( menuName + 'Sub', { fps:100, x: startPosition.subMenuX, y: startPosition.subMenuY, mode: 'absolute', transition: Effect.Transitions.sinoidal
});

Effect.Fade( menuName + 'Sub', { duration: 1.0 });

$(menuName).morph('color:#ccc;');



new Effect.Opacity( 'mainMenu', {from: 0.6, to: 1.0, duration: 1.0, fps:100 });



}

};





var drewMenu = Class.create( MenuFunctions, {



	initMenu:function(menuName){

		this.menuName = menuName;

		this.isOpen = false;

	},



	setMenuVisible:function(state){

		this.isOpen = state;

	},



	getMenuVisible:function(){

		return this.isOpen;

	},



	getMenuName:function(){

		return this.menuName;

	}







})


var startPosition = {
	offsetX : 0,
	offsetY : 0,
	mainMenuX : 166,
	mainMenuY : 38, 
	subMenuX : 166,
	subMenuY : 58,
	autoMenu : false,
	menuHighlightMorph : "color:#090;"
}

var menuState = {
	isOpening : false,
	isClosing : false,
	isOpen : false,
	isClosed : true, 
	menusClosed : 0,
	currentMenuName: 'null'
}

var globalMenu = {




	closeAll:function(){


		if ( (animaticsMenu.getMenuVisible() )){

			animaticsMenu.closeSubmenu(animaticsMenu.getMenuName());

			animaticsMenu.setMenuVisible(false);

			menuState.menusClosed++;

		}


		if ( (companyMenu.getMenuVisible() )){

			companyMenu.closeSubmenu(companyMenu.getMenuName());

			companyMenu.setMenuVisible(false);

			menuState.menusClosed++;

		}

		if ( ( otherWildStuffMenu.getMenuVisible() )){

			otherWildStuffMenu.closeSubmenu(otherWildStuffMenu.getMenuName());

			otherWildStuffMenu.setMenuVisible(false);

			menuState.menusClosed++;
		}

		if ( ( showreelsMenu.getMenuVisible() )){

			showreelsMenu.closeSubmenu(showreelsMenu.getMenuName());

			showreelsMenu.setMenuVisible(false);

			menuState.menusClosed++;
		}


	},
	autoMenu:function(menuItem, submenuItem){

		//automatically opens a menu (and provides other functions) based on the URL of a page
		//auto menu opener: open a submenu, and even highlight the current page.  Not compatible with IE for some reason, and so it's disabled there.
	
		Event.observe(window, 'load', function() {

			if (BrowserDetect.browser != "Explorer"){

				globalMenu.menuClicked( menuItem );
				new Effect.Morph( submenuItem , {
					style: {
						color: '#F6BE5A'}
					});
					Effect.Pulsate( submenuItem , {pulses: 4, duration: 10, fps:100, from:0.4 });
				}
			});
			
			},




/*
//set change for items selected (i.e. color)
var morphChange = "color:#090;";



if (location.href.search(/madeinusa/) > 0 ){
this.menuClicked('company');
$( 'madeinusa' ).morph(morphChange);
}
if (location.href.search(/information/) > 0 ){
this.menuClicked('company');
$( 'information' ).morph(morphChange);
}
if (location.href.search(/minority/) > 0 ){
this.menuClicked('company');
$( 'minority' ).morph(morphChange);
}

*/




menuClicked:function(element){

	Event.stopObserving('mainMenu');



	if(element == 'animatics' ) {

		if ( ( animaticsMenu.getMenuVisible() )){


			animaticsMenu.closeSubmenu(animaticsMenu.getMenuName());

			animaticsMenu.setMenuVisible(false);

			menuState.menusClosed++;

			Event.observe.delay(1, 'mainMenu', 'click', function(event){
				var element = Event.element(event);
				//console.log(element.id);

				var theElement = element.id;
				globalMenu.menuClicked(theElement);
			});

			return 0;

		}

		globalMenu.closeAll();



		if (menuState.menusClosed > 0){

			animaticsMenu.menuClick(animaticsMenu.getMenuName());

			animaticsMenu.openSubmenu.delay( 1, animaticsMenu.getMenuName());

			animaticsMenu.setMenuVisible(true);

		}

		else{ 



			animaticsMenu.openSubmenu(animaticsMenu.getMenuName());

			animaticsMenu.setMenuVisible(true);



		}
	}
	if(element == 'showreels' ) {

		if ( ( showreelsMenu.getMenuVisible() )){


			showreelsMenu.closeSubmenu(showreelsMenu.getMenuName());

			showreelsMenu.setMenuVisible(false);

			menuState.menusClosed++;

			Event.observe.delay(1, 'mainMenu', 'click', function(event){
				var element = Event.element(event);
				//console.log(element.id);

				var theElement = element.id;
				globalMenu.menuClicked(theElement);
			});

			return 0;

		}

		globalMenu.closeAll();



		if (menuState.menusClosed > 0){

			showreelsMenu.menuClick(showreelsMenu.getMenuName());

			showreelsMenu.openSubmenu.delay( 1, showreelsMenu.getMenuName());

			showreelsMenu.setMenuVisible(true);

		}

		else{ 



			showreelsMenu.openSubmenu(showreelsMenu.getMenuName());

			showreelsMenu.setMenuVisible(true);



		}
	}
	if(element == 'company' ) {

		if ( ( companyMenu.getMenuVisible() )){


			companyMenu.closeSubmenu(companyMenu.getMenuName());

			companyMenu.setMenuVisible(false);

			menuState.menusClosed++;

			Event.observe.delay(1, 'mainMenu', 'click', function(event){
				var element = Event.element(event);
				//console.log(element.id);

				var theElement = element.id;
				globalMenu.menuClicked(theElement);
			});

			return 0;

		}

		globalMenu.closeAll();



		if (menuState.menusClosed > 0){

			companyMenu.menuClick(companyMenu.getMenuName());

			companyMenu.openSubmenu.delay( 1, companyMenu.getMenuName());

			companyMenu.setMenuVisible(true);

		}

		else{ 



			companyMenu.openSubmenu(companyMenu.getMenuName());

			companyMenu.setMenuVisible(true);



		}
	}
	if(element == 'otherWildStuff' ) {

		if ( ( otherWildStuffMenu.getMenuVisible() )){


			otherWildStuffMenu.closeSubmenu(otherWildStuffMenu.getMenuName());

			otherWildStuffMenu.setMenuVisible(false);

			menuState.menusClosed++;

			Event.observe.delay(1, 'mainMenu', 'click', function(event){
				var element = Event.element(event);
				//console.log(element.id);

				var theElement = element.id;
				globalMenu.menuClicked(theElement);
			});

			return 0;

		}

		globalMenu.closeAll();



		if (menuState.menusClosed > 0){

			otherWildStuffMenu.menuClick(otherWildStuffMenu.getMenuName());

			otherWildStuffMenu.openSubmenu.delay( 1, otherWildStuffMenu.getMenuName());

			otherWildStuffMenu.setMenuVisible(true);

		}

		else{ 



			otherWildStuffMenu.openSubmenu(otherWildStuffMenu.getMenuName());

			otherWildStuffMenu.setMenuVisible(true);



		}
	}

	/*
	if(element.id == 'artists' ) {

if ( ( artistsMenu.getMenuVisible() )){


artistsMenu.closeSubmenu(artistsMenu.getMenuName());

artistsMenu.setMenuVisible(false);

menuState.menusClosed++;

return 0;

}

globalMenu.closeAll();



if (menuState.menusClosed > 0){

artistsMenu.menuClick(artistsMenu.getMenuName());

artistsMenu.openSubmenu.delay( 1, artistsMenu.getMenuName());

artistsMenu.setMenuVisible(true);

}

else{ 



artistsMenu.openSubmenu(artistsMenu.getMenuName());

artistsMenu.setMenuVisible(true);



}
}
*/
Event.observe.delay(1, 'mainMenu', 'click', function(event){
	var element = Event.element(event);
	//console.log(element.id);

	var theElement = element.id;
	globalMenu.menuClicked(theElement);
});
}
}





var animaticsMenu = new drewMenu;

var companyMenu = new drewMenu;

var showreelsMenu = new drewMenu;

var otherWildStuffMenu = new drewMenu;

var showreelsMenu = new drewMenu;

var artistsMenu = new drewMenu;


Event.observe(window, 'load', function(){

	animaticsMenu.initMenu('animatics');

	companyMenu.initMenu('company');

	otherWildStuffMenu.initMenu('otherWildStuff');

	showreelsMenu.initMenu('showreels');


	//artistsMenu.initMenu('artists');

	Event.observe('mainMenu', 'click', function(event){
		var element = Event.element(event);
		//console.log(element.id);

		var theElement = element.id;
		globalMenu.menuClicked(theElement);

	});
});

Event.observe(window, 'beforeunload', function() {
	globalMenu.closeAll();
});











