
var blackout, overlayFade;
var path = 'http://digitalarts.bgsu.edu/portfolios/jnelson/';
var imagepath = path + 'images/'
var gallery = false;

var Site = {
	
	mydarkBlue: '#003666',
	myblue: '#1299D9',
	myorange: '#EF7310',
	mygreen: '#52B312',
	mywhite: '#FFFFFF',
	
	buildEffects: function(){
		//Setting up the blackout layer
		var windowWidth, windowHeight;
		windowWidth = window.getWidth();
		windowHeight = window.getHeight();
		
		$('blackoutLayer').setStyles({'color': '#000000', 'height': windowHeight, 'width': windowWidth});
		
		//creating the fade effects
		var blackout = new Fx.Style('blackoutLayer', 'opacity', {
			duration: 750,
			wait: false,
			transition: Fx.Transitions.Expo.easeIn
		});
		var overlayFade = new Fx.Style('overlay', 'opacity', {
			duration: 750,
			wait:false,
			transition: Fx.Transitions.Expo.easeIn
		});
		
		//adding the events to the buttons
		var showing = false;

		$$(['cont','side_cont']).each(function(element){
			$(element).addEvent('click', function(e){
				if(!showing){
					var e = new Event(e);
					blackout.start(0, .75);
					overlayFade.start(0, 1);
					e.stop();
					showing = true;
				};
			});
		});
		$('button').addEvent('click', function(e){
			if(showing){
				var e = new Event(e);
				e.stop();
				blackout.start(.75, 0);
				overlayFade.start(1, 0);
				showing = false;
			}
		});

		overlayFade.set(0);
		if(gallery) Site.activeLink('art');
		else Site.activeLink('home');
	},
	
	rollOver: function(link, colorA, colorB, colorC, colorD, fx){
		$(link).addEvents({
			'mouseenter': function(){
				fx.start({'background-color': colorC, 'color': colorD});
			},
			'mouseleave': function(){
				fx.start({'background-color': colorA, 'color': colorB});
			}
		});
		$(link).setStyles({'background-color': colorA, 'color': colorB});
	},
	
	activeLink: function(newActiveLink){
		var newAltActiveLink;
		$$('a').each(function(link) {
			var fx = new Fx.Styles($(link), {duration: 400, wait: false, transition: Fx.Transitions.Expo.easeIn});
			if($(link).hasClass('activelink')) $(link).removeClass('activelink');
			if($(link).hasClass('toptab')){
				Site.rollOver(link, Site.myorange, Site.mydarkBlue, Site.mydarkBlue, Site.myorange, fx);
			}
			if($(link).hasClass('toplink')){
				Site.rollOver(link, Site.mydarkBlue, Site.myblue, Site.myorange, Site.mydarkBlue, fx);
			}
			if($(link).hasClass('gallink')){
				Site.rollOver(link, Site.mygreen, Site.mywhite, Site.myorange, Site.mydarkBlue, fx);
			}
		});
		if(newActiveLink.contains('side_')) { newAltActiveLink=newActiveLink.substring(5);}
		else {newAltActiveLink='side_'+newActiveLink;}
		$(newActiveLink).addClass('activelink');
		if(!gallery) $(newAltActiveLink).addClass('activelink');
		$$('#header a').each(function(element) {
			if($(element).hasClass('activelink')) {
				$(element).setStyles({'background-color': Site.mydarkBlue,'color': Site.myorange});
				$(element).removeEvents('mouseenter');
				$(element).removeEvents('mouseleave');
			}
		});
		if(!gallery){
			$$('#side a').each(function(element) {
				if($(element).hasClass('activelink')) {
					$(element).setStyles({'background-color': Site.myorange,'color': Site.mydarkBlue});
					$(element).removeEvents('mouseenter');
					$(element).removeEvents('mouseleave');
				}
			});
		}
		if(gallery){
			$$('#galmenu a').each(function(element) {
				if($(element).hasClass('activelink')) {
					$(element).setStyles({'background-color': Site.myorange,'color': Site.mydarkBlue});
					$(element).removeEvents('mouseenter');
					$(element).removeEvents('mouseleave');
				}
			});
		}
	},
	
	roundCorners: function(){
		Nifty("#nav a","small transparent top");
		Nifty("ul#intro li","same-height");
		Nifty("div.date");
		Nifty("div#content,div#side","same-height transparent");
		Nifty("div#footer");
		Nifty("div#container","bottom");
		Nifty("div#sideContent h3","transparent");
		Nifty("#side_home","transparent top");
		Nifty("#side_cont","transparent bottom");
		Nifty("#mission div,#services div,#more div","transparent");
		if(gallery){
			Nifty("#galmenu","transparent");
			Nifty(".thumb","transparent")
		}
	},
	
	randomThumbs: function(){
		var ext = '_lrg_th.jpg';
		var curimg,i,num;
		var thumbs = $A([
			imagepath + '3dmodel1' + ext,
			imagepath + '3dmodel2' + ext,
			imagepath + '3dmodel3.1' + ext,
			imagepath + '3dmodel3.2' + ext,
			imagepath + '3dmodel3.3' + ext,
			imagepath + '3dmodel3.4' + ext,
			imagepath + '3dmodel3.5' + ext,
			imagepath + '3dmodel3.6' + ext,
			imagepath + 'image1' + ext,
			imagepath + 'image2' + ext,
			imagepath + 'image3' + ext,
			imagepath + 'image4' + ext,
			imagepath + 'image5' + ext]);

		for(i=0;i<3;i++){
			curimg = thumbs.getRandom();
			num=i+1;
			$('image'+num).setStyle('background-image', 'url('+curimg+')');
			thumbs.remove(curimg);
		}
	},
	
	buildTopLinks: function(){
		var toplinks = ['home','about'];
		
		toplinks.each(function(element) {
			Site.buildLink(element, false, false);
		}); //end of toplinks.each
	},
	
	buildSideLinks: function(){
		var sidelinks = ['side_home','side_about'];
		
		sidelinks.each(function(element) {
			Site.buildLink(element, true, false);
		}); //end of sidelinks.each
	},
	
	buildGalLinks: function(){
		var galLinks = ['digi2D','digi3D','TBGal','trad2D','trad3D','photo'];
		
		galLinks.each(function(element, i) {
			Site.buildLink(element, false, true, (i+1))
		});
	},
	
	buildOtherGalLinks: function(){
		var otherGalLinks = ['ill','mdl','int','drw','slp','pto'];
		var links = ['digi2D','digi3D','TBGal','trad2D','trad3D','photo'];
		
		otherGalLinks.each(function(element, i) {
			Site.buildLink(element, false, true, (i+1), links[i]);
		});
	},
	
	buildLink: function(element, sideOrNot, galLink, gal, gpage){
		if(gpage==null){gpage=element;}
		$(element).addEvent('click', function(e) {
			e = new Event(e).stop();
			if(galLink==null) galLink=false;
			var animation = new Element('div', {
				'styles': {'margin': 0},
				'class': 'loading'
			});
			
			if(sideOrNot){var url = path + element.substring(5)+'.html';}
			else {var url = path + gpage +'.html';}
			if(galLink){
				$('gallery').empty().adopt(animation);
				var ajaxEl = $('gallery');
			} else {
				$('content').empty().adopt(animation);
				var ajaxEl = $('content');
			}
			
			new Ajax(url, {
				method: 'get',
				update: ajaxEl,
				onComplete: function() {
					if((element == 'side_home') || (element == 'side_about') || (element == 'home') || (element == 'about')){Site.randomThumbs();}
					if(!gallery){
						var niftyels = $$($('side').getFirst(),$('side').getLast(),'b.niftyfill');
						niftyels.each(function(el){
							$(el).remove();
						});
						Site.roundCorners();
					}
					if(gallery){
						Site.activeLink(gpage);
						$('art').setStyles({'background-color': Site.mydarkBlue,'color': Site.myorange});
						$('art').removeEvents('mouseenter');
						$('art').removeEvents('mouseleave');
						if(gal!=null){
							switch(gal){
								case 1:
									Site.digi2DGal();
									$('display').setStyle('height', '500px');
									break;
								case 2:
									Site.digi3DGal();
									$('display').setStyle('height', '275px');
									break;
								default:
									break;
							}
						}
					} else {Site.activeLink(gpage);}
				} //end of onComplete
			}).request(); //end of AJAX object
		}); //end of addEvent
	},
	
	digi2DGal: function(){
		var ext = '_th.jpg';
		var thumbs = [
			imagepath + 'image1' + ext,
			imagepath + 'image2' + ext,
			imagepath + 'image3' + ext,
			imagepath + 'image4' + ext,
			imagepath + 'image5' + ext];
		ext='.jpg';
		var images = [
			imagepath + 'image1' + ext,
			imagepath + 'image2' + ext,
			imagepath + 'image3' + ext,
			imagepath + 'image4' + ext,
			imagepath + 'image5' + ext];
		Site.loadImages(thumbs, images);
	},
	
	digi3DGal: function(){
		var ext = '_th.jpg';
		var thumbs = [
			imagepath + '3dmodel1' + ext,
			imagepath + '3dmodel2' + ext,
			imagepath + '3dmodel3.1' + ext,
			imagepath + '3dmodel3.2' + ext,
			imagepath + '3dmodel3.3' + ext,
			imagepath + '3dmodel3.4' + ext,
			imagepath + '3dmodel3.5' + ext,
			imagepath + '3dmodel3.6' + ext];
		ext='.jpg';
		var images = [
			imagepath + '3dmodel1' + ext,
			imagepath + '3dmodel2' + ext,
			imagepath + '3dmodel3.1' + ext,
			imagepath + '3dmodel3.2' + ext,
			imagepath + '3dmodel3.3' + ext,
			imagepath + '3dmodel3.4' + ext,
			imagepath + '3dmodel3.5' + ext,
			imagepath + '3dmodel3.6' + ext];
		Site.loadImages(thumbs, images);
	},
	
	loadImages: function(thumbs, images){
		var busy = false, timer, loadedImages, loadedThumbs, gallery = $('display'), progress = $('progress'), bar = $E('#progress .bar');
		loadedThumbs = new Asset.images(thumbs, {
			onProgress: function(i) {
				var percent = ((i + 1) * progress.getStyle('width').toInt()) / (thumbs.length + images.length);
				bar.setStyle('width', percent);
			},
			onComplete: function() {
				loadedImages = new Asset.images(images, {
					onProgress: function(i) {
						percent = ((i+1+thumbs.length)*progress.getStyle('width').toInt())/(thumbs.length+images.length);
						bar.setStyle('width', percent);
						this.setStyles({
							'position': 'relative',
							'top': (gallery.getCoordinates().height / 2) - (this.height / 2)
						});
					},
					onComplete: function() {
						progress.setStyle('visibility', 'hidden');
						gallery.setHTML("<p>Click on the images below and they will display here.</p>");
						loadedThumbs.injectInside('thumbnails');
						Site.setThumbActions(loadedThumbs, loadedImages);
					}
				});
			}
		});
	},
	
	setThumbActions: function(thumbs, images){
		thumbs.each(function(thumb, i){
			thumb.addEvent('click', function(e) {
				e = new Event(e).stop();
				var image = images[i];
				$('display').empty().adopt(image);
			});
		});
	},
	
	buildSpecialLink: function(){
		$('about').addEvent('click', function(e) {
			e = new Event(e).stop();
			window.location.assign(path+'index.html?p=about');
		});
	},
	
	checkAbout: function(){
		var str = window.location.search;
		theleft = str.indexOf("=") + 1;
		if(str.substring(theleft)=="about"){
			var animation = new Element('div', {
				'styles': {'margin': 0},
				'class': 'loading'
			});
			$('content').empty().adopt(animation);
			new Ajax((path+'about.html'), {
				method: 'get',
				update: $('content'),
				onComplete: function() {
					Site.randomThumbs();
					var niftyels = $$($('side').getFirst(),$('side').getLast(),'b.niftyfill');
					niftyels.each(function(el){
						$(el).remove();
					});
					Site.activeLink('about');
					Site.roundCorners();
				}
			}).request();
		}
	},

	start: function(){
		Site.buildEffects();
		Site.buildTopLinks();
		Site.buildSideLinks();
		Site.roundCorners();
	},
	
	startGallery: function(){
		Site.buildEffects();
		Site.activeLink('art');
		Site.buildSpecialLink();
		Site.buildGalLinks();
		Site.buildOtherGalLinks();
		Site.roundCorners();
	}
};