/*
 * jQuery WG Rotate plug-in 1.0
 * Copyright (c) 2008 Roberto Lee (webgenerator.nl)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * Date: 2008-12-11
 * Rev: 1
 */
jQuery.fn.WG_Rotate = function(parameters) {// 'this' is a jQuery object at this point - with all the jQuery functions
	defaults = {
		source_container: '',
		removeImgAttribs: true,
		rotate_type: 'cycle', //cycle, random_img, random_img_as_background, cycle_listed_texts  //cycling needs the cycling plugin http://malsup.com/jquery/cycle/
		cycle_fx: 'scrollRight', //fade,scrollDown,scrollUp,scrollLeft,scrollRight
		cycle_speed: 1500,
		cycle_timeout: 4000,
		cycle_random: 1,
		cycletext_center: 1
	};
  	return this.each(function() {// return so we don't break the chain now we are inside of a jQuery function, the DOM element is the context so 'this' has changed to become a DOM element.
		jQuery.extend(defaults, parameters);
    	html_elem = this;

		if(((jQuery(html_elem)).is('*')) && (jQuery(defaults.source_container).is('*')))
		{
			var old_content =  jQuery('<div/>').append(jQuery(html_elem).html());
			jQuery(html_elem).html('');
			switch(defaults.rotate_type)
			{
				case 'random_img':
							var numimgs = jQuery(defaults.source_container + ' img').length;
							var rndNum = Math.ceil(Math.random() * numimgs) - 1;
							var chosen_element_img = jQuery(defaults.source_container + ' img')[rndNum];
							jQuery(defaults.source_container).remove();
							if (defaults.removeImgAttribs == true) { jQuery(chosen_element_img).removeAttr('width').removeAttr('height').removeAttr('style').attr('border','0')}
							var chosen_element_link = jQuery(chosen_element_img).parents('a').get(0);
							var chosen_element_img_and_link = jQuery(chosen_element_link).is("a")? jQuery(chosen_element_link).empty().append(chosen_element_img) : chosen_element_img;
							var div2place = jQuery('<div/>').css('height',jQuery(html_elem).height() + 'px').css('width',jQuery(html_elem).width() + 'px').css('overflow','hidden').append(chosen_element_img_and_link);
							jQuery(html_elem).append(div2place);
							break;
				case 'random_img_as_background':
							var numimgs = jQuery(defaults.source_container + ' img').length;
							var rndNum = Math.ceil(Math.random() * numimgs) - 1;
							var chosen_element_img = jQuery(defaults.source_container + ' img')[rndNum];
							jQuery(defaults.source_container).remove();
							jQuery(html_elem).css('background-image','url(' + jQuery(chosen_element_img).attr('src') + ')');
							break;
				case 'cycle':
							//cycling does not only images alone, but the children elements.
							//therefor collect all items and store them in another div per element.
							var div2place = jQuery('<div/>').addClass('cycling_elements').css('overflow','hidden').WG_SizeElemAsElem(html_elem);
							jQuery(defaults.source_container + ' img').each(function()
							{
								var chosen_element_img = jQuery(this);
								if (defaults.removeImgAttribs == true) {jQuery(chosen_element_img).removeAttr('width').removeAttr('height').removeAttr('style').attr('border','0');}
								var chosen_element_link = jQuery(chosen_element_img).parents('a').get(0);
								var chosen_element_img_and_link = jQuery(chosen_element_link).is("a")? jQuery(chosen_element_link).empty().append(chosen_element_img) : chosen_element_img;
								var cycling_element = jQuery('<div/>').addClass('cycling_element').append(chosen_element_img_and_link);
								div2place.append(cycling_element);
							});
							jQuery(defaults.source_container).remove();
							jQuery(html_elem).append(div2place);
							jQuery('.cycling_elements').cycle({
							    fx: 		defaults.cycle_fx,
							    speed:     	defaults.cycle_speed,
							    timeout: 	defaults.cycle_timeout,
							    random:  	defaults.cycle_random
							});
							break;
				case 'cycle_listed_texts':
							var div2place = jQuery('<div/>').addClass('cycling_elements').css('overflow','hidden').WG_SizeElemAsElem(html_elem);
							jQuery(defaults.source_container + ' li').each(function()
							{
								var chosen_element_txt = jQuery(this).html();
								var cycling_element = jQuery('<div/>').addClass('cycling_element').append(chosen_element_txt);
								div2place.append(cycling_element);

							});
							jQuery(defaults.source_container).remove();
							jQuery(html_elem).append(div2place);

							jQuery('.cycling_elements').cycle({
							    fx: 		'fade',
							    speed:     	defaults.cycle_speed,
							    timeout: 	defaults.cycle_timeout,
							    random:  	defaults.cycle_random,
							    cleartype:  1

							});

							jQuery('.cycling_element').WG_CenterText('.cycling_elements');
							break;
			}
		}
  	});
};

jQuery.fn.WG_SizeElemAsElem = function(elem) {
	return this.each(function() {
		jQuery(this).css('height',jQuery(elem).height() + 'px').css('width',jQuery(elem).width() + 'px');
	});
};

jQuery.fn.WG_CenterText = function(elem) {
	return this.each(function() {
		var pos_top_txt = (jQuery(elem).height() - jQuery(this).height())/2;
		jQuery(this).css('width', jQuery(elem).width() + "px").css('text-align','center').css('position','absolute').css('top',pos_top_txt+'px').css('left','0px');
	});
};

/*
			function center_text()
			{
				var pos_txt = ($('#fade').height() - $(this).height())/2;
				var pos_txt_horiz = ($('#fade').width() - $(this).width())/2;
				$(this).css('top',pos_txt+'px').css('left',pos_txt_horiz+'px');
			}
*/

/*
	USAGE SAMPLES
	<script type="text/javascript">
	    $(document).ready(function() {
			$('div#rotating_moodbars').WG_Rotate({
					source_container: 'div#bgimages'
					removeImgAttribs: true,
					rotate_type: 'cycle', //cycle, random_img, random_img_as_background, cycle_listed_texts  //cycling needs the cycling plugin http://malsup.com/jquery/cycle/
					cycletext_center: 1,
					cycle_fx: 		'<$OPTION type=design id="Rotator; Type" designtype=list items="fade,scrollDown,scrollUp,scrollLeft,scrollRight" default="fade"$>',
					cycle_speed:  	<$OPTION type=design id="Rotator; Transition speed. Higher is slower transition)" designtype="text" default="1500" langdep="no" $>,
					cycle_timeout: 	<$OPTION type=design id="Rotator; Timeout (in milliseconds, 2000 = 2 seconds)" designtype="text" default="3000" langdep="no" $>,
					cycle_random: 	<$OPTION type=design id="Rotator; Random (0 = not random, 1 = random)" designtype="text" default="1" langdep="no" $>

					});
	    });
	</script>

	<div id="rotating_moodbars" style="height: 200px; width:100%;"></div>
	<div id="bgimages" style="display:none;">
		<IMG src="http://www.disegno-f-o.nl/files/backgrounds/2.jpg" width=100 border=10>
		<IMG src="http://www.disegno-f-o.nl/files/backgrounds/4.jpg" width=100 border=10>
		<a href="test.htm"><b><IMG src="http://www.disegno-f-o.nl/files/backgrounds/9.jpg" width=200 border=10></b></a>
	</div>
	OR
	<div id="bgimages" style="display:none;">
		<ul>
			<li>aaaaaaaaaaaaaaaaaaaa</li>
			<li>bbbbbbbbb<a href="#">bbbbb</a>bbbbbbbbbbbbbbb</li>
			<li>ccccccccccccccc</li>
			<li>dddddddd</li>
		</ul>
	</div>

	<$CONTENT type="field" name="rotate_source" wysiwyg_css="content_cms.css" globalprefix="<div id=\"bgimages\" style=\"display:none;\">" globalpostfix="</div>" globalnotprefix="<$OPTION id="rotate_source" type="textblock" wysiwyg_css="content_cms.css"$>"$>
*/