/* -------- HELPER FUNCTIONS -------- */

function ListAppend(l,v) {
	if ( l.blank() )  return v;
	var _a = l.split(",");
	_a.push(v);
	return _a.join(",");
}
function ListRemove(l,v) {
	if ( l == v )  return "";
	return l.split(",").without(v).join(",");
}

function openWindow( url, winName, width, height, left, top, scrollbars, resizable, location, toolbar, menubar, status )
{
	//alert( $A(arguments).inspect() );
	var opts = new Array();
	if ( width )  opts.push( "width=" + width );
	if ( height )  opts.push( "height=" + height );
	if ( left )  opts.push( "left=" + left );
	if ( top )  opts.push( "top=" + top );
	
	opts.push( "scrollbars=" + ( scrollbars ? "yes" : "no" ) );
	opts.push( "resizable=" + ( resizable ? "yes" : "no" ) );
	opts.push( "location=" + ( location ? "yes" : "no" ) );
	opts.push( "toolbar=" + ( toolbar ? "yes" : "no" ) );
	opts.push( "status=" + ( status ? "yes" : "no" ) );
	opts.push( "menubar=" + ( menubar ? "yes" : "no" ) );
	
	w = window.open( url, winName, opts.join(", ") );
	w.focus();
	
	return w;
}
function focusWindow( winName ) {
	w = window.open( "", winName );
	w.focus();
}

function reloadWindow() { window.location.href = window.location.href; }
function reloadOpener() { window.opener.location.href = window.opener.location.href; }


/* -------- DATE FORMAT PROTOTYPE -------- */

var gsMonthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];
var gsDayNames = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
Date.prototype.format = function(mask) {
	if (!this.valueOf())  return "";
	var d = this;
	return mask.replace( /(yyyy|yy|mmmm|mmm|mm|dddd|ddd|dd|hh|HH|nn|ss|tt|t|TT|T)/g,
		function(token) {
			switch ( token ) {
				case 'yyyy': return d.getFullYear();
				case 'yy':   return d.getFullYear().toString().substr(2, 2);
				case 'mmmm': return gsMonthNames[d.getMonth()];
				case 'mmm':  return gsMonthNames[d.getMonth()].substr(0, 3);
				case 'mm':   return (d.getMonth() + 1).toPaddedString(2);
				case 'dddd': return gsDayNames[d.getDay()];
				case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
				case 'dd':   return d.getDate().toPaddedString(2);
				case 'hh':   return ((h = d.getHours() % 12) ? h : 12).toPaddedString(2);
				case 'HH':   return d.getHours().toPaddedString(2);
				case 'nn':   return d.getMinutes().toPaddedString(2);
				case 'ss':   return d.getSeconds().toPaddedString(2);
				case 'tt':   return d.getHours() < 12 ? 'am' : 'pm';
				case 't':    return d.getHours() < 12 ? 'a' : 'p';
				case 'TT':   return d.getHours() < 12 ? 'AM' : 'PM';
				case 'T':    return d.getHours() < 12 ? 'A' : 'P';
			}
		}
	);
}


/* -------- CUSTOM METHODS -------- */

Form.Methods.getSelectedValue = function( form, name ) {
	form = $(form);
	var inputs = form.getInputs( "checkbox", name );
	if ( inputs.size() == 0 )
		inputs = form.getInputs( "radio", name );
	
	var selInput = inputs.find( function(el) { return el.checked; });
	if ( selInput )  return selInput.value;
}
Element.addMethods();  // methodize() and add to forms


/* -------- COOKIES -------- */

function createCookie( name, value, days )
{
	if ( days ) {
		var date = new Date();
		date.setTime( date.getTime() + (days*24*60*60*1000) );
		var expires = "; expires=" + date.toGMTString();
	}
	else
		var expires = "";
	
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split( /\s*;\s*/ );
	for ( var i = 0; i < ca.length; i++ ) {
		var c = ca[i];
		if ( c.indexOf(nameEQ) == 0 )
			return c.substring( nameEQ.length, c.length );
	}
	return null;
}

function eraseCookie(name)
{
	createCookie( name, "", -1 );
}
