var uploading=false
var uploadResult=""
var uploadResultHTML="";
var uploadResultJS="";

// This code was written by Tyler Akins and has been placed in the
// public domain.  It would be nice if you left this header intact.
// Base64 code from Tyler Akins -- http://rumkin.com

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return utf8_decode(output);
}


function utf8_decode(utftext) {
	var string = "";
	var i = 0;
	var c = c1 = c2 = 0;

	while ( i < utftext.length ) {

		c = utftext.charCodeAt(i);

		if (c < 128) {
			string += String.fromCharCode(c);
			i++;
		}
		else if((c > 191) && (c < 224)) {
			c2 = utftext.charCodeAt(i+1);
			string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
			i += 2;
		}
		else {
			c2 = utftext.charCodeAt(i+1);
			c3 = utftext.charCodeAt(i+2);
			string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
			i += 3;
		}

	}

	return string;
}


var PositionViewPortBounds =
	function() {
	var	left;
	var	top;
	var	width;
	var	height;

	if (Prototype.Browser.Opera || Prototype.Browser.WebKit){
		left = self.pageXOffset;
		top	= self.pageYOffset;
		width = window.innerWidth;
		height = window.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) {
		left = document.documentElement.scrollLeft;
		top	= document.documentElement.scrollTop;
		width =	document.documentElement.clientWidth;
		height = document.documentElement.clientHeight;
	}
	else if (document.body) {
		left = document.body.scrollLeft;
		top = document.body.scrollTop;
		width = document.body.clientWidth;
		height = document.body.clientHeight;
	}

	return { left: left, top: top, width: width, height: height};
}

function showAjaxBlock(i, u){

	new	Ajax.Request(u, {
		method: 'post',
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			$('block'+i).innerHTML=qr.innerHTML
			if(qr.js){
				eval(qr.js)
			}

			var viewPortBounds=new PositionViewPortBounds()
			var pos=Position.cumulativeOffset($('block'+i))
			var dim=Element.getDimensions($('block'+i))

			if(pos[1] - 5 < viewPortBounds.top || dim.height > viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i), { offset: -5, duration: 0.5 });
			}
			else if (pos[1] + dim.height + 5 > viewPortBounds.top + viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i), { offset: -(viewPortBounds.height - (dim.height + 5)), duration: 0.5 });
			}
		}
	});
}

function saveAjaxBlock(i, u){

	//alert('inst: '+ i + ' | url: ' + u)
	var frm=$('frm'+i)
	var tmp
	if(frm) {
	tmp=frm.serialize(true)
	}
	
	new	Ajax.Request(u, {
		method: 'post',
		parameters: tmp,
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			$('block'+i).innerHTML=qr.innerHTML
			if(qr.js)
				eval(qr.js)

			var viewPortBounds=new PositionViewPortBounds()
			var pos=Position.cumulativeOffset($('block'+i))
			var dim=Element.getDimensions($('block'+i))

			if(pos[1] - 5 < viewPortBounds.top || dim.height > viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i), { offset: -5, duration: 0.5 });
			}
			else if (pos[1] + dim.height + 5 > viewPortBounds.top + viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i), { offset: -(viewPortBounds.height - (dim.height + 5)), duration: 0.5 });
			}
		}
	});
}

function uploadAjaxBlockDoneWizard(i, loader){
	if(upload) {
			var div = $(loader);
			if(div != null) {
				Effect.Fade(div, { duration: 0.0 });
			}
			upload = false;
		}
		
		if(top.uploadResult){
			if(top.uploadResult.error=='1'){
				var errDiv=$('uploadFileError'+i)
				errDiv.setStyle({display:''})
				errDiv.innerHTML=top.uploadResult.error_msg
				
			} else {
				uploading=false
			}
		} else {
			uploading=false
		}
		uploading=false	
}

function uploadAjaxBlockDone(i, u, loader){	
		
		//if(upload) {
			var div = $(loader);
			if(div != null) {
				Effect.Fade(div, { duration: 0.0 });
			}
			//upload = false;
		//}
		
		if(top.uploadResult){
			if(top.uploadResult.error=='1'){
				var errDiv=$('uploadFileError'+i)
				errDiv.setStyle({display:''})
				errDiv.innerHTML=top.uploadResult.error_msg
				
			} else {
				uploading=false
				showAjaxBlock(i, u);
			}
		} else {
			uploading=false
			showAjaxBlock(i, u);
			eval('block'+i+' = false;');
		}
		uploading=false	
}

function uploadAjaxBlock(i, u, loader){

	if(uploadResult){
		uploadResult = null;
	}
	var frm=$('frm'+i)
	if(frm) {
		//set Loader
		var div = $(loader);
		if(div != null) {
			Effect.Appear(div, { duration: 0.0 });
		}
		upload = true;
		frm.submit();	
	}
	
}



function is_email(email){
	var blanks=''*100;
	var sneaky = email.toLowerCase();

	if(email <= blanks)
		return false;
	else if(email.length > 62){
		return false;
	}
	else if(email.charAt(0) == " "){
		return false;
	}
	else if(email.charAt(email.length-1) == " "){
		return false;
	}
	else if(email.indexOf(" ") !=-1){
		return false;
	}

	//CHECK FOR ILLEGAL CHARACTERS 1
	for (i=0; i < email.length; i++){
		var caps = "a".toUpperCase();
		var E = email.substring(i, i + 1);
		if ((E < "0" || "9" < E ) && E != "@" && E !="." && E !="-" && E !="_" && E < caps || "z" < E){
			return false;
		}
	}

	//CHECK FOR ILLEGAL CHARACTERS 2
	if ((email.indexOf('`',0) != -1) || (email.indexOf(String.fromCharCode(94)) != -1) || (email.indexOf(String.fromCharCode(92)) != -1) || (email.indexOf('[',0) != -1) || (email.indexOf(']',0) != -1)){
		return false;
	}

	//GENERAL FORMATING
	if (email.charAt(0) =="."){
		return false;
	}
	else if (email.split('@').length > 2){
		return false;
	}
	else if (email.indexOf ('@',0) == -1){
		return false;
	}
	else if (email.indexOf("@") < 2){
		return false;
	}
	else if (email.charAt(email.length-1) == "@"){
		return false;
	}
	else if (email.indexOf ('.') == -1){
		return false;
	}
	else if (email.indexOf('.',email.indexOf('@')) == -1){
		return false;
	}
	else if (email.lastIndexOf(".")+2 == email.length){
		return false;
	}
	else if (email.charAt(email.length-1) =="."){
		return false;
	}


	//else if (email.substring(email.lastIndexOf("."),email.length).length > 4){
	//	return false;
	//}

	return true
}



function addAjaxBlockItem(i, cat, idx, u){

	u=u.replace('%idx', idx)

	new	Ajax.Request(u, {
		method: 'post',
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			var container=$('blockItems'+i+'_'+cat)
			if(container){

				var newBlockItem=document.createElement("div");
				newBlockItem.innerHTML=qr.innerHTML

				container.appendChild(newBlockItem)
				enableOnlyOneAddBlockItem(i, cat)
			}

			if(qr.js)
				eval(qr.js)

			var viewPortBounds=new PositionViewPortBounds()
			var pos=Position.cumulativeOffset($('block'+i))
			var dim=Element.getDimensions($('block'+i))

			if(pos[1] - 5 < viewPortBounds.top || dim.height > viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i), { offset: -5, duration: 0.5 });
			}
			else if (pos[1] + dim.height + 5 > viewPortBounds.top + viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i), { offset: -(viewPortBounds.height - (dim.height + 5)), duration: 0.5 });
			}
		}
	});
}

function removeBlockItem(i, cat, idx){
	var item=$('blockItem'+i+'_'+cat+'_'+idx)

	if(item){
		item.remove()
		enableOnlyOneAddBlockItem(i, cat)
	}
}

function enableOnlyOneAddBlockItem(i, cat){

	var frm=$('frm'+i)
	var lastUsedBlockItemIdxInput=getLastUsedBlockItemIdxInput(i, cat)

	if(!lastUsedBlockItemIdxInput)
		return

	var lastAddBlock;
	for(var j=0; j<=lastUsedBlockItemIdxInput.value; j++){

		var curAddBlock=$('addBlockItem_'+cat+'_'+i+'_'+j)

		if(curAddBlock){
			lastAddBlock=curAddBlock
			curAddBlock.hide()
		}
	}

	if(lastAddBlock)
		lastAddBlock.show()
}

function addBlockItem(i, cat, u){

	var lastUsedBlockItemIdxInput=getLastUsedBlockItemIdxInput(i, cat)
	if(!lastUsedBlockItemIdxInput)
		return

	lastUsedBlockItemIdxInput.value=parseInt(lastUsedBlockItemIdxInput.value)+1

	addAjaxBlockItem(i, cat, lastUsedBlockItemIdxInput.value, u)
}

function getLastUsedBlockItemIdxInput(i, cat){
	return $('hLastUsedBlockItemIdx_'+cat+'_'+i)
}


var ModalDialog={

	show:
	function(innerHTML){

		//if (!this.modalDialog){
			
			this.positionCenteredMe = this.positionCentered.bind(this)
			this.modalDialog=document.createElement('div')
			this.modalDialog.id='modalDialog'
			this.modalDialog.className='modalDialog'
			
			
			var boxRoundCorner = document.createElement('div');
			boxRoundCorner.className='boxRoundCorner_bgColor_v3';
			
			var boxRoundCorner_top = document.createElement('div');
			boxRoundCorner_top.className='boxRoundCorner_top_bgColor_v3';
			
			var boxRoundCorner_body = document.createElement('div');
			boxRoundCorner_body.className='boxRoundCorner_body_bgColor_v3';
			
			var boxRoundCorner_footer = document.createElement('div');
			boxRoundCorner_footer.className='boxRoundCorner_footer_bgColor_v3';
			
			var boxRoundCorner_bottom = document.createElement('div');
			boxRoundCorner_bottom.className='boxRoundCorner_bottom_bgColor_v3';
			boxRoundCorner_footer.appendChild(boxRoundCorner_bottom);
			
			boxRoundCorner.appendChild(boxRoundCorner_top);
			boxRoundCorner.appendChild(boxRoundCorner_body);
			boxRoundCorner.appendChild(boxRoundCorner_footer);
			
			this.modalDialog.appendChild(boxRoundCorner);
			document.body.appendChild(this.modalDialog);
		//}
	
		boxRoundCorner_body.innerHTML=innerHTML
		//Element.setStyle(this.modalDialog, {visibility:'hidden',display:''})

		this.positionCentered()
		//Element.setStyle(this.modalDialog,{visibility:''})
		Element.show(this.modalDialog);		

		Event.observe(window, 'resize', this.positionCenteredMe)
		Event.observe(window, 'scroll', this.positionCenteredMe)
	},

	hide:
	function(){
		Event.stopObserving(window, 'resize', this.positionCenteredMe)
		Event.stopObserving(window, 'scroll', this.positionCenteredMe)
		document.body.removeChild(this.modalDialog);
	},

	positionCentered:
	function(){

		var viewPortBounds=new PositionViewPortBounds()
		var left=(viewPortBounds.left+((viewPortBounds.width-this.modalDialog.offsetWidth)/2))
		var top=(viewPortBounds.top+((viewPortBounds.height-this.modalDialog.offsetHeight)/2))

		if(left<0)
			left=0
		if(top<0)
			top=0

		Element.setStyle(this.modalDialog, {left:left+'px', top:top+'px'})
	}
}


var ModalDialogAdvanced={

	show:
	function(innerHTML){

		//if (!this.modalDialog){
			
			this.positionCenteredMe = this.positionCentered.bind(this)
			this.ModalDialogAdvanced=document.createElement('div')
			this.ModalDialogAdvanced.id='modalDialogAdvanced'
			this.ModalDialogAdvanced.className='modalDialogAdvanced'
			
			
			var boxRoundCorner = document.createElement('div');
			boxRoundCorner.className='boxRoundCorner_bgColor_v3';
			
			var boxRoundCorner_top = document.createElement('div');
			boxRoundCorner_top.className='boxRoundCorner_top_bgColor_v3';
			
			var boxRoundCorner_body = document.createElement('div');
			boxRoundCorner_body.className='boxRoundCorner_body_bgColor_v3';
			
			var boxRoundCorner_footer = document.createElement('div');
			boxRoundCorner_footer.className='boxRoundCorner_footer_bgColor_v3';
			
			var boxRoundCorner_bottom = document.createElement('div');
			boxRoundCorner_bottom.className='boxRoundCorner_bottom_bgColor_v3';
			boxRoundCorner_footer.appendChild(boxRoundCorner_bottom);
			
			boxRoundCorner.appendChild(boxRoundCorner_top);
			boxRoundCorner.appendChild(boxRoundCorner_body);
			boxRoundCorner.appendChild(boxRoundCorner_footer);
			
			this.ModalDialogAdvanced.appendChild(boxRoundCorner);
			document.body.appendChild(this.ModalDialogAdvanced);
		//}
	
		boxRoundCorner_body.innerHTML=innerHTML
		//Element.setStyle(this.modalDialog, {visibility:'hidden',display:''})

		this.positionCentered()
		//Element.setStyle(this.modalDialog,{visibility:''})
		Element.show(this.ModalDialogAdvanced);		

		//Event.observe(window, 'resize', this.positionCenteredMe)
		//Event.observe(window, 'scroll', this.positionCenteredMe)
	},

	hide:
	function(){
		Event.stopObserving(window, 'resize', this.positionCenteredMe)
		Event.stopObserving(window, 'scroll', this.positionCenteredMe)
		Element.hide(this.ModalDialogAdvanced)
	},

	positionCentered:
	function(){

		var viewPortBounds=new PositionViewPortBounds()
		var left=(viewPortBounds.left+((viewPortBounds.width-this.ModalDialogAdvanced.offsetWidth)/2))
		var top=(viewPortBounds.top+((viewPortBounds.height-this.ModalDialogAdvanced.offsetHeight)/2))

		if(left<0)
			left=0
		if(top<0)
			top=0

		Element.setStyle(this.ModalDialogAdvanced, {left:left+'px', top:top+'px'})
	}
}

var ModalDialogProfilePreview={

	show:
	function(innerHTML){

		if (!this.modalDialogProfilePreview){
			this.positionCenteredMe = this.positionCentered.bind(this)

			this.modalDialogProfilePreview=document.createElement('div')
			this.modalDialogProfilePreview.id='modalDialogProfilePreview'
			this.modalDialogProfilePreview.className='modalDialogProfilePreview'

			document.body.appendChild(this.modalDialogProfilePreview)
		}

		this.modalDialogProfilePreview.innerHTML=innerHTML
		Element.setStyle(this.modalDialogProfilePreview, {visibility:'hidden',display:''})

		this.positionCentered()
		Element.setStyle(this.modalDialogProfilePreview,{visibility:''})		

		Event.observe(window, 'resize', this.positionCenteredMe)
		Event.observe(window, 'scroll', this.positionCenteredMe)
	},

	hide:
	function(){
		Event.stopObserving(window, 'resize', this.positionCenteredMe)
		Event.stopObserving(window, 'scroll', this.positionCenteredMe)
		Element.hide(this.modalDialogProfilePreview)
	},

	positionCentered:
	function(){

		var viewPortBounds=new PositionViewPortBounds()
		var left=(viewPortBounds.left+((viewPortBounds.width-this.modalDialogProfilePreview.offsetWidth)/2))
		//var top=(viewPortBounds.top+((viewPortBounds.height-this.modalDialogProfilePreview.offsetHeight)/2))
		var top=(viewPortBounds.top+164)

		if(left<0)
			left=0
		if(top<0)
			top=0

		Element.setStyle(this.modalDialogProfilePreview, {left:left+'px', top:top+'px'})
	}
}


var ModalDialogShowImpressum={

	show:
	function(innerHTML){

		if (!this.modalDialogShowImpressum){
			this.positionCenteredMe = this.positionCentered.bind(this)

			this.modalDialogShowImpressum=document.createElement('div')
			this.modalDialogShowImpressum.id='modalDialogShowImpressum'
			this.modalDialogShowImpressum.className='modalDialogShowImpressum'

			document.body.appendChild(this.modalDialogShowImpressum)
		}

		this.modalDialogShowImpressum.innerHTML=innerHTML
		Element.setStyle(this.modalDialogShowImpressum, {visibility:'hidden',display:''})

		this.positionCentered()
		Element.setStyle(this.modalDialogShowImpressum,{visibility:''})		

		Event.observe(window, 'resize', this.positionCenteredMe)
		Event.observe(window, 'scroll', this.positionCenteredMe)
	},

	hide:
	function(){
		Event.stopObserving(window, 'resize', this.positionCenteredMe)
		Event.stopObserving(window, 'scroll', this.positionCenteredMe)
		Element.hide(this.modalDialogShowImpressum)
	},

	positionCentered:
	function(){

		var viewPortBounds=new PositionViewPortBounds()
		var left=(viewPortBounds.left+((viewPortBounds.width-this.modalDialogShowImpressum.offsetWidth)/2))
		//var top=(viewPortBounds.top+((viewPortBounds.height-this.modalDialogShowImpressum.offsetHeight)/2))
		var top=(viewPortBounds.top+110)

		if(left<0)
			left=0
		if(top<0)
			top=0

		Element.setStyle(this.modalDialogShowImpressum, {left:left+'px', top:top+'px'})
	}
}

var ModalDialogBg={

	enable:
	function(){

		if(Prototype.Browser.IE){ // if MSIE we hide all drop-downs
			var	selects	= document.getElementsByTagName('select')
			for(i=0; i<selects.length; i++){
				selects[i].style.visibility='hidden'
			}
		}

		if (!this.modalDialogBg) {
			this.reDimMe = this.reDim.bind(this)

			this.modalDialogBg=document.createElement('div')
			this.modalDialogBg.id='modalDialogBg'
			this.modalDialogBg.className='modalDialogBg'

					
			document.body.appendChild(this.modalDialogBg)
			
			
			
		}
		Element.setStyle(this.modalDialogBg, {visibility:'hidden',width:'0',height:'0',display:''})

		this.reDim()
		Element.setStyle(this.modalDialogBg,{visibility:''})		

		Event.observe(window, 'resize', this.reDimMe)
		Event.observe(window, 'scroll', this.reDimMe)
	},

	disable:
	function(){

		Event.stopObserving(window, 'resize', this.reDimMe)
		Event.stopObserving(window, 'scroll', this.reDimMe)
		Element.hide(this.modalDialogBg)

		if(Prototype.Browser.IE){ // if MSIE we show all drop-downs we've hidden in the enable method
			var	selects=document.getElementsByTagName('select')
			for(i=0; i<selects.length; i++){
				selects[i].style.visibility=''
			}
		}
	},

	reDim:
	function(){
		var viewPortBounds=new PositionViewPortBounds()
		Element.setStyle(this.modalDialogBg, {width:(viewPortBounds.left+viewPortBounds.width)+'px',height:(viewPortBounds.top+viewPortBounds.height)+'px'})
	}
}


function showReportForm (i, u) {
	
	new	Ajax.Request(u, {
		method: 'post',
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			top.uploadResult=""
			ModalDialogBg.enable()
			ModalDialog.show(qr.innerHTML)

			if(qr.js)
				eval(qr.js)
		}
	});
}


function showGalSelector (i, u) {
	
	new	Ajax.Request(u, {
		method: 'post',
		onComplete: function(transport){
		
		// the server sends back a JSON String
		var qr
		try{
			eval('qr='+transport.responseText+';')
		}
		catch(e){
			alert('Error:'+e.description)
		}
		/*var elem = $(i.toString());
		elem.innerHTML = qr.innerHTML;
		Element.setStyle(elem, 'display: block;');*/
		ModalDialogBg.enable()
		ModalDialog.show(qr.innerHTML)
				
		if(qr.js)
			eval(qr.js)
	}
	});
}

function closeGalSelector(){
	ModalDialog.hide()
	ModalDialogBg.disable()
}



function showAdvancedSuggestionForm (i, idx, u) {
	
	var frm=$('frm'+i+'_'+idx)
	var tmp=frm.serialize(true)

	new	Ajax.Request(u, {
		method: 'post',
		parameters: tmp,
		onComplete: function(transport){
			
			ModalDialogBg.enable();

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			ModalDialogAdvanced.show(qr.innerHTML);
			
			//$('block'+i+'_'+idx).innerHTML=qr.innerHTML
			if(qr.js) {
				eval(qr.js)
			}
			
		}
	});
}

function saveAdvancedSuggestionForm(i, idx, u) {
	
	ModalDialogAdvanced.hide();
	ModalDialogBg.disable();
	saveAjaxBlockItem(i, idx, u);
		
}

function closeAdvancedSuggestionForm() {
	ModalDialogAdvanced.hide();
	ModalDialogBg.disable();
}

function saveReportForm(u, i){

	var frm=$('frm'+i)
	var tmp=frm.serialize(true)
	
	new	Ajax.Request(u, {
		method: 'post',
		parameters: tmp,
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}
			if(qr.innerHTML.length > 0) {
				closeReportDialog();	
				ModalDialogBg.enable()
				ModalDialog.show(qr.innerHTML);
			} else {
				closeReportDialog();	
			}
			if(qr.js)
				eval(qr.js)

			var viewPortBounds=new PositionViewPortBounds()
			var pos=Position.cumulativeOffset($('block'+i))
			var dim=Element.getDimensions($('block'+i))

			if(pos[1] - 5 < viewPortBounds.top || dim.height > viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i), { offset: -5, duration: 0.5 });
			}
			else if (pos[1] + dim.height + 5 > viewPortBounds.top + viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i), { offset: -(viewPortBounds.height - (dim.height + 5)), duration: 0.5 });
			}

		}
	});
		
}

function closeReportDialog(){
	ModalDialog.hide()
	ModalDialogBg.disable()
}

function editImg(i, u){

	new	Ajax.Request(u, {
		method: 'post',
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			top.uploadResult=""
			ModalDialogBg.enable()
			ModalDialog.show(qr.innerHTML)

			if(qr.js)
				eval(qr.js)
		}
	});
}

function closeEditImgDialog(){
	ModalDialog.hide()
	ModalDialogBg.disable()
}

function saveImg(i){

	if(uploading)
		return

	uploading=true

	var frm=$('frmUploadImg'+i)
	if(frm)
		frm.submit()
}

function uploadDone(i){

	if(top.uploadResult){
		if(top.uploadResult.photo){ // upload ok
			$('img'+i).replace(top.uploadResult.photo)
			closeEditImgDialog()
		}
		else{
			if(top.uploadResult.error=='1'){
				var errDiv=$('uploadImgError'+i)
				errDiv.setStyle({display:''})
				errDiv.innerHTML=top.uploadResult.error_msg
			}
		}
	}

	uploading=false
}

function delImg(i, u, lbl_codeId){

	lblImgDel = lbl.confProfileImgDel
	if(lbl_codeId=='compLogo')
		lblImgDel = lbl.confCompImgDel
		
	if(lbl_codeId=='groupLogo_perSie')
		lblImgDel = lbl.confProfileImgDel_perSie
		
	if(confirm(lblImgDel)){

			new	Ajax.Request(u, {
				method: 'post',
				onComplete: function(transport){
		
					// the server sends back a JSON String
					var qr
					try{
						eval('qr='+transport.responseText+';')
					}
					catch(e){
						alert('Error:'+e.description)
					}
					if(qr.js)
						eval(qr.js)

					if(top.uploadResult){
						if(top.uploadResult.photo){ // upload ok
							$('img'+i).replace(top.uploadResult.photo)
						}
					}
				}
			});
	}
}

function showAjaxBlockItem(i, idx, u){
	
	//alert('sadff23fd :'+u)

	new	Ajax.Request(u, {
		method: 'post',
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			$('block'+i+'_'+idx).innerHTML=qr.innerHTML
			if(qr.js)
				eval(qr.js)

			var viewPortBounds=new PositionViewPortBounds()
			var pos=Position.cumulativeOffset($('block'+i+'_'+idx))
			var dim=Element.getDimensions($('block'+i+'_'+idx))

			if(pos[1] - 5 < viewPortBounds.top || dim.height > viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i+'_'+idx), { offset: -5, duration: 0.5 });
			}
			else if (pos[1] + dim.height + 5 > viewPortBounds.top + viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i+'_'+idx), { offset: -(viewPortBounds.height - (dim.height + 5)), duration: 0.5 });
			}
		}
	});
}

function saveAjaxBlockItem(i, idx, u){
	
	//alert('s34efwf :'+i)

	var frm=$('frm'+i+'_'+idx)
	var tmp=frm.serialize(true)

	new	Ajax.Request(u, {
		method: 'post',
		parameters: tmp,
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			$('block'+i+'_'+idx).innerHTML=qr.innerHTML
			if(qr.js)
				eval(qr.js)

			var viewPortBounds=new PositionViewPortBounds()
			var pos=Position.cumulativeOffset($('block'+i+'_'+idx))
			var dim=Element.getDimensions($('block'+i+'_'+idx))

			if(pos[1] - 5 < viewPortBounds.top || dim.height > viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i+'_'+idx), { offset: -5, duration: 0.5 });
			}
			else if (pos[1] + dim.height + 5 > viewPortBounds.top + viewPortBounds.height) {
				new Effect.ScrollTo($('block'+i+'_'+idx), { offset: -(viewPortBounds.height - (dim.height + 5)), duration: 0.5 });
			}
		}
	});
}

function addAjaxBlockItemV2(i, u){
	
	//alert('2323fd :'+i)

	var lastUsedItem=$('hLastUsedBlockItemIdx'+i)
	lastUsedItem.value=parseInt(lastUsedItem.value)+1
	var idx=lastUsedItem.value

	var itemsContainer=$('blockItemsContainer'+i)
	if(itemsContainer){
		var newBlockItem=document.createElement("div");
		newBlockItem.id='block'+i+'_'+idx

		itemsContainer.insertBefore(newBlockItem, itemsContainer.firstChild)
		showAjaxBlockItem(i, idx, u.replace('#idx', idx))
	}
}

function removeAjaxBlock(i){

	var blockItem=$('block'+i)
	blockItem.remove()
}

function removeAjaxBlockItemDiv(i, idx){

	var blockItem=$('block'+i+'_'+idx)
	blockItem.remove()
}

function delAjaxBlockItem(i, idx, u){

	if(confirm(lbl.confProfileJobDel)){
		showAjaxBlockItem(i, idx, u)
	}
}

function delAjaxBlockItemEdu(i, idx, u){

	if(confirm(lbl.confDelEntry)){
		showAjaxBlockItem(i, idx, u)
	}
}

function hasAtLeastOneNotCheckedChildDS(ds){

	var childDS=eval('allDS.i'+ds+'.c')
	for(var i=0; i<childDS.length; i++){

		var childDSElem=$('ds'+childDS[i])
		if(childDSElem&&!childDSElem.checked)
			return true // found one not checked DS-child
	}

	return false
}

function checkDSParentState(ds){

	// check if the change of the state affects the parent DS
	var pDSId=eval('allDS.i'+ds+'.p')

	if(pDSId!="0"){
		var pDS=eval('allDS.i'+pDSId)
		if(pDS){
			var newState=!hasAtLeastOneNotCheckedChildDS(pDSId)
			setDSState(pDSId, newState, false, false, true)
		}
	}
}

function setDSState(ds, newState, forceState, updateChildren, updateParent){

	var curDS=$('ds'+ds)
	if(!curDS)
		return
	var curState=curDS.checked

	if(!forceState)
		if(curState==newState)
			return

	curDS.checked=newState

	if(updateChildren){
		// all children should have the same state like the parent
		var childDS=eval('allDS.i'+ds+'.c')
		for(var i=0; i<childDS.length; i++){
			setDSState(childDS[i], newState, false, true, false)
		}
	}

	if(updateParent){
		checkDSParentState(ds)
	}
}

function clickDS(ds){
	var curDS=$('ds'+ds)
	var state=curDS.checked

	setDSState(ds, state, true, true, true)
}

function chkFrmContactSearch(){
	chgContactsFilter("")
	return false
}

function chgContactsFilter(whichTrigger){
	var url=pageRawUrl
	
	var criteriaVal=''
	if($('contactsInputId'))
		criteriaVal=$('contactsInputId').value
	
	var tagVal = ""
	if($('tag'))
		tagVal = $('tag').value
	if(tagVal!="")
		noTag=""

	if(whichTrigger == "tagCloud"){
		criteriaVal = ""
		tagVal = encodeURIComponent(tagVal)
		letter = ""
	}
	else if(whichTrigger == "letter"){
		criteriaVal = ""
		tagVal = ""
		letter = encodeURIComponent(letter)
	}
	else if(whichTrigger == "noTag"){
		criteriaVal = ""
		tagVal = ""
		letter = ""
	}
	else{
		criteriaVal = encodeURIComponent(criteriaVal)
		tagVal = encodeURIComponent(tagVal)
		letter = encodeURIComponent(letter)
	}
	
	url=url.replace(encodeURIComponent("#criteria"), criteriaVal)
	url=url.replace(encodeURIComponent("#tag"), tagVal)
	url=url.replace(encodeURIComponent("#letter"), letter)
	url=url.replace(encodeURIComponent("#noTag"), noTag)
	//url=url.replace(encodeURIComponent("#begin"), '0')

	document.location.href=url
}

function ratingMOv(b, i){

	var arStar, selStar;
	eval("arStar=arStar"+b)
	eval("selStar=selStar"+b)

	for(var j=1; j<=i; j++){
		var star=$("star"+b+"_"+j)

		if(!arStar[j])
			arStar[j]=star.src

		star.src=selStar
	}
}
function ratingMOut(b, i){
	var arStar, selStar;
	eval("arStar=arStar"+b)

	for(var j=1; j<=i; j++){
		var star=$("star"+b+"_"+j)
		star.src=arStar[j]
	}
}
function rateArt(b,s){
	var rateUrl;
	eval("rateUrl=rateUrl"+b)

	rateUrl=rateUrl.replace(encodeURIComponent("%star"), s)

	showAjaxBlock(b, rateUrl)
}



function voteMOv(b,i){
	
	eval($('_rateBar_itemsList_'+b).innerHTML);
	eval('var colorItems =colorItems_'+b);
	
	var j= 1;
	while(j<= colorItems.length ){
		var item = $('item_'+b+'_'+j);
		if(j<=i){
			item.style.backgroundColor = colorItems[j-1]['selColor'];
		} else {
			item.style.backgroundColor = colorItems[j-1]['color'];
		}
		j++;
	}	
}


function voteMOutv(b, i){
	var isDoubleClick = $('_quadbar_isDoubleClick_'+b).innerHTML;
	if(isDoubleClick==1){
		$('_quadbar_isDoubleClick_'+b).innerHTML = 0;
		return;
	}
	eval($('_rateBar_itemsList_'+b).innerHTML);
	eval('var colorItems =colorItems_'+b);
	var selItem = $('score_'+b).value;
	for(var j=1; j<=colorItems.length; j++){
		var item = $('item_'+b+'_'+j);
		if(j<=selItem){
			item.src=item.style.backgroundColor = colorItems[j-1]['selColor'];
		} else {
			item.src=item.style.backgroundColor = colorItems[j-1]['color'];
		}
	}
}


function resetVote(b){
	eval($('_rateBar_itemsList_'+b).innerHTML);
	eval('var colorItems =colorItems_'+b);
	$('_quadbar_isDoubleClick_'+b).innerHTML = 1;
	$('score_'+b).value = 0;
	var j=1;
	while(j<=colorItems.length){
		var item = $('item_'+b+'_'+j);
		item.src=item.style.backgroundColor = colorItems[j-1]['color'];
		j++;
	}
}


function rateItem(b,i){
	$('score_'+b).value = i;
}


function displayRateScore(b){

	var actionInfo=$('rateActionInfo'+b)
	actionInfo.style.display='none'

	var scoreInfo=$('scoreInfo'+b)
	scoreInfo.style.display='inline'
}

/**
*
*  UTF-8 data encode / decode
*  http://www.webtoolkit.info/
*
**/

var Utf8 = {

    // public method for url encoding
    encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // public method for url decoding
    decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }

        return string;
    }
}
var select = new Array();

function suggestCompanies(u, b, i, event, callerBlockId){

	
	//alert('sdföjk1 :'+u)
	//alert('sdföjk2 :'+b)
	//alert('sdföjk3 :'+i)
	//alert('sdföjk4 :'+event)
	//alert('sdföjk5 :'+callerBlockId)
	var crit=i.value
	if(crit.length>=4){
		
		if( event.keyCode != 13 
		   && event.keyCode != 40 
		   && event.keyCode != 38
		   && event.keyCode != 9 ){
		
			showAjaxBlock(b, u.replace(encodeURIComponent("%criteria"), crit));
			
			var init = true;
			for( s = 0; s < select.length; s++) {
				if(select[s] == b) {
					init = false;
				}
				
			}		
			if(init == true) {
				var inputComp = $('compInput');
				var blockComp = $('block'+b);
				autoSelectSuggestionTags.init(inputComp, blockComp, 'suggestBlockList' ,'suggestBlockItem', b ); 	
				select.push(b);	
			}
			
		} else if(event.keyCode == 13 || event.keyCode == 9) {
			hideSuggestComp(b);
		}
	}
	else{
		hideSuggestComp(b)
	}

	return true
}

function showSuggestComp(b){
	var suggComp=$('block'+b)
	if(suggComp)
		suggComp.style.display='block'
}

function hideSuggestComp(b){
	var suggComp=$('block'+b)
	if(suggComp)
		suggComp.style.display='none'
}

function useSuggestComp(oComp){

	var frm=$('frm'+oComp.cbId+'_'+oComp.cbIdx)
	if(frm){
		
		if(frm.jobCompId){
			compId=frm.jobCompId;
			compName=frm.jobCompName;
			compUrl=frm.jobCompUrl;
			companySize=frm.optJobCompanySize;
		}
					
		if(frm.ausbildungCompId){
			compId=frm.ausbildungCompId;
			compName=frm.ausbildungCompanyName;
			compUrl=frm.ausbildungCompUrl;
			companySize=frm.optAusbCompanySize;
		}
		
		compId.value=oComp.coId

		compName.value=oComp.coN

		var encUrl=((oComp.coU)?oComp.coU:"http://")
		compUrl.value=encUrl

		var oSzCbo=companySize
		var selSz=0
		if(oComp.coSz){
			selSz=oComp.coSz
		}

		for(var i=0; i<oSzCbo.options.length; i++){
			if(oSzCbo.options[i].value==selSz){
				oSzCbo.selectedIndex=i
				break
			}
		}
	}

	hideSuggestComp(oComp.bId)
}


function suggestUniversities(u, b, i, event, callerBlockId){
	var crit=i.value
	if(crit.length>=4 ){
		if( event.keyCode != 13 
		   && event.keyCode != 40 
		   && event.keyCode != 38
		   && event.keyCode != 9 ){
			showAjaxBlock(b, u.replace(encodeURIComponent("%criteria"), crit))
			var init = true;
			for( s = 0; s < select.length; s++) {
				if(select[s] == b) {
					init = false;
				}
				
			}		
			if(init == true) {
				var inputUni = 	$('uniInput');
				var blockUni = $('block'+b);
				autoSelectSuggestionTags.init(inputUni, blockUni, 'suggestBlockList' ,'suggestBlockItem', b ); 	
				select.push(b);	
			}
				
		} else if(event.keyCode == 13 || event.keyCode == 9) {
			if( event.keyCode == 9) {
				hideSuggestUniv(b);
				$('studiUniUrl'+callerBlockId).focus();
			}
			
			hideSuggestUniv(b);
		}
	}
	else {
		hideSuggestUniv(b);
	}
	
	return true;
}

function showSuggestUniv(b){
	var suggUniv=$('block'+b)
	if(suggUniv)
		suggUniv.style.display='block'
}

function hideSuggestUniv(b){
	var suggUniv=$('block'+b)
	if(suggUniv)
		suggUniv.style.display='none'
}

function useSuggestUniv(oUniv){

	var frm=$('frm'+oUniv.cbId+'_'+oUniv.cbIdx)
	if(frm){
		//frm.studiUnivId.value=oUniv.uniId
		frm.studiUnivName.value=oUniv.uniN
		
		var encUrl=((oUniv.uniU)?oUniv.uniU:"http://")
		frm.studiUniUrl.value=encUrl
	}

	hideSuggestUniv(oUniv.bId)
}

function useAdvancedSuggestUniv(oUniv){

	var frm=$('frm'+oUniv.cbId+'_'+oUniv.cbIdx)
	if(frm){
		//frm.studiUnivId.value=oUniv.uniId
		frm.studiUnivName.value=oUniv.uniN
		
		var encUrl=((oUniv.uniU)?oUniv.uniU:"http://")
		frm.studiUniUrl.value=encUrl
	}

	//hideSuggestUniv(oUniv.bId)
}


function useAdvancedSuggestComp(oComp){
	
	var frm=$('frm'+oComp.cbId+'_'+oComp.cbIdx)
	if(frm){
		//ausbildungCompId
		//jobCompId
		
		if($('jobCompId'))
			frm.jobCompId.value=oComp.compId
		else
			frm.ausbildungCompId.value=oComp.compId
			
		frm.compInput.value=oComp.compN

		var encUrl=((oComp.compU)?oComp.compU:"http://")
		
		//ausbildungCompUrl
		//jobCompUrl
		if($('jobCompUrl'))
			frm.jobCompUrl.value=encUrl
		else
			frm.ausbildungCompUrl.value=encUrl

		if(oComp.compSize){
			dropDown = null
			if($('optJobCompanySize'))
				dropDown = frm.optJobCompanySize
			else
				dropDown = frm.optAusbCompanySize
				
			for (var i =0 ; dropDown.length; i++ ){
				if( dropDown.options[i].value == oComp.compSize){
					dropDown.options[i].selected = true;
				}
			}
		}
	}
}


function suggestFachrichtung(u, b, i, event, callerBlockId){

	var crit=i.value
	if(crit.length>=4){
		if( event.keyCode != 13 
		   && event.keyCode != 40 
		   && event.keyCode != 38
		   && event.keyCode != 9 ){
			
			showAjaxBlock(b, u.replace(encodeURIComponent("%criteria"), crit));
			
			var init = true;
			for( s = 0; s < select.length; s++) {
				if(select[s] == b) {
					init = false;
				}
				
			}		
			if(init == true) {
				var inputUni = 	$('fbInput');
				var blockUni = $('block'+b);
				autoSelectSuggestionTags.init(inputUni, blockUni, 'suggestBlockList' ,'suggestBlockItem', b ); 	
				select.push(b);	
			}
			
		
		}else if(event.keyCode == 13 || event.keyCode == 9) {
			hideSuggestUniv(b);
		}
	}
	else{
		hideSuggestFachr(b)
	}
	
	return true
}



function showSuggestFachr(b){
	var suggFachr=$('block'+b)
	if(suggFachr)
		suggFachr.style.display='block'
}

function hideSuggestFachr(b){
	var suggFachr=$('block'+b)
	if(suggFachr)
		suggFachr.style.display='none'
}

function useSuggestFachr(oFachr){

	var frm=$('frm'+oFachr.cbId+'_'+oFachr.cbIdx)
	if(frm){
		//frm.studiFachrId.value=oFachr.fachrId
		frm.studiFachrichtung.value=oFachr.fachrN
	}

	hideSuggestFachr(oFachr.bId)
}


function useAdvancedSuggestFachr(oFachr){

	var frm=$('frm'+oFachr.cbId+'_'+oFachr.cbIdx)
	if(frm){
		//frm.studiFachrId.value=oFachr.fachrId
		frm.studiFachrichtung.value=oFachr.fachrN
	}

	//hideSuggestUniv(oUniv.bId)
}



function suggestStudiengang(u, b, i, event, callerBlockId){

	var crit=i.value
	if(crit.length>=4){
		
		if( event.keyCode != 13 
		   && event.keyCode != 40 
		   && event.keyCode != 38
		   && event.keyCode != 9 ){
			
		
			showAjaxBlock(b, u.replace(encodeURIComponent("%criteria"), crit))
			
			var init = true;
			for( s = 0; s < select.length; s++) {
				if(select[s] == b) {
					init = false;
				}
				
			}		
			if(init == true) {
				var inputSt = 	$('stInput');
				var blockSt = $('block'+b);
				autoSelectSuggestionTags.init(inputSt, blockSt, 'suggestBlockList' ,'suggestBlockItem', b ); 	
				select.push(b);	
			}	
		
		} else if(event.keyCode == 13 || event.keyCode == 9) {
			hideSuggestStudg(b);
		}
		
	}
	else{
		hideSuggestStudg(b)
	}
	
	return true
}

function showSuggestStudg(b){
	var suggStudg=$('block'+b)
	if(suggStudg)
		suggStudg.style.display='block'
}

function hideSuggestStudg(b){
	var suggStudg=$('block'+b)
	if(suggStudg)
		suggStudg.style.display='none'
}

function useSuggestStudg(oStudg){

	var frm=$('frm'+oStudg.cbId+'_'+oStudg.cbIdx)
	if(frm){
		//frm.studiStudgId.value=oStudg.studgId
		frm.studiStudiengang.value=oStudg.studgN
	}

	hideSuggestStudg(oStudg.bId)
}


function useAdvancedSuggestStudg(oStudg){

	var frm=$('frm'+oStudg.cbId+'_'+oStudg.cbIdx)
	if(frm){
		//frm.studiStudgId.value=oStudg.studgId
		frm.studiStudiengang.value=oStudg.studgN
	}

	//hideSuggestStudg(oStudg.bId)
}
var sugesstionArray = new Array();
var autoSelectSuggestionTags = {

	init:
	function (input, blockId, suggestBlockList, suggestionItemClass , b ) {
		
		
		Event.observe(input, 'keyup', handleKeyUp);
		Event.observe(input, 'keydown', handleArrowKeys);
	
	
		var block = blockId;

		
		function handleKeyUp(event)
		{
			if (event.keyCode == 13) {
				
				var cursor = getCursor();
	
				if (cursor != -1 && cursor < block.firstChild.childNodes[1].childNodes.length)
				{
					if(sugesstionArray != null && sugesstionArray[cursor].type == 'uni') {
							useSuggestUniv(deserializeJSONObjFromServer(sugesstionArray[cursor].sc)); 
					}
					if(sugesstionArray != null  && sugesstionArray[cursor].type == 'fb') {
						useSuggestFachr(deserializeJSONObjFromServer(sugesstionArray[cursor].sc)); 
					}	
					if(sugesstionArray != null  && sugesstionArray[cursor].type == 'st') {
						useSuggestStudg(deserializeJSONObjFromServer(sugesstionArray[cursor].sc)); 
					}	
					if(sugesstionArray != null  && sugesstionArray[cursor].type == 'comp') {
						useSuggestComp(deserializeJSONObjFromServer(sugesstionArray[cursor].sc)); 
					}	
					if(sugesstionArray != null  && sugesstionArray[cursor].type == 'tag') {
						useSuggestTag(deserializeJSONObjFromServer(sugesstionArray[cursor].sc)); 
					}		
				}
			}
		}
		
		function handleArrowKeys(event)
		{
			try
			{
				if ( ( (event.keyCode == 40) || (event.keyCode == 38) )) //up - down
				{
					var cursor = getCursor();
					
					if (event.keyCode == 40)
					{
						if (cursor == block.firstChild.childNodes[1].childNodes.length) {
							block.firstChild.childNodes[1].childNodes[0].className = suggestionItemClass+'_selected'; 
						} else if (cursor < block.firstChild.childNodes[1].childNodes.length - 1) {
							block.firstChild.childNodes[1].childNodes[cursor].className = suggestionItemClass;
							block.firstChild.childNodes[1].childNodes[cursor + 1].className = suggestionItemClass+'_selected';
						}
					}
					else
					{
						if (cursor > 0)
						{
							block.firstChild.childNodes[1].childNodes[cursor].className = suggestionItemClass;
							block.firstChild.childNodes[1].childNodes[cursor - 1].className = suggestionItemClass+'_selected';
						}
					}
	
					
				} 
				if(event.keyCode == 9) {
					hideSuggestUniv(b);
				}
				
			}
			catch (e) { }
			
		}
		
		
		
		function getCursor()
		{
			if (block.firstChild.childNodes[1].innerHTML.length == 0)
				return -1;
			for (var i = 0; i < block.firstChild.childNodes[1].childNodes.length ; i++) {
					if (block.firstChild.childNodes[1].childNodes[i].className == suggestionItemClass+'_selected') {
							return i;
						
					}
			}

			return block.firstChild.childNodes[1].childNodes.length;
		}
	}
}


function suggestTag(u, b, i, event, callerBlockId){

	var crit=i.value
	if(crit.length>=3){
		
		if( event.keyCode != 13 
		   && event.keyCode != 40 
		   && event.keyCode != 38
		   && event.keyCode != 9 ){
			showAjaxBlock(b, u.replace(encodeURIComponent("%criteria"), crit));
			
			var init = true;
			for( s = 0; s < select.length; s++) {
				if(select[s] == b) {
					init = false;
				}
				
			}		
			if(init == true) {
				var inputTag = 	$('tagInput');
				var blockTag = $('block'+b);
				autoSelectSuggestionTags.init(inputTag, blockTag, 'suggestBlockList' ,'suggestBlockItem', b ); 	
				select.push(b);	
			}	
			
		} else if(event.keyCode == 13 || event.keyCode == 9) {
			hideSuggestTag(b);
		}
	}
	else{
		hideSuggestTag(b)
	}

	return true
}

function showSuggestTag(b){
	var suggTag=$('block'+b)
	if(suggTag)
		suggTag.style.display='block'
}
function hideSuggestTag(b){
	var suggTag=$('block'+b)
	if(suggTag)
		suggTag.style.display='none'
}

function useSuggestTag(oTag){

	var frm=$('frm'+oTag.cbId+'_'+oTag.cbIdx)
	if(frm){

		if(frm.jobBranche){
			frm.jobBranche.value=decodeURIComponent(oTag.name)
		}
		
		if(oTag.fieldName=='studiFachrichtung'){
			frm.studiFachrichtung.value=decodeURIComponent(oTag.name)
		}
		if(oTag.fieldName=='studiStudiengang'){
			frm.studiStudiengang.value=decodeURIComponent(oTag.name)
		}
		if(oTag.fieldName=='ausbildungBranche'){
			frm.ausbildungBranche.value=decodeURIComponent(oTag.name)
		}
	}

	hideSuggestTag(oTag.bId)
}


function hideMainSearchResults(b){
	var mainSearchRes=$('block'+b)
	if(mainSearchRes){
		mainSearchRes.innerHTML=''
		mainSearchRes.style.display='none'
	}
}

function showMainSearchResults(b, u, i, e){
	
	
		var mainSearchRes=$('block'+b)
		if(mainSearchRes){
			
			var crit=$('mainSearchCriteria').value
			if(crit.length > 2) {
				u=u.replace(encodeURIComponent("#crit"), encodeURIComponent(crit))
				mainSearchRes.style.display='block'
				showAjaxBlock(b, u)
			}
		}
	
}

function disableEnterKey(e)
{
     var key;

     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox

     if(key == 13) {
          return false;
     }
     else {
          return true;
     }
}


function deserializeJSONObjFromServer(serializedJSONObj){
	return eval('('+decode64(serializedJSONObj)+')')
}

function newMagArtComment(u){

	new	Ajax.Request(u, {
		method: 'post',
		onComplete: function(transport){

			// the server sends back a JSON String
			var qr
			try{
				eval('qr='+transport.responseText+';')
			}
			catch(e){
				alert('Error:'+e.description)
			}

			var commCont=$('divCommentList')
			commCont.innerHTML=qr.innerHTML+commCont.innerHTML
			if(qr.js)
				eval(qr.js)
		}
	});
}

function getRnd(len){

	var rnd=""
	for(var i=0; i<len; i++){
		rnd+=Math.round(Math.random()*10).toString()
	}
	
	return rnd
}

function showEdit(id) {
	Effect.BlindDown( id, { duration: 1.0 });
}

function hideEdit(id) {
	Effect.BlindUp( id, { duration: 1.0 });
}

function serializeMuiltiSelectInput(selectId, hiddenInputId){
	var select = $(selectId);
	if(select) {
		var serialStr = "";
		  for (i = 0; i < select.length; i++) {
   			 if (select.options[i].selected == true) {
   			 	serialStr = serialStr + select.options[i].value + ';'
   			 } 
		}
		var hiddenInput =  $(hiddenInputId);
		hiddenInput.value = serialStr;
	}
}

/*function trimWS(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}*/


function trim(sStr) {
	return sStr.replace(/^\s+/, "").replace(/\s+$/, "");
}


function switchActive(currentElement, parentElementId){
	var el = $(parentElementId).immediateDescendants();
	var count = el.length;
	var ret = -1;
	for(var i = 0; i < count; i++) {
		el[i].style.fontWeight = "normal";
	}				
	
	$(currentElement).style.fontWeight = "bold";
}