/**
 * e338.com specific javascript
 * all by Devin Smith (www.devin-smith.com)
 */

var e338 = {
	init: function() {
		if ($('portfolioimage') && (hash = e338.getImagehash())) {
			e338.gotoImageHash();
		} else if($('portfolioimage')) {
		
			foundIt = false;
			$$('.smallimg').each(function(el) {	
				if (!foundIt && el.hasClass('selected')) {
					e338.imageIterator.currentImg = parseInt(el.get('id').replace(/[a-z_]+/i, ''));
					foundIt = true;
				}
				e338.imageIterator.lastImg = parseInt(el.get('id').replace(/[a-z_]+/i, ''));
			});
		
			var hotkeys = new Keyboard({
				defaultEventType: 'keyup', 
				events: { 
					'left': e338.imageIterator.previousImage,
					'right': e338.imageIterator.nextImage
				}
			});
		}
		if ($('portfolioimage')) {
			e338.hashChecker.periodical(50);
		}
	},
	
	hashChecker: function()  {
		if (e338.imageIterator.currentHash && e338.getImagehash() != e338.imageIterator.currentHash) {
			if (e338.imageIterator.hashChecks < 2) {
				e338.imageIterator.hashChecks++;
			} else if (e338.imageIterator.hashChecks >= 2 && !e338.imageIterator.changing) {
				var image = e338.getImagehash().split('/');
				if (image.length && image[1]) {
					e338.changeImage(image[0],image[1],image[2]);
				} else {
					location.href = location.href;
				}
				e338.imageIterator.hashChecks = 0;
			}
			
		}
	},

	changeImage: function(image, title, jsid) {
		e338.imageIterator.changing = true;
		e338.imageIterator.currentHash = image + '/' + title + '/' + jsid;
		location.href = '#' + image + '/' + title + '/' + jsid;
		document.title = title + ' - e338';
		e338.imageIterator.currentImg = parseInt(jsid);
		
		$('ajaxLoader').setStyle('display','');
		var request = new Request({
			url: '/portfolio/imageframe',
			onComplete: function(response) {
				$('imageframe').set('html',response);	
				$('ajaxLoader').setStyle('display','none');
				
				$$('.smallimg').each(function(el) {
					if (el.hasClass('img_'+image)) {
						el.addClass('selected');
					} else {
						el.removeClass('selected');
					}
				});
				
				e338.imageIterator.changing = false;
				Mediabox.scanPage();
			}
		}).get({
			id: image
		});
		return false;
	},
	
	imageIterator: {
		currentImg: 0,
		lastImg: 0,
		currentHash: false,
		hashChecks: 0,
		changing: false,
		nextImage: function() {
			next = ((e338.imageIterator.currentImg+1) <= e338.imageIterator.lastImg) ? (e338.imageIterator.currentImg+1) : 0;
			e338.changeImage($('img_' + next).get('rel'),$('img_' + next).get('alt'), next);
		},
		previousImage: function() {
			previous = ((e338.imageIterator.currentImg-1) >= 0) ? (e338.imageIterator.currentImg-1) : e338.imageIterator.lastImg;
			e338.changeImage($('img_' + previous).get('rel'),$('img_' + previous).get('alt'), previous);
		}
	},
	
	getImagehash: function() {
		var href = top.location.href;
		var pos = href.indexOf('#') + 1;
		return (pos) ? href.substr(pos) : '';
	},
	
	gotoImageHash: function() {
		var href = top.location.href;
		var pos = href.indexOf('#');
		var uri = new URI(href.substr(0,pos));
		//console.log( href.substr(pos+1));
		var url = uri.get('scheme') + '://' + uri.get('host') + '/portfolio/' + href.substr(pos+1);
		location.href = url;
	},
	
	launchMailto: function() {
		var request = new Request.JSON({
			url: '/contact/mailto',
			onComplete: function(response) {
				e = e338.decodeMailto(response.chars);
				if (e) {
					location.href = 'mailto:' + e;
				}
			}
		}).get();
	},
	decodeMailto: function(email) {
		var e = '';
		try {
			for (var x = 0; x < email.length; x++) {
				e += Base64.decode(email[x].toString());
			}
		} catch (er) { }
		return e;
	}
	
	
}

window.addEvent('domready', function(){
	e338.init();
});
