var dropWidth_unzoomed = 110;   	// Breite der ungezoomten (Haupt-)Tropfen
var dropHeight_unzoomed = 105;		// Hoehe der ungezoomten (Haupt-)Tropfen
var glanceWidth_small = 33;
var glanceHeight_small = 25;
var scaling_factor = 0.8;			// Faktor, um den die Tropfen im Dock verkleinert werden in Bezug zu den "Haupttropfen"
var dockDropWidth_unzoomed = dropWidth_unzoomed*scaling_factor;   	// Breite der ungezoomten Dock-Tropfen
var dockDropHeight_unzoomed = dropHeight_unzoomed*scaling_factor;	// Hoehe der ungezoomten Dock-Tropfen
var imgPath = "media/";				
var zoomstep= 0.07;					// bei jedem Vergroesserungs-Step wird der Tropfen um 'zoomstep' vergroessert
var speedup = 0.001;				// Beschleunigung der Tropfen, je höher, desto schneller 
var zoomspeed = "5";				// ms, fuer setTimeout,  default: 5
var zoomfactor ="2";				// zoom endet bei tropfengroess == dropWidth_unzoomed * zoomfactor
var drop_symbol_x_pos = 0;			// X-Position des Symbols bzw. Icons im ungezoomten Tropfen
var drop_symbol_y_pos = 0;			// Y-Position des Symbols bzw. Icons im ungezoomten Tropfen
var distance0 = 5;					//comment
var distance1 = 10;
var distance2 = 15;
var distance3 = 20;
var distance4 = 25;
var distance_min = distance4+1;		// minimaler Abstand der zwischen 2 Tropfen bestehen darf, ohne dass sie sich voneinander entfernen
var dock_drop_distance = 15;		// (Außen-)Abstand von 2 Tropfen im Dock (Menu-Leiste unten)
var dock_drop_distance0 = 2;
var dock_drop_distance1 = 4;
var dock_drop_distance2 = 6;
var dock_drop_distance3 = 8;
var dock_drop_distance4 = 10;
var dock_drop_distance_min = dock_drop_distance4+1;
var currentZoomingDrop; 			// wird in Drop.checkPosition benötigt, um Endlosschleifen zu verhindern





/*returns: array (!) of elements with class 'className' in div 'divID'  */
function getElementsByClassName_inDiv(className, divID) {
    var muster = new RegExp("(^| )" + className + "($| )");
    var alles_in_div = document.getElementById(divID).getElementsByTagName("*");
    var gefunden = new Array();
    var i;
    for (i=0; i < alles_in_div.length; i++) {
        if (alles_in_div[i] && alles_in_div[i].className && alles_in_div[i].className != "") {
            if (alles_in_div[i].className.match(muster))
                gefunden[gefunden.length] = alles_in_div[i];
        }
    }
    return gefunden;
}


/*generiert eine ganze Zufallszahl zwischen 0 und 'bereich'   */
function zufall(bereich){
         var bereich;
         var zahl = Math.round(Math.random()/(1/bereich));
         return zahl;
}

//berechnet den  Abstand zwischen 2 Tropfen-Mitten
function abstand(drop1,drop2){
	var arrCenterDrop1= centerCoordinates(drop1);
	var arrCenterDrop2= centerCoordinates(drop2);	
	var dist_x = Math.abs(arrCenterDrop1[0]-arrCenterDrop2[0]);
	var dist_y= Math.abs(arrCenterDrop1[1]-arrCenterDrop2[1]);
	return parseInt(Math.sqrt(square(dist_x)+square(dist_y)));
}

function square(num) {
    num = parseInt(num);
    return (Math.pow(num, 2));
}

/* gibt die Koordinaten der beiden Ecken, die den kürzesten Abstand bilden, zurück */
/*function getShortestEdges(drop1,drop2){
	var min=10000;
	var x_drop1=0;
	var x_drop2=0;
	var y_drop1=0;
	var y_drop2=0;
	var arrTmp2Dim = getArrayWithEdges(drop1,drop2);
	var arrNodes1 = arrTmp2Dim[0];
	var arrNodes2 = arrTmp2Dim[1];
	for(u=0;u<arrNodes1.length;u++){
		for(z=0;z<arrNodes2.length;z++){
			var dist_x = Math.abs(arrNodes1[u]['x']-arrNodes2[z]['x']);
			var dist_y= Math.abs(arrNodes1[u]['y']-arrNodes2[z]['y']);
			var pyth = parseInt(Math.sqrt(square(dist_x)+square(dist_y)));
			if( pyth < min){
				 min = pyth;
				 x_drop1 = arrNodes1[u]['x'];
				 y_drop1 = arrNodes1[u]['y'];
				 x_drop2 = arrNodes2[z]['x'];
				 y_drop2 = arrNodes2[z]['y'];
			}
		}
	}
	var arrReturn = new Array();
	arrReturn[0] = x_drop1;
	arrReturn[1] = y_drop1;
	arrReturn[2] = x_drop2;
	arrReturn[3] = y_drop2;
	return arrReturn;
}


function getArrayWithEdges(drop1,drop2){
	var arrEdges = new Array();
		var arrNodes1 = new Array();
	arrNodes1[0] = new Array();
	arrNodes1[0]['x'] = parseInt(drop1.div.style.left);
	arrNodes1[0]['y'] = parseInt(drop1.div.style.top);
	arrNodes1[1] = new Array();
	arrNodes1[1]['x'] = parseInt(drop1.div.style.left)+parseInt(drop1.div.style.width);
	arrNodes1[1]['y'] = parseInt(drop1.div.style.top);
	arrNodes1[2] = new Array();
	arrNodes1[2]['x'] = parseInt(drop1.div.style.left);
	arrNodes1[2]['y'] = parseInt(drop1.div.style.top)+parseInt(drop1.div.style.height);
	arrNodes1[3] = new Array();
	arrNodes1[3]['x'] = parseInt(drop1.div.style.left)+parseInt(drop1.div.style.width);
	arrNodes1[3]['y'] = parseInt(drop1.div.style.top)+parseInt(drop1.div.style.height);
		var arrNodes2 = new Array();
	arrNodes2[0] = new Array();
	arrNodes2[0]['x'] = parseInt(drop2.div.style.left);
	arrNodes2[0]['y'] = parseInt(drop2.div.style.top);
	arrNodes2[1] = new Array();
	arrNodes2[1]['x'] = parseInt(drop2.div.style.left)+parseInt(drop2.div.style.width);
	arrNodes2[1]['y'] = parseInt(drop2.div.style.top);
	arrNodes2[2] = new Array();
	arrNodes2[2]['x'] = parseInt(drop2.div.style.left);
	arrNodes2[2]['y'] = parseInt(drop2.div.style.top)+parseInt(drop2.div.style.height);
	arrNodes2[3] = new Array();
	arrNodes2[3]['x'] = parseInt(drop2.div.style.left)+parseInt(drop2.div.style.width);
	arrNodes2[3]['y'] = parseInt(drop2.div.style.top)+parseInt(drop2.div.style.height);
	
	arrEdges[0] = arrNodes1;
	arrEdges[1] = arrNodes2;
	return arrEdges;
}*/

function centerCoordinates(drop){
	var arrTmp = new Array();
	arrTmp[0] = parseInt(drop.div.style.left)+(parseInt(drop.div.style.width)/2); //x
	arrTmp[1] = parseInt(drop.div.style.top)+(parseInt(drop.div.style.height)/2); //y
	return arrTmp; 
}
/*
function getNumberOfZoomSteps(){
	var count=0;
	var size = dropWidth_unzoomed;
	var obergrenze = (dropWidth_unzoomed*zoomfactor);
	while(size<obergrenze){
		count++;
		size=size+(size*zoomstep);
	}
	return count;
}*/

/*ermittelt den Außenabstand zw. 2 Tropfen, d.h. den Abstand von Tropfenperipherie zu Tropfenperipherie (nicht von Mitte zu Mitte)*/
function getOuterDistance(drop1,drop2){
	var centerDistance = abstand(drop1,drop2);
	var innerDistDrop1 = parseInt(parseInt(drop1.div.style.width)/2); //Radius
	var innerDistDrop2 = parseInt(parseInt(drop2.div.style.width)/2); //Radius
	var outerDistance = centerDistance - innerDistDrop1 - innerDistDrop2;
	return outerDistance;	
}

/* ermittelt die Anzahl der Pixel, um die ein Tropfen verdrängt wird */
function getPixelToMove(drop1,drop2){
	var dist = getOuterDistance(drop1,drop2);
	if(dist < distance0) return 5;
	else
		if(dist < distance1) return 4;
		else
			if(dist < distance2) return 3;
			else
				if(dist < distance3) return 2;
				else
					if(dist < distance4) return 1;
					else	
						return 0;
}
/* ermittelt die Anzahl der Pixel, um die ein Tropfen verdrängt wird */
function getPixelToMoveDockDrop(drop1,drop2){
	var dist = getOuterDistance(drop1,drop2);
	if(dist < dock_drop_distance0) return 5;
	else
		if(dist < dock_drop_distance1) return 4;
		else
			if(dist < dock_drop_distance2) return 3;
			else
				if(dist < dock_drop_distance3) return 2;
				else
					if(dist < dock_drop_distance4) return 1;
					else	
						return 0;
}

//für die großen "normalen" Tropfen:
function getNumberOfZoomOutSteps(drop){	
	var count=0;
	var drop_size = parseInt(drop.div.style.width);
	var i =drop_size;
	while(i>=dropWidth_unzoomed){
		i = i -(i*zoomstep);
		count++;
	}
	return count;
}

//für die kleinen Dock-Drop-Tropfen:
function getNumberOfDockDropZoomOutSteps(drop){	
	var count=0;
	var drop_size = parseInt(drop.div.style.width);
	var i =drop_size;
	while(i>=dockDropWidth_unzoomed){
		i = i -(i*zoomstep);
		count++;
	}
	return count;
}

// gibt an, ob ein Tropfen ein Mini Tropfen ist (laesst sich nicht aufzoomen) oder ein normaler Tropfen ist
function isMiniDrop(drop){
	return (drop.div.getElementsByTagName('img').length==1);
}

function isAtOrigPos(drop){
	return (parseInt(drop.div.style.left) == drop.orig_x_pos);
}

