var openedRef = new Array();

function openImage(url, params){
	params.no_cache=1; //todo.. 
	params.type=1; 
	var id=params.puid;
	if(openedRef.indexOf(id) == -1){
		openedRef.push(id);
		//params.status = "open";
	}else{
		openedRef = openedRef.without(id);
		//params.status = "close";
	}
	new Ajax.Request("/"+url, {
		method:'post',
		parameters:params,
		onComplete: function(response) {
			//alert(response.responseText);
			$("i"+params.puid).innerHTML = response.responseText;
			if(params.action == "open"){
				//var height = $("i"+id).getHeight();
				new Effect.ScrollTo("i"+id, {offset:-50});
			}else{
					
			}
			// Set Floats
			setFloats();
		},
		onFailure: function(response) {
			//alert("Fehler");
		},
		onSuccess: function(response) {
			//alert("OK");
		}
	});
}

var F=new NetvClientDetect();
function openFlash(url, params){
	var lang=params.lang;
	var id=params.puid;
	if(openedRef.indexOf(id) == -1){
		openedRef.push(id);
		//params.status = "open";
	}else{
		openedRef = openedRef.without(id);
		//params.status = "close";
	}
	
	var imgar=params.imglist.split(',');
	$("i"+params.puid).innerHTML=F.showflash({
 src: 'typo3conf/ext/netvclientlist/index_'+lang+'.swf',
 id:'index', // must be unique
 width:params.width,
 height:'355',
 bgcolor:'#FFFFFF',
 scale:'noscale', //exactfit,noborder,noscale
 align:'top', //top,bottom
 salign:'TL', //TL,BL,TR,BR
 quality:'high', //high,medium,low
 menu:'false',
 play:'true',
 loop:'false',
 wmode:'window', //window,opaque,transparent
 minversion: 7,
 flashparams:{
  url:url,
  puid:params.puid,
  listImg:params.imglist,
  folder:'./'
 },
 badbrowsers:[
 ],
 alt:{
  mode:'html', //redirect, jfunc, image, html
  value:'<a href="javascript:openImage(\''+url+'\',{puid:'+params.puid+',action:\'close\',type:1});"><img src="'+imgar[0]+'" /></a>'
 },
 mode:'return' // write, return
});
$("i"+params.puid).innerHTML+=params.caption;
new Effect.ScrollTo("i"+params.puid, {offset:-50});
setFloats();
}

function setFloats(){
	// Delete Every Break
	var breaks = $$('#imageContainer br');
	breaks.each(function(item){
		item.remove();					 
	});
	// Maximum Width
	var totalWidth = $("imageContainer").getWidth();
	// Iteration over Opened Elements
	openedRef.each(function(item){
		var element = "i"+item;
		// Get Left Offset
		var firstElLeft=(navigator.appName=="Microsoft Internet Explorer") ? $(element).offsetLeft : $(element).offsetLeft-61;
		// Get Dimensions 
		// Todo: Rekursive Loop
		var firstElWidth = $(element).getWidth()+20;
		
		var nextElWidth=($(element).next() != undefined) ? $(element).next().getWidth()+20 : '0';
		if($(element).next() != undefined){
			var nextNextElWidth = ($(element).next().next() != undefined) ? $(element).next().next().getWidth()+20 : '0';
			if($(element).next().next() != undefined){
				var nextNextNextElWidth = ($(element).next().next().next() != undefined) ? $(element).next().next().next().getWidth()+20 : '0';
				if($(element).next().next().next() != undefined){
					var nextNextNextNextElWidth = ($(element).next().next().next().next() != undefined) ? $(element).next().next().next().next().getWidth()+20 : '0';
					if($(element).next().next().next().next() != undefined){
						var nextNextNextNextNextElWidth = ($(element).next().next().next().next().next() != undefined) ? $(element).next().next().next().next().next().getWidth()+20 : '0';
					}
				}
			}
		}
		
		// Set Breaks
		if(firstElLeft+firstElWidth+nextElWidth > totalWidth){
			new Insertion.After($(element), "<br />");
		}else if(firstElLeft+firstElWidth+nextElWidth+nextNextElWidth > totalWidth){
			new Insertion.After($(element).next(), "<br />");
		}else if(firstElLeft+firstElWidth+nextElWidth+nextNextElWidth+nextNextNextElWidth > totalWidth){
			new Insertion.After($(element).next().next(), "<br />");
		}else if(firstElLeft+firstElWidth+nextElWidth+nextNextElWidth+nextNextNextElWidth+nextNextNextNextElWidth > totalWidth){
			new Insertion.After($(element).next().next().next(), "<br />");
		}else if(firstElLeft+firstElWidth+nextElWidth+nextNextElWidth+nextNextNextElWidth+nextNextNextNextElWidth+nextNextNextNextNextElWidth > totalWidth){
			new Insertion.After($(element).next().next().next().next(), "<br />");
		}
	});
}

// Sort Array Numerical
function Numsort (a, b) {
  return a - b;
}