var Portfolio = new Class({
	Implements: Options,
    options: {
        time:5000,
		selector:'content',
		url:''
    },
    initialize: function(options) {
        this.setOptions(options);
		var bind = this;
		this.wrapper = new Element('div',{
			id:'portfolio'
		}).inject($(this.options.selector));
		this.load(this.options.url);
		this.list = new Element('div',{
			id:'list'
		}).inject(this.wrapper,'after').fade(0.9);
    },
	load: function(url) {
		var bind = this;
		new Request({
			url: url,
			onRequest: function() {
				
			},
			onComplete: function(response) {
				bind.list.empty();
				var els = Elements.from(response);
			    els.each(function(el){
					if(el.get('tag')=='ul') el.inject(bind.list);
				});
				if(bind.list.getElement('ul')) {
					bind.proccess();
				}
			}
		}).send();
	},
	proccess: function() {
		var bind = this;
		this.list.getElements('li').each(function(el,index){
			if(index<limit) {
				var link = el.getElement('a');
				var image = new Asset.image(
					link.get('href'), 
					{
						id: 'image',
						title: link.get('title'),
						onload: function(){
							//alert('x');
						}
					}
				);
			}
		});
	},
	zoomIn: function(img) {
		
	},
	zoomOut: function(img) {
		
	},
	slide: function(target) {
		
	}
});

var clickThumb = function (e)
{
	
}

var basename = function (string) {
	return string.substr(string.lastIndexOf('/'));
}

var load = function(url) {
	var title = document.getElementsByTagName('title').item(0).innerHTML;
	var req = new Request({
					url:url,
					onRequest:function(){
						$('content').fade(0);
					},
					onComplete:function(response){
						$('content').set('html',response);
						document.title = title;
						if ($('zoom') && $('thumbs')) {
							new Element('div', {
								'class': 'fade-left'
							}).inject($('thumbs'), 'after');
							new Element('div', {
								'class': 'fade-right'
							}).inject($('thumbs'), 'after');
							$('thumbs').getElements('li').fade('hide');
							$('thumbs').getElements('li')[0].fade(1).setStyle('margin-left', '280px').store('o', 1);
							$('thumbs').getElements('li')[1].fade(0.7).store('o', 0.7);
							$('thumbs').getElements('li')[2].fade(0.5).store('o', 0.5);
							$('thumbs').getElements('li')[3].fade(0.3).store('o', 0.3);
							$('thumbs').getElement('a').addClass('active');
							$('zoom').addClass('loading');
							if ($('zoom').getElement('img')) 
								$('zoom').getElement('img').fade(0);
							
							$('thumbs').getElements('a').each(function(ele, index){
								ele.addEvent('mouseover', function(e){
									if (ele.getParent().retrieve('o') > 0) 
										ele.getParent().fade(1);
								});
								ele.addEvent('mouseleave', function(e){
									ele.getParent().fade(parseFloat(ele.getParent().retrieve('o')));
								});
								ele.addEvent('click', function(e){
									if (e) {
										var e = new Event(e);
										e.preventDefault();
									}
									$$('.loadingImage').fade(1).removeClass('loadingImage');
									var fx = new Fx.Scroll($('thumbs'), {
										transition: Fx.Transitions.Quint.easeInOut,
										link: 'chain'
									});
									$$('#thumbs a.active').removeClass('active');
									ele.getParent().fade(1).store('o', 1);
									if (ele.getParent().getPrevious()) {
										ele.getParent().getPrevious().fade(0.7).store('o', 0.7);
										if (ele.getParent().getPrevious().getPrevious()) {
											ele.getParent().getPrevious().getPrevious().fade(0.5).store('o', 0.5);
											if (ele.getParent().getPrevious().getPrevious().getPrevious()) {
												ele.getParent().getPrevious().getPrevious().getPrevious().fade(0.3).store('o', 0.3);
												ele.getParent().getPrevious().getPrevious().getPrevious().getAllPrevious().fade(0).store('o', 0);
											}
										}
									}
									if (ele.getParent().getNext()) {
										ele.getParent().getNext().fade(0.7).store('o', 0.7);
										if (ele.getParent().getNext().getNext()) {
											ele.getParent().getNext().getNext().fade(0.5).store('o', 0.5);
											if (ele.getParent().getNext().getNext().getNext()) {
												ele.getParent().getNext().getNext().getNext().fade(0.3).store('o', 0.3);
												ele.getParent().getNext().getNext().getNext().getAllNext().fade(0).store('o', 0);
											}
										}
									}
									ele.addClass('active');
									$('zoom').addClass('loading');
									if ($('zoom').getElement('img')) 
										$('zoom').getElement('img').fade(0);
									ele.getElement('img').fade(0.3).addClass('loadingImage');
									if (!$('zoom').getElement('img')
										|| !$('zoom').getElement('img').get('src').match(ele.getElement('img').get('src').replace('.min.', '.'))) {
										new Asset.image(ele.getElement('img').get('src').replace('.min.', '.'), {
											onload: function(){
												$('zoom').empty().removeClass('loading').fade('hide').fade(1);
												this.inject($('zoom')).erase('height').erase('width');
												fixSize();
												ele.getElement('img').removeClass('loadingImage').fade(1);
												this.addEvent('click', function(e) {
													nextImage(this);
												});
											}
										});
									}
									(function(){
										if (ele.getElement('img').hasClass('loadingImage')) {
											$('zoom').empty().removeClass('loading').fade('hide').set('html', '<img src="' + ele.get('href') + '" alt="Marta Filipczyk - Fotografia" border="0"/>');
											$('zoom').fade(1);
											ele.getElement('img').removeClass('loadingImage').fade(1);
										}
									}).delay(3000);
									/* var x = 0;
			 var t = ele.getAllPrevious();
			 t.each(function(element){
			 alert(element.getSize().x);
			 x = x + element.getSize().x + 10;
			 }); */
									fx.start(index * 140, 0);
								//alert(index*140 + ' ' + el.getPosition($('thumbs')).x + 339 + ' ' + x);
								//x = undefined;
								//else fx.start(index*140-280,0);
								});
							});
							
							// find current image
							var currentImage = null;
							var url = basename(window.location.href.toString());
							$('thumbs').getElements('a').each(function(el,index){
								if (basename(el.getElement('img').get('src').replace('.min.', '.')).match(url)) {
									currentImage = el.getElement('img').get('src').replace('.min.', '.');
									el.fireEvent('click');
								}
							});
							var myImage = new Asset.image(currentImage, {
								onload: function(){
									$('zoom').empty().removeClass('loading').fade(0).fade(1);
									this.inject($('zoom')).erase('height').erase('width');
									this.addEvent('click', function(e) {
										nextImage(this);
									});
									
									fixSize();
								}
							});
						}
						if ($('page-title')) {
							var titleElement = document.getElementsByTagName('title').item(0);
							document.title = $('page-title').innerHTML.toString();
							$('page-title').destroy();
						}
						$('content').fade(1);
					}
				}).send();
}

var nextImage = function(img)
{
	var src = img.get('src');
	var first, getNext, next, stop = null;
	$('thumbs').getElements('img').each(function(el,index){
		if (stop) {
			return;
		}
		if (0 == index) {
			first = el.getParent('a');
		}
		if (!getNext && el.get('src').replace('.min.', '.').match(src)) {
			getNext = true;
		} else if (getNext) {
			next = el.getParent('a');
			stop = true;
		}
	});
	if (next) {
		first = null;
		next.fireEvent('click');
		return;
	}
	if (first) {
		first.fireEvent('click');
	}
	first = getNext = next = stop = null;
}

var urls = [];
var loadOnReady = function() {
    var hash = '';
    var checkUrl = function() {
        var url = window.location.href.toString();
		var baseUrlRegExp = /http\:\/\/(www\.)?martafilipczyk\.pl\/index\.php/;
		var baseUrl = 'http://www.martafilipczyk.pl/index.php';
		
        if(url.indexOf('#')>-1) {
            currentHash = url.substr(url.indexOf('#') + 1,url.length);
        }
        else {
			currentHash = '';
			if (url != baseUrl && url.length > baseUrl.length) {
				currentHash = url;
			}
        }
        if(currentHash == '') {
            currentHash = ''
        }
        if(currentHash != hash && currentHash != '' && '/contact' != basename(url)) {
            hash = currentHash;
            if(hash == '') {
                hash = '';
            }
			if (!hash.match(baseUrlRegExp)) {
				hash = baseUrl + hash;
			}
			load(hash);
        }
        url = undefined;
        currentHash = undefined;
        //req = null;
    };
	checkUrl();
};

fixSize = function()
{
	var windowHeight = window.outerHeight;
	var windowInnerHeight = window.innerHeight;
	var newHeight = 0;
	var img = $('zoom').getElement('img');
	if (img) {
		if (windowInnerHeight <= 780) {
			newHeight = Math.round(windowInnerHeight * 0.6);
			if (565 > newHeight) {
				img.setStyle('height', newHeight + 'px');
				$('zoom').setStyle('height', newHeight + 'px');
			}
		} else {
			img.setStyle('height', 'auto');
			$('zoom').setStyle('height', 'auto');
		}
	}
}

window.addEvent('resize', fixSize);

window.addEvent('domready',function(){
	loadOnReady();
	$$('#menu li').each(function(el){
		var fx = new Fx.Morph(el,{link:'cancel'});
		if (el.getParent().getElement('ul')) {
			el.getParent().getElement('ul').fade('hide');
		}
		el.setStyles({
			'background-color':'#fff',
			'color':'#000',
			'border-color':"#000"
		});
		el.addEvents({
			'mouseover':function(e){
				el.addClass('hover');
				fx.start({
					'background-color':'#c3c4be',
					'color':'#444',
					'border-color':'#ccc'
				});
				if (el.getElement('ul')) {
					el.getElement('ul').fade(0.98);
					el.addClass('active');
				}
			},
			'mouseleave':function(e){
				if (!el.hasClass('active')) {
					fx.start({
						'background-color':'#fff',
						'color':'#000',
						'border-color':"#000"
					});
				}
				(function(){
					if(el.getElement('ul')) {
						if(!el.getElement('ul').getElement('li.hover')) {
							el.getElement('ul').fade(0);
							fx.start({
								'background-color':'#fff',
								'color':'#000',
								'border-color':"#000"
							});
						}
					}
				}).delay(200);
				el.removeClass('hover');
			}
		})
	});
	$$('#menu li a').each(function(el){
		if (el.getParent('li').get('id') == 'blog') {
			return;
		}
		el.store('href',el.get('href'));
		var baseUrl = /http\:\/\/(www\.)?martafilipczyk\.pl\/index\.php/;
		el.set('href','#' + el.retrieve('href').replace(baseUrl, ''));
		if(el.getParent('li').getElement('ul')) {
			el.addEvent('click',function(e){
				var e = new Event(e);
				e.preventDefault();
			});
		}
		else {
			el.addEvent('click',function(e){
				load(el.retrieve('href'));
			});
		}
	});
	if ($('zoom') && $('slideshow')) {
		var images = new Array();
		$('slideshow').getElements('a').each(function(ele, index){
			ele.addEvent('fire', function(e){
				$$('.loadingImage').fade(1).removeClass('loadingImage');
				$('zoom').setStyle('cursor', 'default');
				$('zoom').addClass('loading');
				if ($('zoom').getElement('img')) 
					$('zoom').getElement('img').fade(0);
				ele.getElement('img').addClass('loadingImage');
				new Asset.image(ele.getElement('img').get('src'), {
					onload: function(){
						$('zoom').empty().removeClass('loading').fade('hide').fade(1);
						this.inject($('zoom')).erase('height').erase('width');
						ele.getElement('img').removeClass('loadingImage');
						fixSize();
					}
				});
				(function(){
					if (ele.getElement('img') && ele.getElement('img').hasClass('loadingImage')) {
						$('zoom').empty().removeClass('loading').fade('hide').set('html', '<img src="' + ele.getElement('img').get('src').replace('.min.', '.') + '" alt="Marta Filipczyk - Fotografia" border="0"/>');
						$('zoom').fade(1);
						ele.getElement('img').removeClass('loadingImage').fade(1);
					}
				}).delay(3000);
				(function(){
					if ($('slideshow')) {
						if (ele.getParent('li').getNext('li')) 
							ele.getParent('li').getNext().getElement('a').fireEvent('fire');
						else 
							ele.getParent('ul').getElement('a').fireEvent('fire');
					}
				}).delay(4000);
			});
		});
		$('slideshow').getElement('a').fireEvent('fire');
		// Now load the images in the background.
		$('slideshow').getElements('a').each(function(ele, index){
			var tmp = new Image();
			tmp.src = ele.getElement('img').get('src');
			images.push(tmp);
		});
	}
	if(Browser.Engine.webkit) {
		//document.body.setStyle('font','font: normal 15px "Palatino Linotype", "Book Antiqua", "Palatino", Georgia, Times, Garamond, "Calluna", serif;');
	}
	/* new Portfolio({
		url:'galeria1.html'
	}); */
});
