
var errorMsg = null;
var search_default = null;
window.addEvent('domready', function()
{
	search_default = $('search_field').value;
	tips = new Tips('.mootooltip',{className:'tip-container',fixed:false,offsets:{'x':70,'y':25}});
	setup_error_msg();
	setup_post_links();
	setup_article_search_box($('search_field'));
	setup_ajax_post_links();
	setup_ajax_delete_links();
	
	$$('form.submitOnce').each(function(form)
	{
		form.addEvent('submit',function()
		{
			form.getElements(".clickOnce").each(function(button)
			{
				button.set('disabled',true);
				button.set('enabled',false);
			});
		});
	});
		
	$$(".eLink").each(
		function(tag){
			var dec = decrypt(tag.get('html'));
			var mt = decrypt(': o t l i a m');
			tag.innerHTML = "<a href='"+mt+dec+"'>"+dec+"</a>";
			tag.removeClass('eLink');
		}
	);

	$$('.highlight').each(function(item){
		item.set('tween', {duration: 'long'});
		item.highlight();
	});
	$$('.auto_scroll').each(function(auto_scroll){
		setup_auto_scroll(auto_scroll);
	});
});

function setup_article_search_box(search_field)
{
	search_field.addEvent('click', function()
	{
		if (search_default == this.get('value'))
		{
			this.set('value','');
		}
	});
	search_field.addEvent('blur', function()
	{
		if (this.get('value') == '')
		this.set('value',search_default);
	});
}

function setup_post_links(links)
{
	if (links == null)
	{
		links = $$('a.post_link');
	}
	links.each(function(link)
	{
		link.addEvent('click',function()
		{
			href = link.href;
			if (link.hasClass('confirm'))
			{
				var msg = link.get('title');
				if (msg != null && msg != '')
				{
					link.store('confirmation_message',msg);
					link.set('title',null);
				}
				if (!confirm(link.retrieve('confirmation_message')))
					return false;
			}
			link.href = "javascript:void(0);"
			send_post(href);
			return false;
		});
	});
}

function setup_error_msg()
{
	errorMsg = new Fx.Slide('errorBox',{'link':'cancel'}).hide();
}

function show_error(msg)
{
	errorMsg.element.setStyle('display','block');
	errorMsg.element.getElement('.message').addClass('hidden');
	errorMsg.element.getElement('.defaultMessage').removeClass('hidden');
	if (msg != null && msg != "")
	{
		errorMsg.element.getElement('.message').set('text',msg).removeClass('hidden');
		errorMsg.element.getElement('.defaultMessage').addClass('hidden');
	}
	errorMsg.slideIn();
}
function hide_error()
{
	if (errorMsg.open)
	{
		errorMsg.element.getElement('.message').addClass('hidden');
		errorMsg.element.getElement('.defaultMessage').removeClass('hidden');
		errorMsg.slideOut();
	}
}

function show_busy(id)
{
	id.morph({opacity:0.9});
}
function hide_busy(id)
{
	id.morph({opacity:0});
}

var auto_scroll_absolute_position = new Hash();
var auto_scroll_relative_position = new Hash();
function setup_auto_scroll(box)
{
	auto_scroll_absolute_position[box.id] = get_real_position(box);
	auto_scroll_relative_position[box.id] = box.getCoordinates(box.getParent());
	
	window.addEvent('scroll', function(){
		var window_height = window.getHeight();
		var box_height = box.getHeight();
		var newTop = 0;
		
		if (window_height > box_height)
		{
			var relative_start_top = auto_scroll_relative_position[box.id].top;
			var absolute_start_top = auto_scroll_absolute_position[box.id].top;
			var scroll_top = window.getScrollTop();

			if (scroll_top > absolute_start_top)
				newTop = scroll_top - absolute_start_top + (window_height/2 - box_height/2);
			else
				newTop = 0;
		}
		box.tween('top',newTop + "px");
	});
}

function confirmation_check(element)
{
	if (element.hasClass('confirm'))
	{
		var msg = element.get('title');
		if (msg != null && msg != '')
		{
			element.store('confirmation_message',msg);
			element.set('title',null);
		}
		return confirm(element.retrieve('confirmation_message'))
	}
	return true;
}

function setup_ajax_delete_links(css_selector)
{
	if (css_selector == null)
		css_selector = 'a.ajax_delete_link';
	setup_ajax_post_links(css_selector, "DELETE");
}
function setup_ajax_post_links(css_selector, method)
{
	if (method == null)
		method = "POST";
	else
		method = method.toUpperCase();
	if (css_selector == null)
		css_selector = 'a.ajax_post_link';

	$$(css_selector).each(function(link)
	{
		link.addEvent('click',function()
		{
			if (confirmation_check(link))
			{
				link.getParent().addClass('busy');
				new Request.HTML({
					url: link.href,
					evalScripts: true,
					method: method
				}).send();
			}
			return false;
		});
	});
}

function console_log()
{
	if ($('_firebugConsole'))
		console.log(arguments);
}

function decrypt(cryp)
{
	var dec = '';
	var cryp_list = cryp.split(' ');
	for (var i = cryp_list.length-1; i >= 0; i--)
	{
		if (cryp_list[i] == "$")
			dec += unescape("&#64");
		else if (cryp_list[i] == "#")
			dec += unescape(".");
		else
			dec += cryp_list[i];
	}
	
	return dec;
}


function updateRequirement(checkbox, textfield)
{
	if (checkbox.get('checked') == false)
		textfield.removeClass("required").addClass('optional');
	else
		textfield.removeClass('optional').addClass("required");
}

function generate_selectbox(boroughs, selected_section_id, target)
{
	target.empty();
	var count = 0;
	var selectFirst = true;
	target[0] = new Option('', '', false, false);
	boroughs.each(
		function(item)
		{
			var select = false;
			if (selected_section_id == item['id'])
			{
				select = true;
				selectFirst = false;
			}
			target[target.options.length] = new Option(item['name'], item['id'], false, select);
			count += 1;
		}
	);
	if (count > 0)
		target[0] = new Option('--', '', false, selectFirst);

}

function get(url, target)
{
	new Request.HTML({url:url,update:target,onSuccess:function(){Behaviour.apply()}}).get(); //XXX
}

function update_field(url, field)
{
	new Request({url:url,onSuccess:function(req){field.value = req}}).get(); //XXX
}

function send_post(url)
{
	var inputElem = new Element('form', {
		'method': 'post',
		'action': url,
		'id':'temp_form'
	});
	inputElem.inject($(document.body),'after');
	$('temp_form').submit();
}

function get_real_position(obj)
{
	var curleft = curtop = 0;

	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return {'left':curleft,'top':curtop};
}

function set_current_page(button_id)
{
	if ($(button_id))
	{
		$(button_id).addClass('selected');
	}
}

function background_post(url)
{
	new Request({"url":url}).post();
	return false;
}

var CountdownClass = new Class(
{
	initialize: function(element, seconds, doneFunction)
	{
		this.element = element;
		this.seconds_remaining = seconds;
		this.timer = null;
		this.doneFunction = doneFunction;
		this.update();
	},
	start: function()
	{
		this.timer = this.update.periodical(1000, this);
	},
	update: function()
	{
		if (this.seconds_remaining > 0)
		{
			this.seconds_remaining -= 1;
		}
		else
		{
			if (this.doneFunction != null)
				this.doneFunction();
			$clear(this.timer);
		}
		var hrs = (this.seconds_remaining/60/60).toInt();
		var min = ((this.seconds_remaining/60)%60).toInt();
		var sec = this.seconds_remaining%60;
		// min = (min < 10)?'0'+min:min;
		sec = (sec < 10)?'0'+sec:sec;
		if (hrs > 0)
			this.element.set('text',hrs+':'+min+':'+sec);
		else
			this.element.set('text',min+':'+sec);
	}
});

