/*
	Script for auto scaling textarea's
	usage: <textarea rows="1" cols="110" onkeyup="autoresize(this)" onmouseup="autoresize(this)" name="a_name" ></textarea>
	note: rows and cols should be defined!
*/
function autoresize(txtbox)
{
    var cols = txtbox.cols;
   // alert(txtbox.cols + "***"+txtbox.offsetWidth+"****"+cols);
    var content = txtbox.value ;
    var lineCount = 0 ;

    var lastEOL = -1 ;
    do {
        var begin = lastEOL+1 ;
        lastEOL = content.indexOf("\n",lastEOL+1) ;
        var line = "" ;
        if(lastEOL != -1) {
            line = content.substring(begin,lastEOL) ;
        } else {
            line = content.substring(begin,content.length) ;
        }
        var rows_in_line = Math.floor(line.length/cols)+1 ;
        lineCount += rows_in_line;
    } while (lastEOL != -1) ;
    txtbox.rows = lineCount ;
}
/*
	Script adding and removing fieldsets
	Script will show the first hidden fieldset or hide the last shown fieldset
*/
function showExtraFieldset(el){
	var elements = el.parentNode.getElementsByTagName('fieldset');
	
	for(i=0;i<elements.length;i++){
		if(elements[i].style.display == 'none'){
			elements[i].style.display = '';
			return;
		}
	}
}
function setupDeselectRadio(){
	// create deselect functionality
	var inputs = document.getElementsByTagName('input');
	for(i=0;i<inputs.length;i++){
		if(inputs[i].type == 'radio'){
			inputs[i].onmousedown = function(){
				var t = this;
				if (this.checked){
					setTimeout(function(){t.checked = false},200);
				}
			}
		}
	}
}
function setupNoEnterText(){
	// create deselect functionality
	var inputs = document.getElementsByTagName('input');
	for(i=0;i<inputs.length;i++){
		if(inputs[i].type == 'text'){
			inputs[i].onkeypress = function(evt){
				 var evt  = (evt) ? evt : ((event) ? event : null);
    			 var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
    			 if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
			}
		}
	}
}
function setupSizeTextarea(){
	// create deselect functionality
	var ta = document.getElementsByTagName('textarea');
	for(i=0;i<ta.length;i++){
		autoresize(ta[i]);
	}
}
function addEvent(obj, evType, fn){ 
		if (obj.addEventListener){ 
			obj.addEventListener(evType, fn, false); 
			return true; 
		} else if (obj.attachEvent){ 
			var r = obj.attachEvent("on"+evType, fn); 
			return r; 
		} else { 
			return false; 
		} 
	}
addEvent(window,'load',setupDeselectRadio);
addEvent(window,'load',setupNoEnterText);
addEvent(window,'load',setupSizeTextarea);
function showHideEl(trgt,el){
	if(el.value == "help"){
		document.getElementById(trgt).style.display = "";
	}else{
		document.getElementById(trgt).style.display = "none";
	}
}
/*
function hideExtraFieldset(el){
	var elements = el.parentNode.getElementsByTagName('fieldset');
	
	for(i=elements.length;i>0;i--){ 
		if(elements[i-1].style.display != 'none'){
			elements[i-1].style.display = "none";
			return;
		}
	}
}
*/
function hideExtraFieldset(el){
	var inputMatrix = [];
	var textareaMatrix = [];
	// get all fieldsets
	var fieldsets = el.parentNode.parentNode.getElementsByTagName('fieldset');
	// find number of deleted item
	var inputs = el.parentNode.getElementsByTagName('input');
	var numberString = inputs[0].id.substr(inputs[0].id.length-2); // last to digits
	if(numberString.charAt(0) == "_"){ // check if it is a single or double digit nr
		numberString = numberString.substr(1); // cut off unneeded "_"
	}
	var number = parseInt(numberString,10)-1;
	// load al input into the matrix
	for(i=0;i<fieldsets.length;i++){
		inputMatrix.push(fieldsets[i].getElementsByTagName('input'));
	}
	// move all items in the matrix after the curent item up one step
	for(i=number;i<inputMatrix.length-1;i++){
		for(j=0;j<inputMatrix[i].length;j++){
			inputMatrix[i][j].value = inputMatrix[i+1][j].value;
			inputMatrix[i][j].checked = inputMatrix[i+1][j].checked;
		}
	}
	// bugfix for last item not being cleared
	for(i=0;i<inputMatrix[inputMatrix.length-1].length;i++){
		inputMatrix[inputMatrix.length-1][i].value = "";
		inputMatrix[inputMatrix.length-1][i].checked = false;
	}
	
	// now do the same for textareas
	for(i=0;i<fieldsets.length;i++){
		textareaMatrix.push(fieldsets[i].getElementsByTagName('textarea'));
	}
	// move all items in the matrix after the curent item up one step
	for(i=number;i<textareaMatrix.length-1;i++){
		for(j=0;j<textareaMatrix[i].length;j++){
			textareaMatrix[i][j].value = textareaMatrix[i+1][j].value;
		}
	}
	// bugfix for last item not being cleared
	for(i=0;i<textareaMatrix[textareaMatrix.length-1].length;i++){
		textareaMatrix[textareaMatrix.length-1][i].value = "";
		textareaMatrix[textareaMatrix.length-1][i].checked = false;
	}
	// hide last fieldset
	for(i=fieldsets.length;i>1;i--){ /* reverse loop */
		if(fieldsets[i-1].style.display != 'none'){
			fieldsets[i-1].style.display = "none";
			return;
		}
	}
}
/*
	Script showing and hiding a blockquote folowing the checkbox
*/
function showHideBlockquote(o){
	if(o.checked){
		for(tag = 'blockquote'; o = o.nextSibling;){
			if(o.tagName && o.tagName.toLowerCase() == tag){
				o.style.display='';
				return;
			}
		}

	}else{
		for(tag = 'blockquote'; o = o.nextSibling;){
			if(o.tagName && o.tagName.toLowerCase() == tag){
				o.style.display='none';
				return;
			}
		}
	}
}