
//<script type="text/javascript">
function behaviourToggle(element){
	for(var node = element; node.getAttribute ; node = node.parentNode){
		var nodeClasses = node.className.split(' ');
		for(var i = 0; i < nodeClasses.length; i++){
			if( nodeClasses[i] == "untoggled" ){
				
				node.style.display = "none";
				var idToToggle = node.id+"_toggled";
				
				if( node.id.length>7 && node.id.substring(node.id.length-7)=="_toggle" )
					idToToggle = node.id.substring(0, node.id.length-7);
				
				var toggleElt = document.getElementById( idToToggle );
				if( toggleElt != null )
					toggleElt.style.display = "inline";
				
				for(var j=0; ; j++){
					var elt = document.getElementById( idToToggle+"_"+j );
					if( elt != null )
						elt.style.display = "inline";
					else
						break;
				}
				
				var idToHide = node.id+"_hideWhenToggle";
				var hideElt = document.getElementById( idToHide );
				if( hideElt != null )
					hideElt.style.display = "none";
			}
		}
	}
}

function behaviourAutosizeCountLines(str, cols){
	var lines = 0;
	for(var index=0, startLine=0; index!=-1; index=str.indexOf("\n", index+1)){
		var lineString = str.substring(startLine, index);
		if( cols > 0 )
			lines += Math.ceil((lineString.length+1)/cols);
		else
			lines++;
		startLine = index+1;
	}

	return lines;
}

function behaviourAutosizeTextArea(element){
	if( typeof element.rows != "number" )
		return;

	var initRows = $(element).data( "initRows" );
	if( initRows == undefined ){
		initRows = element.rows;
		$(element).data( "initRows", initRows );
	}
	if( initRows == -1 || initRows == undefined ){
		var height = element.offsetHeight;
		initRows = Math.ceil( height / 22 );
		$(element).data( "initRows", initRows );
		element.style.height = null;
	}

	var cols = (typeof element.cols == "number") ? element.cols : 0;
	var minRows = behaviourAutosizeCountLines(element.value, cols);
	element.rows = Math.max( initRows, minRows );
}

function behaviourAutosizeText(element){
	if( typeof element.size != "number" )
		return;

	var initSize = $(element).data( "initSize" );
	if( initSize == undefined ){
		initSize = element.size;
		$(element).data( "initSize", initSize );
	}

	var minSize = Math.ceil( (element.value.length+1)*1.15 );
	element.size = Math.max( initSize, minSize );
}


$(function(){
	$( "label.validationError" ).each(function(){
		var forId = $(this).attr( "for" ).replace( /(:|\.)/g, '\\\$1' );
		$( "#"+forId ).addClass( "validationError" );
	});
});

$(function(){
	$( "a.untoggled, .untoggled .toggleCommand" ).click( function(){
		behaviourToggle( this );
	});
});

$(function(){
	$( "textarea.autoSize, .autoSize textarea" ).focus( function(){
		behaviourAutosizeTextArea( this );
	});
	$( "textarea.autoSize, .autoSize textarea" ).keypress( function(){
		behaviourAutosizeTextArea( this );
	});

	$( "input.autoSize, .autoSize input" ).focus( function(){
		behaviourAutosizeText( this );
	});
	$( "input.autoSize, .autoSize input" ).keypress( function(){
		behaviourAutosizeText( this );
	});
});

$(function(){
	$( "button.maximize" ).click( function(){
		$(this).parent().addClass( "maximized" );
	});
	$( "button.unmaximize" ).click( function(){
		$(this).parent().removeClass( "maximized" );
	});
});
//</script> 