/* Home Page Cover Flow Ajax Elements */

	function do_submitSuggest_cb(z) {
		var suggestCommunity = document.getElementById('suggestCommunity');
		var suggestEmail = document.getElementById('suggestEmail');
		var suggestError = document.getElementById('suggestError');
		var suggestLoader = document.getElementById('suggestLoader');
		var suggestSend = document.getElementById('suggestSend');
		suggestCommunity.value = "";
		suggestEmail.value = "";
		suggestLoader.style.display = "none";
		suggestSend.disabled = false;
		suggestError.innerHTML = "Thanks!";
	}
	
	function do_submitInvite_cb(z) {
		var inviteName = document.getElementById('inviteName');
		var inviteEmail = document.getElementById('inviteEmail');
		var inviteError = document.getElementById('inviteError');
		var inviteLoader = document.getElementById('inviteLoader');
		var inviteSend = document.getElementById('inviteSend');
		inviteName.value = "";
		inviteEmail.value = "";
		inviteLoader.style.display = "none";
		inviteSend.disabled = false;
		inviteError.innerHTML = "Invitation sent!";
	}
	
	function do_submitSubscribe_cb(z) {
		var subscribeName = document.getElementById('subscribeName');
		var subscribeEmail = document.getElementById('subscribeEmail');
		var subscribeError = document.getElementById('subscribeError');
		var subscribeLoader = document.getElementById('subscribeLoader');
		var subscribeSend = document.getElementById('subscribeSend');
		subscribeName.value = "";
		subscribeEmail.value = "";
		subscribeLoader.style.display = "none";
		subscribeSend.disabled = false;
		subscribeError.innerHTML = "You've been added!";
	}
	
	function do_submitSuggest() {
		var suggestCommunity = document.getElementById('suggestCommunity');
		var suggestEmail = document.getElementById('suggestEmail');
		var suggestError = document.getElementById('suggestError');
		var suggestLoader = document.getElementById('suggestLoader');
		var suggestSend = document.getElementById('suggestSend');
		if(suggestCommunity.value == '' || suggestEmail.value == '') {
			suggestError.innerHTML = "Please fill out all fields!";
		}
		else {
			suggestError.innerHTML = "";
			suggestLoader.style.display = "inline";
			suggestSend.disabled = true;
			x_ajaxSubmitSuggest(suggestCommunity.value, suggestEmail.value, do_submitSuggest_cb);
		}
	}
	
	function do_submitInvite() {
		var inviteName = document.getElementById('inviteName');
		var inviteEmail = document.getElementById('inviteEmail');
		var inviteError = document.getElementById('inviteError');
		var inviteLoader = document.getElementById('inviteLoader');
		var inviteSend = document.getElementById('inviteSend');
		if(inviteName.value == '' || inviteEmail.value == '') {
			inviteError.innerHTML = "Please fill out all fields!";
		}
		else {
			inviteError.innerHTML = "";
			inviteLoader.style.display = "inline";
			inviteSend.disabled = true;
			x_ajaxSubmitInvite(inviteName.value, inviteEmail.value, do_submitInvite_cb);
		}
	}
	
	function do_submitSubscribe() {
		var subscribeName = document.getElementById('subscribeName');
		var subscribeEmail = document.getElementById('subscribeEmail');
		var subscribeError = document.getElementById('subscribeError');
		var subscribeLoader = document.getElementById('subscribeLoader');
		var subscribeSend = document.getElementById('subscribeSend');
		if(subscribeName.value == '' || subscribeEmail.value == '') {
			subscribeError.innerHTML = "Please fill out all fields!";
		}
		else {
			subscribeError.innerHTML = "";
			subscribeLoader.style.display = "inline";
			subscribeSend.disabled = true;
			x_ajaxSubmitSubscribe(subscribeName.value, subscribeEmail.value, do_submitSubscribe_cb);
		}
	}
	
	function do_changeFilter_cb(z) {
		document.getElementById('covers').innerHTML = z;
		
		current = 150;
		
		var start_cover_index = get_center_cover();
		var glide_offset = start_cover_index * -150;
		var glide_cover = 'i' + (start_cover_index + 1);

		glideTo(glide_offset, glide_cover);

		var captionTarget = document.getElementById("captionTarget");
		var caption = document.getElementById(glide_cover);
		captionTarget.innerHTML = caption.innerHTML;
		captionId = glide_cover;
	}
	
	function do_changeClass_cb(z) {
		document.getElementById('filter_select').innerHTML = z;
		do_changeFilter();
	}
	
	function do_changeFilter() {
		var classValue = document.getElementById('class').value;
		var filterValue = document.getElementById('filter').value;
		x_ajaxChangeFilter(classValue, filterValue, do_changeFilter_cb);
	}
	
	function do_changeClass() {
		var classValue = document.getElementById('class').value;
		x_ajaxChangeClass(classValue, do_changeClass_cb);
	}
/* End */

/* Ajax Dynamic Gen */
		// remote scripting library
		// (c) copyright 2005 modernmethod, inc
		var sajax_debug_mode = false;
		var sajax_request_type = "GET";
		var sajax_target_id = "";
		var sajax_failure_redirect = "";
		
		function sajax_debug(text) {
			if (sajax_debug_mode)
				alert(text);
		}
		
 		function sajax_init_object() {
 			sajax_debug("sajax_init_object() called..")
 			
 			var A;
 			
 			var msxmlhttp = new Array(
				'Msxml2.XMLHTTP.5.0',
				'Msxml2.XMLHTTP.4.0',
				'Msxml2.XMLHTTP.3.0',
				'Msxml2.XMLHTTP',
				'Microsoft.XMLHTTP');
			for (var i = 0; i < msxmlhttp.length; i++) {
				try {
					A = new ActiveXObject(msxmlhttp[i]);
				} catch (e) {
					A = null;
				}
			}
 			
			if(!A && typeof XMLHttpRequest != "undefined")
				A = new XMLHttpRequest();
			if (!A)
				sajax_debug("Could not create connection object.");
			return A;
		}
		
		var sajax_requests = new Array();
		
		function sajax_cancel() {
			for (var i = 0; i < sajax_requests.length; i++) 
				sajax_requests[i].abort();
		}
		
		function sajax_do_call(func_name, args) {
			var i, x, n;
			var uri;
			var post_data;
			var target_id;
			
			sajax_debug("in sajax_do_call().." + sajax_request_type + "/" + sajax_target_id);
			target_id = sajax_target_id;
			if (typeof(sajax_request_type) == "undefined" || sajax_request_type == "") 
				sajax_request_type = "GET";
			
			uri = "/";
			if (sajax_request_type == "GET") {
			
				if (uri.indexOf("?") == -1) 
					uri += "?rs=" + escape(func_name);
				else
					uri += "&rs=" + escape(func_name);
				uri += "&rst=" + escape(sajax_target_id);
				uri += "&rsrnd=" + new Date().getTime();
				
				for (i = 0; i < args.length-1; i++) 
					uri += "&rsargs[]=" + escape(args[i]);

				post_data = null;
			} 
			else if (sajax_request_type == "POST") {
				post_data = "rs=" + escape(func_name);
				post_data += "&rst=" + escape(sajax_target_id);
				post_data += "&rsrnd=" + new Date().getTime();
				
				for (i = 0; i < args.length-1; i++) 
					post_data = post_data + "&rsargs[]=" + escape(args[i]);
			}
			else {
				alert("Illegal request type: " + sajax_request_type);
			}
			
			x = sajax_init_object();
			if (x == null) {
				if (sajax_failure_redirect != "") {
					location.href = sajax_failure_redirect;
					return false;
				} else {
					sajax_debug("NULL sajax object for user agent:\n" + navigator.userAgent);
					return false;
				}
			} else {
				x.open(sajax_request_type, uri, true);
				// window.open(uri);
				
				sajax_requests[sajax_requests.length] = x;
				
				if (sajax_request_type == "POST") {
					x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
					x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				}
			
				x.onreadystatechange = function() {
					if (x.readyState != 4) 
						return;

					sajax_debug("received " + x.responseText);
				
					var status;
					var data;
					var txt = x.responseText.replace(/^\s*|\s*$/g,"");
					status = txt.charAt(0);
					data = txt.substring(2);

					if (status == "") {
						// let's just assume this is a pre-response bailout and let it slide for now
					} else if (status == "-") 
						alert("Error: " + data);
					else {
						if (target_id != "") 
							document.getElementById(target_id).innerHTML = eval(data);
						else {
							try {
								var callback;
								var extra_data = false;
								if (typeof args[args.length-1] == "object") {
									callback = args[args.length-1].callback;
									extra_data = args[args.length-1].extra_data;
								} else {
									callback = args[args.length-1];
								}
								callback(eval(data), extra_data);
							} catch (e) {
								sajax_debug("Caught error " + e + ": Could not eval " + data );
							}
						}
					}
				}
			}
			
			sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
			x.send(post_data);
			sajax_debug(func_name + " waiting..");
			delete x;
			return true;
		}
		
				
		// wrapper for ajaxChangeClass		
		function x_ajaxChangeClass() {
			sajax_do_call("ajaxChangeClass",
				x_ajaxChangeClass.arguments);
		}
		
				
		// wrapper for ajaxChangeFilter		
		function x_ajaxChangeFilter() {
			sajax_do_call("ajaxChangeFilter",
				x_ajaxChangeFilter.arguments);
		}
		
		// wrapper for ajaxSubmitSuggest		
		function x_ajaxSubmitSuggest() {
			sajax_do_call("ajaxSubmitSuggest",
				x_ajaxSubmitSuggest.arguments);
		}
		
				
		// wrapper for ajaxSubmitInvite		
		function x_ajaxSubmitInvite() {
			sajax_do_call("ajaxSubmitInvite",
				x_ajaxSubmitInvite.arguments);
		}
		
				
		// wrapper for ajaxSubmitSubscribe		
		function x_ajaxSubmitSubscribe() {
			sajax_do_call("ajaxSubmitSubscribe",
				x_ajaxSubmitSubscribe.arguments);
		}


/* End */

function count_covers() {
	var cover_count = 0;			
	var div = document.getElementById("covers");
	for (index = 0; index < div.childNodes.length; index++) {
		if (div.childNodes.item(index).className == "glider") {
			cover_count += 1;
		}
	}
	return cover_count;
}

function get_center_cover() {
	var start_cover_index = 0;
	var cover_count = count_covers();
	switch(cover_count) {
		case 1:
			return 0;
		case 2:
			return 0;
		case 3:
			return 1;
		default:
			return Math.round((cover_count / 2)) - 1;
	}
}

function step()
{
	if (target < current-1 || target > current+1)
	{
		moveTo(current + (target-current)/5);
		window.setTimeout(step, 50);
		timer = 1;
	}
	else
	{
		timer = 0;
	}
}

function glideTo(x, newCaptionId)
{
	target = x;
	if (timer == 0)
	{
		window.setTimeout(step, 50);
		timer = 1;
	}

	captionId = newCaptionId;
	var captionTarget = document.getElementById("captionTarget");
	var caption = document.getElementById(captionId);
	captionTarget.innerHTML = caption.innerHTML;
}

function moveTo(x)
{
	current = x;
	var div = document.getElementById("covers");
	var top = div.offsetTop;
	var width = 900;
	var size = width * 0.5;
	var biggest = width * 0.7;
	var zIndex = div.childNodes.length;
	for (index = 0; index < div.childNodes.length; index++)
	{
		var image = div.childNodes.item(index);
		if (image.className == "glider")
		{
			var z = Math.sqrt(10000 + x * x) + 200;
			var xs = x / z * size + size;
			image.style.left = xs - 38 / z * biggest;
			image.style.top = (-75 / z * size + top) + 130;
			image.style.width = 100 / z * biggest;
			//image.style.height = 110.25 / z * biggest;
			image.style.height = 100 / z * biggest;
			image.style.zIndex = zIndex;
			if ( x < 0 )
				zIndex++;
			else
				zIndex--;
			x += 150;
		}
	}
}

function refresh()
{
	var width = windowWidth;
	var height = width * 0.3;
	var images = document.getElementById("covers");
	images.style.height = height;
	
	var captionTarget = document.getElementById("captionTarget");
	captionTarget.style.top = images.offsetTop + height;
	//captionTarget.style.height = height * 0.4;
	captionTarget.style.zIndex = 100;

	var caption = document.getElementById(captionId);
	captionTarget.innerHTML = caption.innerHTML;

	moveTo(current);
}