/*
 * 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);
							// alexandra var div2place = jQuery('<div/>').addClass('cycling_elements').css('border-left','1px red solid').WG_SizeElemAsElem(html_elem);
							// alexandra var div2place = jQuery('<div/>').addClass('cycling_elements').css('width','550px').WG_SizeElemAsElem(html_elem);
							// alexandra var div2place = jQuery('<div/>').addClass('cycling_elements').css('text-align','center').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);
								//alexandra var cycling_element = jQuery('<div/>').addClass('cycling_element').css('align','center').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');
	});
};


