// JavaScript Document
var selectNr = 0;
var checkNr = 0;
var radioNr = 0;
var zin = 6000;
var tabIndex = 0;

jQuery.fn.extend(
{
	dropbox: function( options ) 
	{
		return this.each( function() 
		{
			new jQuery.DropBox( this, options );
		});
	},
	checkbox: function ( options )
	{
		return this.each( function()
		{
			new jQuery.CheckBox( this, options );
		});
	},
	radiobox: function ( options )
	{
		return this.each( function() 
		{
			new jQuery.RadioBox( this, options );
		});
	}
});

jQuery.RadioBox = function( selectobj, options )
{
	radioNr++
	var opt = ( options ) ? options : {};
	opt.inputClass = ( opt.inputClass ) ? opt.inputClass : "radiobox";
	opt.checkedClass = ( opt.checkedClass ) ? opt.checkedClass : "checked";
	opt.uncheckedClass = ( opt.uncheckedClass ) ? opt.uncheckedClass : "unchecked";
	opt.disabledClass = ( opt.disabledClass ) ? opt.disabledClass : "disabled";
	
	var $radio = $( selectobj );
	$radio.attr( 'role', radioNr );
	$radio.addClass( opt.inputClass + '_' + radioNr );
	
	var $replacement = replaceRadioBox( opt );
	$radio.before( $replacement );
	
	function replaceRadioBox( opt )
	{
		var replacement = document.createElement( 'span' );
		$replacement = $( replacement );
		classes = opt.inputClass;
		if ( $radio.is( ':checked' ) )
		{
			classes += ' ' + opt.checkedClass;
		}
		else
		{
			classes += ' ' + opt.uncheckedClass;
		}
		if ( $radio.is( ':disabled' ) )
		{
			classes += ' ' + opt.disabledClass;
		}
		
		$replacement.attr( 'id', opt.inputClass + '_radio_' + radioNr );
		nume = $radio.attr( 'name' );
		$replacement.addClass( opt.inputClass + '_radio_' + nume );
		$replacement.attr( 'role', radioNr );
		$replacement.html( 'a-b' );
		$replacement.addClass( classes );
		
		$radio
			.change( function()
			{
				if ( !$( this ).is( ':disabled' ) )
				{
					nume = $( this ).attr( 'name' );
					val = $( this ).attr( 'role' );
					$( '.' + opt.inputClass + '_radio_' + nume ).removeClass( opt.checkedClass ).addClass( opt.uncheckedClass );
					$( '#' + opt.inputClass + '_radio_' + val ).removeClass( opt.uncheckedClass ).addClass( opt.checkedClass );
				}
			});
		
		$replacement
			.click( function()
			{
				$el = $( '.' + opt.inputClass + '_' + $( this ).attr( 'role' ) );
				if ( !$el.is( ':disabled' ) )
				{
					if ( !$el.is( ':checked' ) )
					{
						// check this one!
						$el.attr( 'checked', true );
						nume = $el.attr( 'name' );
						$( '.' + opt.inputClass + '_radio_' + nume ).removeClass( opt.checkedClass ).addClass( opt.uncheckedClass );
						$( this ).removeClass( opt.uncheckedClass ).addClass( opt.checkedClass );
					}
				}
			});
		return $replacement;
	}
}

jQuery.CheckBox = function( selectobj, options )
{
	checkNr++;
	var opt = ( options ) ? options : {};
	opt.inputClass = ( opt.inputClass ) ? opt.inputClass : "checkbox";
	opt.checkedClass = ( opt.checkedClass ) ? opt.checkedClass : "checked";
	opt.uncheckedClass = ( opt.uncheckedClass ) ? opt.uncheckedClass : "unchecked";
	opt.disabledClass = ( opt.disabledClass ) ? opt.disabledClass : "disabled";
	
	var $check = $( selectobj );
	$check.attr( 'role', checkNr );
	$check.addClass( opt.inputClass + '_' + checkNr );
	
	var $replacement = replaceCheckBox( opt );
	$check.before( $replacement );
	
	function replaceCheckBox( opt )
	{
		var replacement = document.createElement( 'span' );
		$replacement = $( replacement );
		classes = opt.inputClass;
		if ( $check.is( ':checked' ) )
		{
			classes += ' ' + opt.checkedClass;
		}
		else
		{
			classes += ' ' + opt.uncheckedClass;
		}
		if ( $check.is( ':disabled' ) )
		{
			classes += ' ' + opt.disabledClass;
		}
		
		$replacement.attr( 'id', opt.inputClass + '_check_' + checkNr );
		$replacement.attr( 'role', checkNr );
		$replacement.html( 'a-b' );
		$replacement.addClass( classes );
		
		$check
			.change( function()
			{
				if ( !$( this ).is( ':disabled' ) )
				{
					$el = $( '#' + opt.inputClass + '_check_' + $( this ).attr( 'role' ) );
					if ( !$( this ).is( ':checked' ) ) 
					{
						$( this ).attr( 'checked', false );
						$el.removeClass( opt.checkedClass );
						$el.addClass( opt.uncheckedClass );
					}
					else
					{
						$( this ).attr( 'checked', true );
						$el.removeClass( opt.uncheckedClass );
						$el.addClass( opt.checkedClass );
					}
				}
			});
		
		$replacement
			.click( function()
			{
				$el = $( '.' + opt.inputClass + '_' + $( this ).attr( 'role' ) );
				if ( !$el.is( ':disabled' ) )
				{
					if ( $el.is( ':checked' ) )
					{
						// uncheck it!
						$el.attr( 'checked', false );
						$( this ).removeClass( opt.checkedClass );
						$( this ).addClass( opt.uncheckedClass );
					}
					else
					{
						$el.attr( 'checked', true );
						$( this ).removeClass( opt.uncheckedClass );
						$( this ).addClass( opt.checkedClass );
					}
				}
			});
		return $replacement;
	}
}

jQuery.DropBox = function( selectobj, options ) 
{
	selectNr++;
	var opt = options || {};
	opt.inputClass = ( opt.inputClass ) ? opt.inputClass : "dropbox";
	opt.hoverClass = ( opt.hoverClass ) ? opt.hoverClass : "selected";
	opt.openClass = ( opt.openClass ) ? opt.openClass : "open";
	opt.closedClass = ( opt.closedClass ) ? opt.closedClass : "closed";
	opt.disabledClass = ( opt.disabledClass ) ? opt.disabledClass : "disabled";
	opt.selectedClass = ( opt.selectedClass ) ? opt.selectedClass : "selected";
	opt.option_height = ( opt.option_height ) ? opt.option_height : 24;
	opt.options_visible = ( opt.options_visible ) ? opt.options_visible : 8;
	opt.selectedWidth = ( opt.selectedWidth != undefined ) ? opt.selectedWidth : 30;
	opt.selectedWidth = opt.selectedWidth + 0; // + borders
	opt.drop_style = ( opt.drop_style != undefined ) ? opt.drop_style : 'default'; // default, hover-center, hover-top, hover-bottom, bottom -- pt bottom, -2px ?
	
	var $select = $(selectobj);
	$select.attr( 'role', selectNr );
	$select.addClass( opt.inputClass + '_' + selectNr );
	
	var $replacement = replaceSelect( opt );
	$select.hide().before( $replacement );
	
	function replaceSelect( opt )
	{
		$select.disabled = $select.is( ':disabled' );
		var replacement = document.createElement( "div" );
		$replacement = $( replacement );
		$replacement.attr( 'id', opt.inputClass + '_div_' + selectNr );
		$replacement.attr( 'role', selectNr );
		$replacement.addClass( 'dropdown' );
		repl_width = parseInt( $select.css( 'width' ), 10 );
		$replacement.css( 'width', repl_width + 'px' );
		getOptions();
				
		return $replacement;
	}
	
	function getOptions()
	{		 
		var ul = document.createElement( 'ul' );
		$ul = $( ul );
		$ul.attr( 'id', opt.inputClass + '_ul_' + selectNr );
		$ul.attr( 'role', selectNr );
		$ul.addClass( 'droplist' );
		$ul.css( 'width', repl_width - opt.selectedWidth + 'px' );
		var opt_nr = 0;
		var opt_sel = 0;

		var sel = document.createElement( 'a' );
		$sel = $( sel );
		$sel.attr( 'id', opt.inputClass + '_a_' + selectNr );
		$sel.attr( 'role', selectNr );
		$sel.css( 'z-index', $select.css( 'z-index' ) );
		$sel
			.click( function()
			{
				if ( !$select.disabled )
				{
					// deschide daca e inchis si invers.. ? :)
					if ( !$( '#' + opt.inputClass + '_ul_' + $( this ).attr( 'role' ) ).is( ':visible' ) )
					{
						closeAll();
						$( 'a.dropselect' ).css( 'z-index', 9400 );
						$( 'div.dropdown' ).css( 'z-index', 9400 );
						
						$( '#' + opt.inputClass + '_div_' + $( this ).attr( 'role' ) ).css( 'z-index', 9401 );
						$( '#' + opt.inputClass + '_ul_' + $( this ).attr( 'role' ) ).css( 'z-index', 9401 );
						$( '#' + opt.inputClass + '_ul_' + $( this ).attr( 'role' ) ).show();
						$( '#' + opt.inputClass + '_a_' + $( this ).attr( 'role' ) ).addClass( 'open hover' );
					}
					else
					{
						closeAll();
					}
				}
				else
				{
					closeAll();
				}
			})
			.keydown( function( event ) 
			{	   
				switch( event.keyCode ) 
				{
					case 38: // up
						event.preventDefault();
						moveSelect( -1, this );
						break;
					case 40: // down
						event.preventDefault();
						moveSelect( 1, this );
						break;
					case 9:  // tab 
						closeAll();
						break;
					case 13: // return
						event.preventDefault();
						setCurrent( this, $select );
						break;
					case 27:
						event.preventDefault();
						closeAll();
						break;
				}
			})
			.keyup( function( event )
			{
				switch( event.keyCode )
				{
					case 9: // tab, afiseaza lista la tab..
						$( this ).trigger( 'click' );
					break;
				}
			});
		$select
			.change( function()
			{
				val = $( this ).val();
				text = $( this ).find( 'option:selected' ).text();
				$( '#' + opt.inputClass + '_a_' + $( this ).attr( 'role' ) ).html( text );
				$( '#' + opt.inputClass + '_ul_' + $( this ).attr( 'role' ) ).find( 'li a' ).removeClass( 'active' );
				$( '#' + opt.inputClass + '_li_' + $( this ).attr( 'role' ) + '_' + val ).find( 'a' ).addClass( 'active' );
			});
		$sel.addClass( 'dropselect closed' );
		if ( $select.disabled ) $sel.addClass( 'disabled' );
		
		if ( $select.attr( 'tabindex' ) )
		{
			tabIndex = $select.attr( 'tabindex' );
			$sel.attr( 'tabIndex', $select.attr( 'tabindex' ) );
		}
		else
		{
			tabIndex++;
			$sel.attr( 'tabIndex', tabIndex );
		}
		
		$sel.html( '&nbsp;' );
		
		sel = addClasses( sel );
		var scroll;
		$select.children( 'option' ).each( function() 
		{
			opt_nr++;
			var val = $( this ).val();
			if ( opt_nr == 1 || $( this ).is( ':selected' ) )
			{
				$sel.html( $( this ).html() );
				opt_sel = 1;
			}
			var li = document.createElement( 'li' );
			$( li ).addClass( 'option' );
			$( li ).attr( 'id', opt.inputClass + '_li_' + selectNr + '_' + $( this ).val() );
			$( li ).attr( 'role', selectNr );
			
			if ( scroll == undefined ) scroll = li;
			var lia = document.createElement( 'a' );
			$( lia ).attr( 'role', $( this ).val() );
			lia.innerHTML = $( this ).html();
			
			$( lia )
				.click( function()
				{
					if( $( this ).hasClass( 'active' ) )
					{
						closeAll();
					}
				})
				.mouseover( function()
				{
					$( this ).addClass( 'hover' );
				})
				.mouseout( function()
				{
					$( '#' + opt.inputClass + '_ul_' + $( this ).parent().attr( 'role' ) ).find( 'li' ).find( 'a' ).removeClass( 'hover' );
				});
			
			if ( $( this ).is( ':selected' ) ) 
			{
				$( lia ).addClass( 'active hover' );
				opt_sel = opt_nr;
			}
			li.appendChild( lia );
			
			$( li ).find( 'a' )
				.click(function()
				{
					if( !$( this ).hasClass( 'active' ) && !$select.disabled )
					{
						text = $( this ).html();
						val = $( this ).attr( 'role' );
						sel_id = $( this ).parent().attr( 'role' );
						
						$( '#' + opt.inputClass + '_ul_' + sel_id ).find( 'li a' ).removeClass( 'active' );
						$( this ).addClass( 'active' );
						$( '#' + opt.inputClass + '_a_' + sel_id ).html( text );
						$select.val( val );
						if ( $select.attr( 'onchange' ) )
						{
							$select.trigger( 'change' );
						}
						closeAll();
					}
				});	
			
			ul.appendChild( li );
		});
		$ul.find( 'li:first' ).addClass( 'first' );
		$ul.find( 'li:last' ).addClass( 'last' );
				
		if ( opt_nr < opt.options_visible ) options_height = opt_nr * opt.option_height;
		else options_height = opt.options_visible * opt.option_height;
		total_height = options_height;
		
		$ul.css( 'height', options_height );
		$ul.css( 'z-index', -1 );
		
		var style_found = 0;
		if ( opt.drop_style == 'hover-center' || opt.drop_style == 'default' )
		{
			if ( opt_sel > Math.floor( opt.options_visible / 2 ) )
			{
				if ( ( opt_sel + Math.floor( opt.options_visible / 2 ) ) > opt_nr )
				{
					var nr_height = opt.options_visible - opt_nr + opt_sel - 1;
				}
				else
				{
					var nr_height = Math.floor( opt.options_visible / 2 );
				}
			}
			else
			{
				var nr_height = opt_sel - 1;
			}
			var nr_scroll = opt_sel - Math.floor( opt.options_visible / 2 );
			style_found = 1;
		}
		if ( style_found == 0 && opt.drop_style == 'bottom' )
		{
			var nr_height = -1;
			style_found = 1;
			var nr_scroll = opt_sel;
		}
		if ( style_found == 0 && opt.drop_style == 'hover-top' )
		{
			var nr_height = opt.options_visible - 1;
			style_found = 1;
			var nr_scroll = opt_sel - opt.options_visible + 1;
		}
		if ( style_found == 0 && opt.drop_style == 'hover-bottom' )
		{
			var nr_height = 0;
			style_found = 1;
			var nr_scroll = opt_sel;
		}
		
		if ( nr_scroll <= 0 )
		{
			nr_scroll = 0;
		}
		else
		{
			nr_scroll = nr_scroll - 1;
		}	
		$ul.scrollTo( nr_scroll * opt.option_height + 'px', 1 );
		$ul.css( 'top', nr_height  * -1 * opt.option_height + 'px' );
		
		setTimeout("$( 'ul.droplist' ).hide();", 15 );
		$replacement.append( sel );
		$replacement.append( ul );
		
	}
	
	function setCurrent( el, $select )
	{
		role = $( el ).attr( 'role' );
		$( el ).next( 'ul' ).children( 'li' ).each( function() 
		{
			if( $( this ).find( 'a' ).hasClass( 'hover' ) ) 
			{
				$( el ).html( $( this ).text() );
				$select.val( $( this ).find( 'a' ).attr( 'role' ) );
				$( el ).next( 'ul' ).find( 'li' ).find( 'a' ).removeClass( 'active' );
				$( this ).find( 'a' ).addClass( 'active' );
			}
		});
		
		closeAll();
	}
	
	function moveSelect( step, el ) 
	{
		var lis = $( "li", $( el ).next( 'ul' ) );
		if ( !lis ) return;
		selNr = 0;
		$( el ).next( 'ul' ).children( 'li' ).each( function() 
		{
			if( $( this ).find( 'a' ).hasClass( 'hover' ) ) 
			{
				active = selNr;
			}
			if( $( this ).find( 'a' ).hasClass( 'active' ) )
			{
				act = selNr;
			}
			selNr++;
		});
		if ( !active ) active = act;
		
		active += step;
		
		if ( active < 0 ) 
		{
			active = 0;
		} 
		else if ( active >= lis.size() ) 
		{
			active = lis.size() - 1;
		}
		$( el ).next( 'ul' ).find( 'li' ).find( 'a' ).removeClass( 'hover' );
		$( el ).next( 'ul' ).find( 'li:eq(' + active + ')' ).find( 'a' ).addClass( 'hover' );
	}
		
	function hideMe()
	{
		$ul.hide();
	}
		
	function addClasses( sel )
	{
		if ( $select.disabled ) 
		{
			$sel.addClass( opt.disabledClass );
			$select.parent().addClass( opt.disabledClass );
		}
		
		return sel;
	}
}
function click_outside_selects( e )
{
	if ( ( !$( e.target ).is( 'div.dropdown' ) ) && ( !$( e.target ).is( 'ul li.option a' ) ) && ( !$( e.target ).is( 'a.dropselect' ) ) && ( !$( e.target ).is( 'div.dropdown ul' ) ) )
	{
		closeAll();
	}
}
function closeAll()
{
	$( 'div.dropdown' ).removeClass( 'open' ).addClass( 'closed' );
	$( 'a.dropselect' ).removeClass( 'open' ).removeClass( 'hover' ).addClass( 'closed' );
	$( 'ul.droplist' ).hide();
}
$( document ).mousedown( click_outside_selects );


function togglebox( box )
{
	if( !$('#show' + box ).hasClass('active') )
	{
		$(document).find('#show1').removeClass('active');
		$(document).find('#show2').removeClass('active');
		$(document).find('#show3').removeClass('active');
		
		$(document).find('#show' + box).addClass('active');
		
		$(document).find('#table1').hide();
		$(document).find('#table2').hide();
		$(document).find('#table3').hide();
		
		$(document).find('#table' + box).fadeIn();
		
		$(document).find('#panel1').hide();
		$(document).find('#panel2').hide();
		$(document).find('#panel3').hide();
		
		$(document).find('#panel' + box).fadeIn();
	}
}
