/* General site-wide functions */
function show(id) {
	if ($(id).style.display == 'none') {
		new Effect.BlindDown(id, {duration: 0.2});
	}
	return false;
}
function hide(id) {
	if ($(id).style.display != 'none') {
		new Effect.BlindUp(id, {duration: 0.2});
	}
	return false;
}
function showHide(id, display_style, hide_style) {
	// Set defaults
	if (display_style == null) display_style = 'block';
	if (hide_style == null) display_style = 'none';
	
	var x = $(id);
	if (x == null) return;
	if (x.style.display != display_style) {
		hide(id);
	} else {
		show(id);
	}
	return false;
}
function setDropdownTo(dropdown, text) {
	if (dropdown == null) return;
	for (var i=0; i < dropdown.options.length; i++) {
		if (dropdown.options[i].value == text || dropdown.options[i].text == text) {
			dropdown.selectedIndex = i;
			return;
		}
	}
}
function dropdownText(dropdown) {
	if (dropdown == null) return '';
	if (dropdown.selectedIndex < 0) return '';
	return dropdown.options[dropdown.selectedIndex].text;
}
function setDropdownOptions(dropdown, opts) {
	while (dropdown.options.length > 0) dropdown.remove(0);
	for(var i=0; i < opts.length; i++) {
		var x = document.createElement('option');
		x.text = opts[i];
		try {
			dropdown.add(x, null); //standard
		} catch (e) {
			dropdown.add(x); //for IE
		}
	}
}
function getRadioChoice(radioName) {
	var x = document.getElementsByName(radioName);
	for (var i=0; i < x.length; i++) {
		if (x[i].checked) return x[i].value;
	}
	return '';
}
function in_array(needle, array) {
	for (var i=0; i < array.length; i++) {
		if (array[i] == needle) return i;
	}
	return -1;
}

/* For /projects/view/ */
function openEditor(e, id, allow_delete, lock) {
	if (allow_delete == null) allow_delete = true;
	if (lock == null) lock = false;
	
	if (id.substr(0,4) == 'new_') {
		$('detail_id').value = id;
		$('detail_name').value = '';
		$('detail_value').value = '';
		$('detail_delete').style.display = 'none';
		$('detail_name').readOnly = lock;
		
		$('editor_background').style.display = 'block';
		new Effect.Opacity('editor_background', {from:0.0, to:0.8, duration:0.25});
		setTimeout("$('detail_editor_form').style.display='block'", 250);
	} else {
		new Ajax.Request('/details/ajax_get/'+ id+ '?unique='+ new Date().getTime(), {
			method: 'get',
			onSuccess: function(transport) {
				if (transport.responseText.indexOf("\t") == -1) {
					alert('Unable to load value');
					return;
				}
				var values = transport.responseText.split("\t", 3);
				$('detail_id').value = values[0];
				$('detail_name').value = values[1];
				$('detail_value').value = values[2];
				$('detail_delete').style.display = (allow_delete)? 'inline': 'none';
				$('detail_delete').href = '/details/delete/'+ id;
				$('detail_name').readOnly = lock;
				$('editor_background').style.display = 'block';
				new Effect.Opacity('editor_background', {from:0.0, to:0.8, duration:0.25});
				setTimeout("$('detail_editor_form').style.display='block'", 250);		
			},
			onFailure: function() {
				alert('Unable to edit this field right now. Please try again.');
			}
		});
	}
	$('detail_editor_form').style.top = document.viewport.getScrollOffsets()[1] + 100+ 'px';
}
function closeDetailEditor() {
	$('detail_editor_form').style.display='none';
	new Effect.Opacity('editor_background', {from:0.8, to:0.0, duration:0.25});
	setTimeout("$('editor_background').style.display = 'none'", 250);
}

var page_refresh_timer = 1000000;
var page_refresh_interval;
function addPageTimer(refreshTime) {
	if (refreshTime == null) { refreshTime = 10 * 60; /* 10 minute default */ }
	page_refresh_timer = refreshTime;
	var d = document.createElement('div');
	d.id = 'page_refresh_remaining';
	$('header').appendChild(d);
	var inputs = new Array(), x, i;
	x = $('wrapper').getElementsByTagName('input');
	for(i=0; i < x.length; i++) { inputs.push(x[i]); }
	x = $('wrapper').getElementsByTagName('textarea');
	for(i=0; i < x.length; i++) { inputs.push(x[i]); }
	for(i=0; i < inputs.length; i++) {
		if (inputs[i].onkeyup != null) {
			var fn = inputs[i].onkeyup;
			inputs[i].onkeyup = function() {
				page_refresh_timer = refreshTime;
				fn();
			}
		} else {
			inputs[i].onkeyup = function() {
				page_refresh_timer = refreshTime;
			}
		}
	}
	page_refresh_interval = setInterval('page_refresh_ticker()', 1000);
}
function removePageTimer() {
	clearInterval(page_refresh_interval);
	var x = $('page_refresh_remaining');
	x.parentNode.removeChild(x);
}
function page_refresh_ticker() {
	if (page_refresh_timer <= 0) {
		window.location.reload();
		page_refresh_timer = 600;
	} else {
		page_refresh_timer--;
		var m = Math.floor(page_refresh_timer / 60);
		var s = page_refresh_timer % 60;
		if (s < 10) s = '0'+ s;
		$('page_refresh_remaining').innerHTML = 'Auto-refresh in '+ m+ ':'+ s;
		//$('page_refresh_remaining').innerHTML += '<br />'+ '<a href="#" onclick="removePageTimer(); return false;">cancel</a>';
	}
}