// Select Style
// ver 0.4
//
// Last updated: May 4, 2011
// Last updated by: Paul Bland

var SelectStyle = function() {

	var _default_value 		= '';
	var _default_display 	= '';

	/**
	 * Constructor
	 */	
	var _init = function() {
		
		// Return if iOS
		if (((navigator.userAgent).indexOf("iPhone") > 0) || ((navigator.userAgent).indexOf("iPad") > 0)) {
           return true;
        }
       
		// Replace each select with styled version
		$('.select_style').each(_select_style);
		
		// Bind behavior functions to new select items
		$('.select_group DIV').click(_select_group_toggle);
		$('.select_group UL LI').click(_select_group_copy);
	}
	
	/**
	 * Function to toggle new select menus
	 */
	var _select_group_toggle = function() {
		
		var target = $(this).closest('FIELDSET').find('UL');
		
		if (target.is(':hidden')) {
			$('.select_menu:visible').slideUp('fast');
			target.slideDown('fast');
		} else {
			target.slideUp('fast');
		}

		$(this).closest('FIELDSET').find('DIV').toggleClass('open');
	};
	
	/**
	 * Function to control data selection
	 */
	var _select_group_copy = function() {
		
		var input      = $(this).closest('FIELDSET').find('INPUT');
		var div_target = $(this).closest('FIELDSET').find('DIV');
		
		// Copy value to div and input field
		input.attr('value', $(this).attr('my_value'));
		div_target.html($(this).html());
		
		// Check auto submit
		if (input.hasClass('auto_submit')) {
			$(this).parents('FORM').submit();
		}
		
		div_target.addClass('active');
		div_target.removeClass('open');
	
		// Hide menu
		$(this).parent('UL').slideUp('fast');
	};

	/**
	 * Function to replace select with styled version
	 */
	var _select_style = function() {
		
		var select       = $(this);
		var select_name  = select.attr('name');
		var options      = '';
		var this_default = ''
		var div_class    = '';
		var width        = select.width();
	

		// Set default values	
		$('OPTION:selected', select).each(function() {
			_default_value 		= $(this).val();
			_default_display 	= $(this).html();
		});

	
		// Get options from select element
		$('OPTION', select).each(function(i) {
			
//			if (i==0) _default_value = $(this).html();

			options += '<li my_value="' + $(this).attr('value') + '">' + $(this).html() + '</li>';
			
			if ($(this).attr('my_selected') === 'selected') {
				this_default = $(this).html();
				div_class = 'active';
			}
		});
		
		if (this_default) {
			_default_value = this_default;
		}
		
		// Check auto select
		var input_class = '';
		if (select.hasClass('auto_submit')) {
			input_class = 'auto_submit';
		}
		
		var new_content = 
			'<fieldset class="select_group" style="width:' + width + 'px">' +
				'<div class="text select_target ' + div_class + '">' + _default_display + '</div>' +
				'<input type="hidden" value="' + _default_value + '" name="' + select_name + '" ' + 
				'class="' + input_class + '" id="' + select.attr('id') + '"  />' +
				'<ul class="select_menu">'
					+ options + 
				'</ul>' +
			'</fieldset>';
		
		select.replaceWith(new_content);
	};

	_init();
}

$(document).ready(function() {
	new SelectStyle();
});
	
