$(document).ready(function(){
	$.fn.addClassOnChecked=(function(){
		$(this).find('input:not(:text):visible').each(function(){
			var $this=$(this);
			$this.closest('td').toggleClass('checked',$this.is(':checked'));
		});
	});

	(function($) {
		var rCur,cCur;           
	
		$.fn.HLheadNcell = (function(className) {
			$('td.hvg', this).hover(function() {
				var row=$(this).parent();
	
				var rIndex=row.get(0).rowIndex;               
				var cIndex=row.children().index(this)+1;      
	
				var table=row.parent();
	
				rCur=table.find('tr:eq('+rIndex+') > td.rowheading');
				rCur.addClass(className);
	
				cCur=table.find('td.colheading:nth-child('+cIndex+')');
				cCur.addClass(className);
	
				$(this).addClass(className);
			}, function() {
				rCur.removeClass(className);
				cCur.removeClass(className);
				$(this).removeClass(className);
			});
			return this;
		});
	}(jQuery));

	$.fn.HighlightImg=(function($inputs,multi){
		var images=[];

		var HlImg=function(){
			var $input=$(this);
			var inputId=$input.attr('id');
			var $img=images[inputId];

			$img.toggleClass('checked',$input.is(':checked'));
		};

		$inputs.click(function(){
			var $input=$(this);
			var name=$input.attr('name');
			var $inputsMatched=$inputs.filter('[name='+name+']');

			if(multi===undefined || !$input.is(':checked')  || $inputsMatched.filter(':checked').length<=multi) {
				$inputsMatched.each(HlImg);
			}
		}).each(function(){
			var $input=$(this);
			var inputId=$input.attr('id');

			images[inputId]=$('label[for='+inputId+'] img:first');

			if($input.is(':checked')) {
				HlImg.call(this);
			}
		});
	});

	var $cells=$('table.cc td.hvg');

	$cells.addClassOnChecked();

        $cells.find('input:visible').each(function(){
		var elem=this;
		var $elem=$(this);
		var onclickFn=$elem.attr('onclick');

		$elem
		.removeAttr('onclick')
		.click(function(event){
			event.stopPropagation();
			if(typeof onclickFn=='function') { onclickFn.call(elem,event); }
			$cells.addClassOnChecked();
		});
        }).end().each(function(){
		$(this).hover(function() {
			$(this).addClass('hvcell');
		},function() {
			$(this).removeClass('hvcell');
		}).closest('tr').hover(function() {
			$(this).addClass('hvrow');
		},function() {
			$(this).removeClass('hvrow');
		});
	}).click(function(){
		$(this).children('input:visible:first').each(function(){
			var $elem=$(this);

			if($elem.is(':radio:not(:checked)')) {
				$elem.attr('checked',true);
			} else if($elem.is(':checkbox')) {
				$elem.attr('checked',!$elem.attr('checked'));
			}

			$elem.triggerHandler('click');
			$elem.change();
		});
        });

	if($.browser.msie) {
		$('label img').each(function(){
			var $img=$(this);
			var $label=$img.closest('label');
			var $input=$('#'+$label.attr('for'));
			var onclickFn=$input.attr('onclick');

			if(typeof onclickFn=='function') {
				$input.click(function(event){ onclickFn.call(this,event); }).removeAttr('onclick');
			}

			$img.click(function(event) {
				event.stopPropagation();
				$label.click();
			});
			$label.click(function(){
				$input.attr('checked',!$input.is(':checked')).triggerHandler('click');
			});
		});
	}
});

