//INDICATE CURRENT CATEGORY SOMEWHERE?

function $get(key,url){  
    if(arguments.length < 2) url =location.href;  
    if(arguments.length > 0 && key != ""){  
        if(key == "#"){  
            var regex = new RegExp("[#]([^$]*)");  
        } else if(key == "?"){  
            var regex = new RegExp("[?]([^#$]*)");  
        } else {  
            var regex = new RegExp("[?&]"+key+"=([^&#]*)");  
        }  
        var results = regex.exec(url);  
        return (results == null )? "" : results[1];  
    } else {  
        url = url.split("?");  
        var results = {};  
            if(url.length > 1){  
                url = url[1].split("#");  
                if(url.length > 1) results["hash"] = url[1];  
                url[0].split("&").each(function(item,index){  
                    item = item.split("=");  
                    results[item[0]] = item[1];  
                });  
            }  
        return results;  
    }  
}

function refresh_random_bibles() {
	try {
		random_bibles_container = case_container.getElement('#random_bibles');
		random_bibles_container.getElements('a').each(function(element) {
			element.addEvent('click', function(e) {
				new Event(e).stop()
				change_content_from_string($get("#",this.href));
			});
		});
	} catch(err) {}
	try {
		content_container.getElements('.case_text_page a[href^=http://2krogh.dk/bibles/#]').each(function(element) {
			element.addEvent('click', function(e) {
				new Event(e).stop()
				change_content_from_string($get("#",this.href));
			});
		});
	} catch(err) {}
}

function refresh_photo() {
	try {
		window.case_photo_container = case_container.getElement('.case_photos')
		case_photo_container.getElements('a').each(function(element) {
			element.addEvent('click', function(e) {
				new Event(e).stop()
				if(this.hasClass('prev') == true) {
					change_photo('down',this.href.split(/#img_/)[1],case_id);
				} else {
					change_photo('up',this.href.split(/#img_/)[1],case_id);
				}
			});
		});

		var req = new Request({ 
			url: '/bibles/wp-content/themes/default/photos_preload.php', 
			method: 'get', 
			onSuccess: function(response) {
				new Asset.images(response.split(/,/));
			}
		}).get({'post': case_id});
		
		try {
			case_photo_container.getElements('a').each(function(element) {
				element.link_morph = new Fx.Morph(element.getFirst('span'), {link:'chain',duration:'short'});
				element.link_morph_hover = new Fx.Morph(element.getFirst('span'), {link:'cancel',duration:'short'});
				/*element.link_morph.start({
					'opacity': 0.5
				});
				element.link_morph.start({
					'opacity': 0
				});*/
				
				element.link_morph_hover.set({
					'opacity': 0
				});
				
				element.addEvent('mouseenter', function(e) {
					new Event(e).stop()
					element.link_morph_hover.start({
						'opacity': 0.5
					});
				});
				
				element.addEvent('mouseleave', function(e) {
					new Event(e).stop()
					element.link_morph_hover.start({
						'opacity': 0
					});
				});
			});
			
			
		} catch(err) {}
	} catch(err) {}
}

function set_window_title(hash,title) {
	window.location.hash=hash;
	if(title != 0) {
		document.title='2Krogh Bibles » '+title;
	} else {
		document.title='2Krogh Bibles';
	}
}

function change_case_content(transition,selected_case) {
	get = new Array("case="+selected_case+"&cat="+current_category);
	
	var content_morph = new Fx.Morph(content_container, {transition:Fx.Transitions.Quad.easeInOut,link:'chain'});
	
	var body_tween = new Fx.Tween($(document.body));
	var wrapper_tween = new Fx.Tween(wrapper);
	
	var req = new Request.HTML({ 
		url: '/bibles/wp-content/themes/default/case.php', 
		method: 'get', 
		update: case_container,
		data: get.join('&'),
		onComplete: function() {
			if(transition == 'drop') {
				$(document.body).setStyle('overflow-y','scroll');
				content_morph.set({
					'margin-top': 0
				});
				content_morph.start({
				    'opacity': 1
				});
				body_tween.start('border-color','#EBEBEB');
				wrapper_tween.start('border-color','#AA0000');
			} else if(transition == 'left') {
				content_morph.start({
				    'margin-left': [window.getSize().x,0],
				    'opacity': 1
				});
				body_tween.start('border-color','#EBEBEB');
				wrapper_tween.start('border-color','#AA0000');
			} else {
				content_morph.start({
				    'margin-left': [-window.getSize().x,0],
				    'opacity': 1
				});
				body_tween.start('border-color','#EBEBEB');
				wrapper_tween.start('border-color','#AA0000');
			}
			
			if(selected_case != '0') {
				case_title = case_container.getElement('.case_header h2').get('text');
				case_permalink = case_container.getElement('.case_header h2').get('title');
				set_window_title('/'+case_permalink,case_title);
			} else {
				//GET THE CATEGORY REAL NAME FOR TITLE!
				set_window_title('/category/'+current_category,current_category);
			}
			
			window.case_header_container = case_container.getElement('.case_header');
			window.case_id = case_header_container.get('id').split(/case_/)[1];

			case_header_container.getElements('a').each(function(element) {
				element.addEvent('click', function(e) {
					new Event(e).stop()
					if(this.getParent().hasClass('left_arrow') == true) {
						change_case_content('right',this.href.split(/#case_/)[1]);
					} else {
						change_case_content('left',this.href.split(/#case_/)[1]);
					}
				});
			});
			refresh_random_bibles()
			refresh_photo();
		}
	});
	
	if(transition == 'drop') {
		$(document.body).setStyle('overflow-y','hidden');
		content_morph.start({
			'margin-top': window.getSize().y,
			'opacity': 0
		}).chain(function() { req.get(); });
		body_tween.start('border-color','#000');
		wrapper_tween.start('border-color','#000');
	} else if(transition == 'left') {
		content_morph.start({
		    'margin-left': -window.getSize().x,
		    'opacity': 0
		}).chain(function() { req.get(); });
		body_tween.start('border-color','#000');
		wrapper_tween.start('border-color','#000');
	} else {
		content_morph.start({
		    'margin-left': window.getSize().x,
		    'opacity': 0
		}).chain(function() { req.get(); });
		body_tween.start('border-color','#000');
		wrapper_tween.start('border-color','#000');
	}
	
}

function change_photo(transition,selected_photo,post) {
	get = new Array("photo="+selected_photo+"&post="+post);
	
	var case_photo_morph = new Fx.Morph(case_photo_container);
	
	var req = new Request.HTML({ 
		url: '/bibles/wp-content/themes/default/photo.php', 
		method: 'get', 
		update: case_photo_container,
		data: get.join('&'),
		onComplete: function() {
			if(transition == 'up') {
				case_photo_morph.start({
				    //'margin-left': [window.getSize().x,0],
				    'opacity': 1
				});
			} else {
				case_photo_morph.start({
				    //'margin-left': [-window.getSize().x,0],
				    'opacity': 1
				});
			}
			refresh_photo();
		}
	});
	
	if(transition == 'up') {
		case_photo_morph.start({
		    //'margin-left': -window.getSize().x,
		    'opacity': 0
		}).chain(function() { req.get(); });
	} else {
		case_photo_morph.start({
		    //'margin-left': window.getSize().x,
		    'opacity': 0
		}).chain(function() { req.get(); });
	}
	
}

function change_content_from_string(string) {
	if(string != '') {
		if(string.charAt(0) == "/") {
			string = string.substr(1);
		}
		if(string.split(/\//)[0] == 'category') {
			if(string.split(/\//)[1] == 'all') {
				window.current_category = 'all';
			} else {
				window.current_category = string.split(/\//)[1];
			}
			change_case_content('drop',0);
		} else {
			window.current_category = 'all';
			var req = new Request({ 
				url: '/bibles/wp-content/themes/default/get_case_id.php', 
				method: 'get', 
				onSuccess: function(response) {
					if(response != '') {
						change_case_content('drop',response);
					}
				}
			}).get({'p': string.split(/\//)[0]});
		}
	}
}

function get_parameters() {
	var case_permalink = '';
	case_permalink = $get("#");
	change_content_from_string(case_permalink);
}

window.addEvent('domready', function() {
	window.wrapper = $(document.body).getElement('#wrapper');
	window.content_container = wrapper.getElement('#content');
	window.case_container = wrapper.getElement('#case');
	window.current_category = 'all';
	refresh_random_bibles()
	refresh_photo();
	get_parameters();
	
	content_container.getElement('#logo a').addEvent('click', function(e) {
		new Event(e).stop()
		change_content_from_string($get("#",this.href));
	});
	
	wrapper.getElements('#menu a').each(function(element) {
		element.addEvent('click', function(e) {
			new Event(e).stop()
			change_content_from_string($get("#",this.href));
		});
	});
	
	wrapper.getElements('#title a').each(function(element) {
		element.addEvent('click', function(e) {
			new Event(e).stop()
			change_content_from_string($get("#",this.href));
		});
	});
	
	
	wrapper.getElements('ul#menu li ul a').each(function(element) {
		element.addEvent('mouseenter', function(e) {
			element.link_morph = new Fx.Morph(element, {link:'chain',duration:'short'});
			element.link_morph.start({
	    		'color': '#AA0000'
			});
		});
		
		element.addEvent('mouseleave', function(e) {
			if(element.getParent().getParent().getParent().get('tag') == 'li') {
				element.link_morph.start({
		    		'color': '#999'
				});
			} else {
				element.link_morph.start({
		    		'color': '#000'
				});
			}
		});
	});
	
	wrapper.getElements('#menu>li').each(function(element) {
		element.addEvent('mouseenter', function(e) {
			new Event(e).stop()
			element.submenu_morph = new Fx.Morph(element.getElement('ul'), {link:'chain',duration:'short'});
			element.link_morph = new Fx.Morph(element.getFirst('a'), {link:'chain',duration:'short'});
			try {
				element.submenu_morph.set({
				    'opacity': 0,
					'display': 'block'
				});
				element.submenu_morph.start({
				    'opacity': 1
				});
			} catch(err) {}
			element.link_morph.start({
	    		'color': '#AA0000'
			});
		});
		
		element.addEvent('mouseleave', function(e) {
			new Event(e).stop()
			try {
				element.submenu_morph.start({
				    'opacity': 0
				});
				element.submenu_morph.start({
					'display': 'none'
				})
			} catch(err) {}
			element.link_morph.start({
	    		'color': '#000'
			});
		});
	});
});