var OSP_SHADOWBOX_CLASS = 'osp_thumb';


function OSP_SetupShadowbox(options)
{
	if ( !options )
	{
		options = new Object({
			counterType : "skip"
		});
	}

	var galleries = new Object();
	var thumbs = getElementsByClass(OSP_SHADOWBOX_CLASS + '.*');
	var id = thumbs.length;

	for ( var i = 0; i < thumbs.length; i++ )
	{
		var params = new Object();

		// BEGIN : Gallery property
		var matches;

		// Legacy (used on olivierdemestral.ch)
		if ( matches = thumbs[i].className.match(new RegExp('^' + OSP_SHADOWBOX_CLASS + '_([^ ]+)', '')) )
		{
			gallery_name = matches[1];

			options = jQuery.extend(options, new Object({
				'gallery' : gallery_name
			}));

			// Count gallery elements
			galleries[gallery_name] = ( galleries[gallery_name] ? galleries[gallery_name] + 1 : 1 );
		}

		// Options
		if ( matches = thumbs[i].className.match(new RegExp('^' + OSP_SHADOWBOX_CLASS + '\\[([^\\[\\]]+)\\]', '')) )
		{
			// Split params
			var pairs = matches[1].split(';');
			for ( var pair_i = 0; pair_i < pairs.length; pair_i++ )
			{
				var parts = pairs[pair_i].split('=');
				params[parts[0]] = parts[1];
			}

			// Extend shadowbox options with params
			options = jQuery.extend(options, params);

			gallery_name = params['gallery'];

			// Count gallery elements
			galleries[gallery_name] = ( galleries[gallery_name] ? galleries[gallery_name] + 1 : 1 );
		}
		// END : Gallery property


		var a_node = null;


		// This is a link node
		if ( thumbs[i].tagName == 'A' )
		{
			a_node = $(thumbs[i]);
		}
		// This is NOT a link node
		else
		{
			// Try to get link node by parsing parents
			a_node = $(thumbs[i]).parent('a');

			// NO link node exists
			if ( !a_node.length )
			{
				$(thumbs[i]).wrap('<a id="' + OSP_SHADOWBOX_CLASS + '_' + id + '" href="' + $(thumbs[i]).attr('src') + '" title="' + $(thumbs[i]).attr('alt') + '"></a>');
				a_node = $('#' + OSP_SHADOWBOX_CLASS + '_' + id);
				id++;
			}
		}

		if ( a_node )
		{
			$(a_node).addClass(OSP_SHADOWBOX_CLASS);
			
			Shadowbox.setup(a_node, options);

			// Group gallery
			if ( params['group'] && galleries[gallery_name] > 1 )
			{
				$(a_node).hide();
			}
		}
	}
}

