var stwUtils = {
	image: {
		setSwapping: function(image) {
			image.onmouseover = function() { stwUtils.image.swap(image) };
			image.onmouseout = function() { stwUtils.image.swap(image) };

			if (window.event && image == window.event.srcElement) stwUtils.image.swap(image);
		},

		swap: function(image) {
			if (image.stwSwap)
			{
				var tmp = image.src;
				image.src = image.stwSwap;
				image.stwSwap = tmp;
				return true;
			}

			var path = image.src;
			image.stwSwap = path;
			var ext = stwUtils.file.ext( path );
			path = stwUtils.string.substr( path, 0, -ext.length);
			if ('_over' == stwUtils.string.substr(path, -5)) path = stwUtils.string.substr( path, 0, -5 );
			else path += '_over';
			image.src = path + ext;
		},

		open: function(src, w, h, title) {
			var x = (window.screen.width - w) / 2;
			if (x < 0) { x = 0; }
		 	var y = (window.screen.height - h) / 2;
		 	if (y < 0) { y = 0; }
		 	var myWindow = window.open("", "full", 'left=' + x + ',' + 'top=' + y + ',toolbar=no,menubar=no,resizable=no,status=no,titlebar=no,width=' + w +',height=' + h);
			myWindow.document.write('<html><head><title>' + title + '</title></head><body style="padding: 0; margin: 0;"><img src="' + src + '" width="' + w + '" height="' + h + '" alt="' + title + '" title="' + title + '" style="margin: 0;"></body></html>');
			return false;
		}
	},

	string: {
		substr: function(str, begin, end) {
			if (begin < 0) begin = str.length + begin;
			if (!end) end = str.length;
			if (end < 0) end = str.length + end;
			return str.substr( begin, end );
		},

		escapeRegExp: function( str ) {
			['|', '^', '*', '(', ')', '+', '.'].each( function(s) {
				str = str.replace( s, '\\' + s );
			});

			return str;
		}

	},

	form: {
		input: {
			setInnerTitle: function( input ) {
				input = $( input );
				if (!input.value)
				{
					stwUtils.form.input.toggleInnerTitle( input );
					Event.observe( input, 'focus', function() { stwUtils.form.input.toggleInnerTitle( input ); } );
					Event.observe( input, 'blur', function() { stwUtils.form.input.toggleInnerTitle( input ); } );
				}
			},

			toggleInnerTitle: function( input ) {
				if (input.hasClassName('disabled'))
				{
					input.clear();
					input.removeClassName('disabled');
				}
				else
				{
					if (!input.value)
					{
						input.value = input.readAttribute('title');
						input.addClassName('disabled');
					}
				}
			}
		}
	},

	file: {
		ext: function(filename) {
			return stwUtils.string.substr( filename, filename.lastIndexOf('.') );
		}
	}
}