
jQuery(document).ready( function() {
	jQuery(':checked + label').addClass('checked');
	
	jQuery('input:radio').each( function() {
		jQuery(this).addClass('js-radiobutton');
		jQuery('label[for="' + jQuery(this).attr('id') + '"]').addClass('js-radiobutton');
	});
	jQuery('input:checkbox').each( function() {
		jQuery(this).addClass('js-checkbox');
		jQuery('label[for="' + jQuery(this).attr('id') + '"]').addClass('js-checkbox');
	});
	
	jQuery('input:radio + label').click( function() {
		label_for = jQuery(this).attr('for');
		input_name = jQuery('input#' + label_for).attr('name');
		jQuery('input[name="' + input_name + '"] + label').removeClass('checked');
		jQuery(this).toggleClass('checked');
	});
	jQuery('input:checkbox + label').click( function() {
		jQuery(this).toggleClass('checked');
	});

	//select boxes - inspired by http://hazelryan.co.uk/free_scripts/jforms	
	jQuery('.styled_form select').each(function () {
		jQuery('body').append('<ul id = "'+this.id+'_select_list" class="select_list"></ul>');
		jQuery(this).children().each(function() {
			var this_text = (jQuery(this).text() != "")?jQuery(this).text():"&nbsp;";
			jQuery('#'+jQuery(this).parent().attr('id')+'_select_list').append('<li>'+this_text+'</li>');
		});
		var width_select = jQuery(this).width();
		if (jQuery(this).css('width') === "auto") width_select = jQuery(this).width()+5;

		jQuery('#'+this.id+'_select_list').css('height',(jQuery('#'+this.id+'_select_list li:first').height()+4)*(jQuery('#'+this.id+'_select_list li').size()<10?jQuery('#'+this.id+'_select_list li').size():10)).css('width',width_select).toggle();

		jQuery('#'+this.id+'_select_list > li').hover( function() {
		jQuery(this).addClass('selected')}, function() {
		jQuery(this).removeClass('selected');}).each( function(i) {
			jQuery(this).click(function(){
				var id = jQuery(this).parent().attr('id');
				jQuery('#'+id).toggle();
				jQuery('#'+id.replace('_list','')).attr('value',jQuery(this).text());
				jQuery('#'+id.replace('_select_list','')).attr('selectedIndex',i).change();
				jQuery('#'+id+' >  li').removeClass('selected');
				jQuery(this).addClass('selected');	
			});
		});
		
		var cssdeclarations;
		var list_cssdeclarations = new Array("margin", "margin-top", "margin-right", "margin-bottom", "margin-left");
		var thiss = this;
		//jQuery(list_cssdeclarations).each( function() {
			//if (jQuery(this).css(this) != "0px") cssdeclarations += this + ':'+jQuery(this).css(this)+';';
		//});
				
		jQuery(this).before('<div class="selectArea" style="width:'+width_select+'px;'+cssdeclarations+'"><a class="selectButton" href="#" onclick="jQuery(\'#'+this.id+'_select\').focus().click();return false;"></a><input type="text" class="selectcontent" style="width:'+(width_select-5)+'px;" id="'+this.id+'_select"  value="'+this[this.selectedIndex].text+'"  /></div>').css('position','absolute').css('left','-6000px');
		
		jQuery('#'+this.id+'_select').click( function(){
			 $list = jQuery('#'+this.id+'_list');	
						
			jQuery('#'+this.id+'_list').focus();
			jQuery('#'+this.id+'_list').css('left',jQuery(this).offset().left);
			
			if((jQuery('#'+this.id+'_list').height()+jQuery(this).offset().top -document.documentElement.scrollTop) > jQuery(window).height()) {
				jQuery('#'+this.id+'_list').css('top',jQuery(this).offset().top-jQuery('#'+this.id+'_list').height()-4);
			} else {
				jQuery('#'+this.id+'_list').css('top',jQuery(this).offset().top+jQuery(this).height()+4);
			}
			jQuery('#'+this.id+'_list > li').removeClass('selected');
			jQuery('#'+this.id+'_list > li').get(jQuery('#'+this.id.replace('_select','')).attr('selectedIndex')).className='selected';
			
			jQuery('.select_list:visible:not(#'+this.id+'_list)').toggle();
			
			$list.toggle();		
			var offSet = ((jQuery('.selected', $list).length>0? jQuery('.selected', $list).offset().top:0)- $list.offset().top);
			$list.animate({scrollTop: offSet});
			}).css('font-size',jQuery(this).css('font-size')).keyup(function(e) {
				var pressedKey = e.charCode || e.keyCode || -1;
				jQuery(dd) = jQuery('#'+this.id.replace('_select',''));
				jQuery('#'+this.id+'_list > li').removeClass('selected');
				switch(pressedKey) {
					case 38: // up
						var curr = (jQuery(dd.attr('selectedIndex'))-1<0?jQuery('option',jQuery(dd)).length-1:jQuery(dd.attr('selectedIndex'))-1);
					break;
					case 40: // down
						var curr = (jQuery(dd.attr('selectedIndex'))+1>=jQuery('option',jQuery(dd)).length?0:jQuery(dd.attr('selectedIndex'))+1);
					break;
					case 13: // return
						jQuery('#'+this.id+'_list').toggle();
						return false;
					break;
					case 27: // escape
						jQuery('#'+this.id+'_list').toggle();
						return false;
					break;
					default:
						var t = new Date();
						if(t.getTime()-lastKeypress>1000) {
							lastKeypress=t.getTime();
							keyBuffer ='';
						}
						keyBuffer +=String.fromCharCode(pressedKey).toLowerCase();
						curr=-1;
						jQuery('#'+this.id+'_list > li').each(function(i) {
							if(jQuery(this).text().toLowerCase().indexOf(keyBuffer)==0&&curr==-1) {
								curr = i;
								return;
							}
						});
					break;
				}
				if(curr==-1) curr=0;
				jQuery(jQuery('#'+this.id+'_list > li').get(curr)).addClass('selected').focus();
				jQuery(list) = jQuery('#'+this.id+'_list');
				var offSet = ((jQuery('.selected', jQuery(list)).length>0? jQuery('.selected', jQuery(list)).offset().top:0)- jQuery(list.offset().top));
				jQuery(list.attr('scrollTop',offSet));
				jQuery(dd.attr('selectedIndex',curr)).change();
				jQuery(this).attr('value', jQuery(jQuery('#'+this.id+'_list > li').get(curr)).text());
				return false;
							
			}).focus(function() {
				jQuery(document).keypress(function(e) {
					var pressedKey = e.charCode || e.keyCode || -1;
					if(pressedKey==13) return false;
				});
			}).blur(function() {
				jQuery(document).unbind('keypress').unbind('click');
			});

	});
});

jQuery.fn.check = function() {
	return this.each(function() {
		this.checked = true;
	});
};
jQuery.fn.uncheck = function() {
	return this.each(function() {
		this.checked = false;
	});
};



