//Konstr.
function Dock(div_dock_id) {

		//------- Objekt-Attribute:  ---------
	//this.x = parseInt(x);	// X-Koordinate des gesamten Docks (d.h. auch x-Koor. des ersten Tropfens) 
	//this.y = parseInt(y); // Y-Koordinate        - - - -
	this.id = div_dock_id;
	this.arrDockDrops = new Array(); // Array zur Speicherung der Tropfen im Dock
	

	
	//------- Objekt-Methoden:  ---------
	//this.notifyToMove;
	this.getAllDockDrops = getAllDockDrops;
	this.initDock = initDock;
	this.positionAllDockDrops = positionAllDockDrops;
	this.notifyOtherDockDrops = notifyOtherDockDrops;
	this.notifyOtherDockDropsToComeBack = notifyOtherDockDropsToComeBack;

	//------- Initialisierungen:  ---------
	this.initDock(this.id);
	//alle Dock-Tropfen wieder sichtbar machen: (werden VOR body.onload im css mit display:none unsichtbar gemacht
	for (var i=0;i<this.arrDockDrops.length;i++){
		this.arrDockDrops[i].div.style.display="block";
	}
}



/*  Die init-Methode erstellt die Tropfen, positioniert sie, usw...
 *  dazu wird sie dann im Konstruktor der DropCollection aufgerufen, damit beim erstellen eines neuen 
 * 	DropCollection-Objekts bereits alles initialisiert wurde.
 */
function initDock(div_dock_id){
	this.getAllDockDrops(div_dock_id);
	this.positionAllDockDrops();
}

/* holt sich alle Tropfen-Divs in 'div_dock_id' und erstellt
*  für jedes gefundene Tropfen-Div ein Tropfen-Objekt und speichert dieses im Tropfen-Array
*/
function getAllDockDrops(div_dock_id){
	var arrDockDropDivs = getElementsByClassName_inDiv("dockDrop",div_dock_id);
	for(var i=0;i<arrDockDropDivs.length;i++){
		var newDockDrop = new DockDrop(arrDockDropDivs[i].getAttribute("id"));		
		newDockDrop.dock = this; //dem neu angelegten Tropfen eine Referenz auf dieses Dock (this) mitgeben
		this.arrDockDrops[this.arrDockDrops.length] = newDockDrop; //neuen Tropfen hinten in Tropfen-Array einfügen
	}
}

/*  positioniert alle Dock-Tropfen der Reihenfolge nach, 
 */
function positionAllDockDrops(){
	var outer_distance=0;
	for(var j=0;j<this.arrDockDrops.length;j++){
		if(j>0) { outer_distance = dock_drop_distance;} //damit ganz vorne kein zu großer (ungewollter) abstand
		this.arrDockDrops[j].setXandY_D((j*outer_distance)+(j*dropWidth_unzoomed*scaling_factor),0);
		this.arrDockDrops[j].initDockDropTransparentDiv(); // das transparente Div muss nun auch nochmal neu positioniert werden
		this.arrDockDrops[j].setOrigXandYPosition((j*outer_distance)+(j*dropWidth_unzoomed*scaling_factor),0); //dem Tropfen Attribut mitgeben, damit er seine ursprüngliche x und y Position kennt
		this.arrDockDrops[j].transparent_div.href = arrDockDropUrl[j + 1];
	}	
}

/* iteriert alle Tropfen im Tropfen-Array durch und ruft auf jedem Tropfen die eigene
 * Objektmethode 'checkPosition()' auf und übergibt ihr 'changing_drop'. Die Tropfen
 * (bzw. die Methode 'checkPosition()') kümmern sich dann selbst darum, ob sie sich verschieben müssen
 */
function notifyOtherDockDrops(changing_drop){
	for(var s=0;s < this.arrDockDrops.length;s++){
		this.arrDockDrops[s].x_range=-1;  //wird gebraucht in 'moveBack', wird hier zurückgesetzt, weil x_range nur für zoomOut benötigt wird
		this.arrDockDrops[s].y_range=-1;
		
		if(this.arrDockDrops[s] != changing_drop){ //soll sich natürlich nicht selber überprüfen...
			this.arrDockDrops[s].checkDockDropPosition(changing_drop);
		}
	}	
}

function notifyOtherDockDropsToComeBack(changing_drop){
	for (var i =0; i<this.arrDockDrops.length;i++){
		if(this.arrDockDrops[i] != changing_drop) //soll sich natürlich nicht selber überprüfen...
			this.arrDockDrops[i].moveDockDropBack(changing_drop);
	}
}





function createDock(div_dock_id){
	var dock = new Dock(div_dock_id);
}

