var dropWidth_unzoomed = 110;   	// Breite der ungezoomten (Haupt-)Tropfen
var dropHeight_unzoomed = 105;		// Hoehe der ungezoomten (Haupt-)Tropfen
var dropWidth_full = 230;
var dropHeight_full = 215;
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 hoeher, 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 = 20;		// (Aussen-)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 benoetigt, 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 = parseInt(Math.abs(arrCenterDrop1[0]-arrCenterDrop2[0]));
	var dist_y= parseInt(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));
}

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 Aussenabstand 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 verdraengt 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 verdraengt 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;
}

//fuer die grossen "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;
}

//fuer 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);
}

