var $j = jQuery.noConflict();
var currentstatus;

// Definition divToggle()
// klappt alle dem aufrufenden Node folgenden DOM-nodes zu bzw. auf und setzt im 2. Childnode den entsprechenden Text
(function($) {
	$.fn.divToggle = function() {
		return this.each( function() {
			obj = $(this);
			if(obj.next().css('display') == 'block') {
				obj.children().eq(1).text('[+] ausklappen');
			} else {
				obj.children().eq(1).text('[-] einklappen');
			}
			obj.nextAll().slideToggle();
		});
	};
})(jQuery);

// document.onLoad 
$j(function() {
	// Laengenanzeige fuer jede textarea anfuegen:
	addCounter();

	// Einklappfunktion - nur für fields-Elemente. Sind Felder bereits gefüllt, werden sie nicht zugeklappt.
	foldEmptyFields();

	// preview of uploaded images
	addImagePreview('uploads/tx_srfeuserregister/');

	// Felder in Abhängigkeit des Status anzeigen
	var el = $j('.radio').filter(':checked').get().shift();
	if(el != undefined) setStatus(el.value);

	// clickrows in Tabellen formatieren
	$j('.clickrow').hover(
		function() { $j(this).addClass('rowover'); },
		function() { $j(this).removeClass('rowover'); }
	);
	// input buttons hovern
	//$j("input[type='submit']").hover( 
	$j("input.submit").hover( 
		function() { $j(this).addClass('buttonover'); },
		function() { $j(this).removeClass('buttonover'); }
	);

	// leere Einträge im feuserlisting verstecken
	$j('dt.jq_hidespan').each( function() {
			var next = $j(this).next('dd');
			
			if (next && (next.text().trim()=='' || next.text().trim()=='bis' || next.text().trim()=='in')) {	
					$j(this).hide();
					$j(next).hide();
			}
		}
	);
	$j('.jq_hideempty').each( function() {
			var next = $j(this).next('div.blue');
			
			if (next && (next.text().trim()=='')) {	
					$j(this).hide();
					$j(next).hide();
			}	
		}
	);
	$j('.jq_removeempty').each( function() {
		 if(!$j(this).next().text().trim()) $j(this).hide();
	});
});


// onLoad-Funktion: 
// preview of uploaded images
function addImagePreview(imagepath) {
	$j('.jq_preview').each( function() {
		var imgname = imagepath+$j(this).text().split(',').pop();
		if(imgname != '') {
			$j(this).text( $j(this).text().split(',').shift() );
			$j(this).prepend('<img src="'+imgname+'" height="120"><br />');
		}
	});
}

// onLoad-Funktion: 
// Einklappfunktion - nur für in fields angegebene Klassennamen (+ jq_). Sind Felder bereits gefüllt, werden sie nicht zugeklappt.
function foldEmptyFields() {
	var openfields = [];
	var fields = ['ausbildung','praktika','projekte','erfahrung','publikation','qualifikation','activities','ziele','statement','files'];
	$j.each(fields, function(i, theValue) {
		var theClass = '.jq_'+theValue;
		$j(theClass).wrapInner('<span></span>').append( 
			$j('<span/>').text('[-] einklappen').addClass('toggle') 
		);
		$j(theClass).nextAll().children(':file').each( function() {
			if(this.innerHTML != '' || this.value != '') {
				openfields.push(theValue);
			}
		});
		$j(theClass).nextAll().children(':input').each( function() {
			if(this.innerHTML != '' || this.value != '') openfields.push(theValue);
		});
	});
	var closedfields = arrayRemove(fields, openfields);
	closedfields.each( function(classname) { $j('.jq_'+classname).divToggle(); });
}

// onLoad-Funktion: 
// Laengenanzeige fuer jede textarea anfuegen:
function addCounter() {
	$j('textarea').each( function(i) {
		var id = this.getAttribute('id');
		var cid = '.'+id;
		$j(this).after('<div class="chars '+id+'"></div>');
		$j(cid).hide();
		$j(this).focus( function() {
			checkchars($(id));
			$j(cid).fadeIn(1500);
		});
		$j(this).blur( function() {
			$j(cid).fadeOut(1500);
		});
	});
}

// Zeichenzähler und -begrenzer
// - verwendet in addCounter()
function checkchars(element) {
	var maxchars = element.getAttribute('maxlength');
	var chars = element.value.length;
	var id = element.getAttribute('id');
	if(chars > maxchars) {
		element.value = element.value.substring(0,maxchars);
		chars = element.value.length;
		$j('.'+id).text('Überschüssige Zeichen wurden gelöscht').addClass('charwarn');
	} else {
		$j('.'+id).text('verbleibende Zeichen: '+ (maxchars-chars)).removeClass('charwarn');
	}
}

function setStatus(userstatus) {
	if(currentstatus > 0) {
		$j('.status_'+currentstatus).slideToggle(); 
	}
	$j('.status_'+userstatus).slideToggle();
	currentstatus = userstatus;
	//$('usergroup').value = userstatus;  nicht mehr notwendig
}

function toggleshow(element) {
	$j(element).divToggle();
}

// array-Differenz
// @param	array	Minuend
// @param	array	Subtrahend
function arrayRemove(src, remove) {
	var newarr = [];
	var tmp;
	var removeit;

	for(var i=0; i<src.length; i++) {
		removeit = false;
		for(var j=0; j<remove.length; j++) {
			if(src[i] == remove[j]) removeit = true;
		}
		if(!removeit) newarr.push(src[i]);
	}
	return newarr;
}

// helper für file-inputs
function copypath(element) {
	var id = element.getAttribute('id').substring(20, 200);
	$(id).value = element.value; 
}

function modClass(obj, classname, add)
{
	var hasClass= obj.className.match(new RegExp('(\\s|^)'+ classname+ '(\\s|$)'));
	if (add)
	{
		if (!hasClass)
			obj.className+= ' '+ classname;
	}
	else
	{
		if (hasClass)
		{
			var reg = new RegExp('(\\s|^)'+ classname+ '(\\s|$)');
			obj.className=obj.className.replace(reg, ' ');
		}
	}
}

function searchBox(obj, foc)
{
	if (foc)
	{
		if (obj.value== obj.defaultValue)
			obj.value= '';
		modClass(obj, 'fucos', 1);
	}
	else
	{
		if (obj.value=='')
			obj.value=obj.defaultValue;
		modClass(obj, 'fucos', 0);
	}
}
