/*
Copyright 2006-2007, Timothy Appnel, Appnel Internet
Solutions, LLC, tim@appnel.com. All rights reserved. This
code cannot be redistributed without permission of the
author.
*/

function split_tags( delim, str )
{
	var delim_expr = '';
	for( var d in delim )
	{
		if( delim_expr.length > 0 )
			delim_expr += '|';
		delim_expr += delim[d].replace( /([^A-Za-z_0-9])/ig, '\\$1' );
	}

	str = str.replace( /^\s+|\s+$/g, '' );

	var tags = new Array();
	var matches = new Array();
	var tag;

	while( str && str.length > 0 )
	{
		matches = eval( 'str.match( /^(((\'(.*?)\')|("(.*?)")|(.*?))((' + delim_expr + '\\s*)|$))/ );' );
		if( matches )
		{
			if( matches[4] )
				tag = matches[4];
			else if( matches[6] )
				tag = matches[6];
			else
				tag = matches[7];

			tag = tag.replace( /^\s+|\s+$/g, '' );
			tag = tag.replace( /\s+/g, ' ' );
			if( tag.length > 0 )
				tags[ tags.length ] = tag;
			
			str = str.substring( matches[1].length );
		}
		else break;
	}

	return tags;
}

function join_tags( delim, spacer, tagsArray )
{
	var tags = '';
	var spacer = ( delim == spacer ? '' : spacer );
	for( var k in tagsArray )
	{
		var tag = tagsArray[k];

		if( tags.length > 0 )
			tags += delim + spacer;
		
		if( eval( 'tag.match( /\\' + delim + '/ );' ) )
		{
			if( tag.match( /"/ ) )
				tags += "'" + tag + "'";
			else
				tags += '"' + tag + '"';
		}
		else
			tags += tag;
	}
	return tags;
}

function normalize_tag( str )
{
	str = str.replace( /[^A-Za-z0-9]/g, '' );
	str = str.toLowerCase();
	return str;
}

function submit_tags( url, input )
{
	/* var delim = new Array( ' ', ',', '.', '-', '/', '+', '(', ')', '[', ']', '*' ); */

	var tags = document.getElementById( input ).value;
	tags = split_tags( split_delim, tags );
	
	var query = '';
	for( var t in tags )
	{            
		if( query.length > 0 )
			query += '+';
		query += normalize_tag(tags[t]);
	}
	
	if (url.substr(-1,1) != '/')
        url += '/';  
	url += query;
	
	window.location = url;
}

