var search_request;
var loading = {};
var reviews = {};

window.addEvent("domready", function( ) {

	$$('.site').each(function(el) {
		new SlideGroup({
			'elements': el.getElements(".side-info")
		});
	});


	var form = $$('form.list_filter').pop();

	form.getElements('div.legend').each(function(leg, i) {
		var l = new Element("a", {
			'href': '#',
			'html': leg.get("html")
		});
		l.setStyle("visibility", "visible");
		leg.empty( );
		l.inject(leg);
	});
	
	/*form.addEvent("submit", function(ev) {
		updateSearch(this);
		new Event(ev).stop( );
	});*/
	
	var submit = form.getElement("input[type=submit]");
	if(submit) submit.dispose();

	var pp = new PrettyPanels({
		'panels': $$('fieldset'), 'triggers': $$('div.legend'), 'container': form,
		'initialPanel': 0, 'mode':'horizontal', 'squeeze': 0.001, 'showMorphs': [
			{'background-color': '#ffffff', 'opacity': 1},
			{'background-color': '#ffffff', 'opacity': 1},
			{'background-color': '#ffffff', 'opacity': 1},
			{'background-color': '#ffffff', 'opacity': 1}
		], 'hideMorph': {'opacity': 0.8, 'background-color': '#faf3f3'}
	});

	submit.inject(form.getParent(), "after");
	submit.addEvent("click", function(ev) { 
		//updateSearch(form);
		form.submit();
		new Event(ev).stop( );
	});

	$$('.site .more a').addEvent("click", function(ev) {
		new Event(ev).stop( );
		loadReview(this);
	});
	
});

function showReview(obj, js) {
	var review = obj.getParent( ).getPrevious("div.review");
	//var full;
	if(full = review.getElement("div.full")) full.dispose( );
	full = new Element("div", {
		"class": "full",
		"opacity": 0,
		"position": "absolute",
		"html": js.output
	});
	//$$('body').adopt(full);
	//review.getParent("div.summary").setStyle("overflow", "hidden");
	//var size = full.getSize( );
	//full.dispose( );
	//review.tween('height', (review.getSize( ).y + size.y) * 1.5);
	//full.setStyle('position', '');
	review.adopt(full);
	full.tween('opacity', 1);	
	/*(function ( ) {
		review.setStyle("height", "auto"); review.getParent("div.summary").setStyle("overflow", "");
	}).delay(500);*/
}

function hideReview(obj, parent) {
	var f = parent.getElement("div.full");
	if(f) {
	    f.tween('opacity', 0);
		(function ( ) {f.dispose( )}).delay(600);
	}
	//obj.set('html', 'View Full Review &raquo;');
}

function loadReview(obj) {
    console.log(obj);
	var link = obj.getParent(".more").getElement("input.ReadURL");
	var url = link.get('value');

	if(loading[url]) {
		if(loading[url].cancel) loading[url].cancel();
		obj.tween('opacity', 1);
		var p;
		if((p = obj.getParent( ).getPrevious("div.review"))) {
			hideReview(obj, p);
			loading[url] = null;
		}		
		return;
	} 

	obj.tween('opacity', 0);
	if(reviews[url]) {
		obj.tween('opacity', 1);
		loading[url] = true;
		showReview(obj, reviews[url]);	
		//obj.set('html', "&laquo; Return To Summary");
		return;
	}

	loading[url] = new Request.JSON({
		'onFailure': function( ) {
			obj.set('html', "Sorry, we couldn't load the review. Please Try Again &raquo;");
		},
		'onComplete': function( ) {
			obj.tween('opacity', 1);
		},
		'onSuccess': function(js) {
			reviews[url] = js;
			//obj.set('html', "&laquo; Return To Summary");
			showReview(obj, js);
		}
	}).get(url);	
}

function updateSearch(form) {
	if(search_request) search_request.cancel();
	
	search_request = new Request.JSON({
		'onComplete': function(obj, txt) { responseToHtml(obj.payload); }
	}).get(review_url);
}

function responseToHtml(obj) {
	var list = JSON.decode(obj.list);
	if(!list) throw Error("Cannot decode list object");

	list.each(function(el) {
		try {
			siteObjToHtml(el);
		} catch(ex) {
		
		}
	});
}

function siteObjToHtml(o) {
	var siteObj = new Element(
		"div", {
			"class": "site",
			"id": "site-"+o.fields.slug
		}
	);
	
	/*var basicObj = new Element("div", {"class": "basic"});
	var basedObj = new Element("div", {"class": "based-in "+*/
	
	console.log(siteObj);
}
