/* 
		Ergonet : Conducta : Member's Area Gui Controller
		Copyright Ergonet Feb 2008
*/
var xmlhttp;
domainPrefix = "";
var e;
// var animatePageActive=false;
// var animateActive=false;
var dragPicLocked=false;
var tempX = 0
var tempY = 0
var startX = 100;
var startY = 50;
var gridX = '';
var gridY = '';
var gridXInc = 115;
var gridYInc = 145;
var typDivHeight='135px';
// ---------
var animationTimeoutId;
var animationFrameDuration=10;
var animateActive=false;
var offsetX=0;
var offsetY=0;
var currentDiv=null;
var displacedDiv=null;
var divList='';
var divHandleList='';
var divArray = new Array();
var divNameArray = new Array();
var divHandleNameArray = new Array();
var divHandleArray = new Array();
var dragDivStartPositionX = 0;
var dragDivStartPositionY = 0;
var mode="pictureEditor"; // or "skillsEditor"
var reSelectAstlid=0;

function flashup(d,t) {
	var element = document.getElementById(d);
	if (element != null) {
		element.innerHTML=t;
		str = "flashup('"+d+"','')"
		window.setTimeout(str,1000);
	}
}

function initArtImages() {
	divNameArray = divList.split(','); 
	divHandleNameArray = divHandleList.split(',');
	var n=divArray.length;
	divArray.splice(0,n);
	for(var i=0; i<divNameArray.length; i++) {
		var obj=document.getElementById(divNameArray[i]);
		if (obj != null) {
			divArray.push(obj);
		}
	}
	//alert('divList: '+divList);
}

function bringToFront(divName) {
	//alert('bring to front: '+divName);
	var clickedDiv = document.getElementById(divName);
	var biggestNumber=0;
	if (clickedDiv != null) {
		for(var i=0; i<divArray.length; i++) {
			var sortVal = parseInt((parseInt(divArray[i].style.top)-startY) / gridYInc);
			if (sortVal > biggestNumber) {
				biggestNumber = sortVal;
			}
			divArray[i].style.zIndex = parseInt(sortVal);
		}
		biggestNumber++;
		clickedDiv.style.zIndex = biggestNumber;
	}
}
function dragPic(divName,e,clickedDiv) {
	if (!dragPicLocked) {
		mode="pictureEditor";
		bringToFront(divName);
    	drag(divName,e,clickedDiv);
	}
}
function drag(divName,e,clickedDiv) {
    displacedDiv=null;
	var divObj=document.getElementById(divName);
	if (divObj != null) {
		currentDiv = divObj;
	} else {
		alert("can't find "+divName);
	}
	switch (e) {
		case 'start':
			clickedDiv.style.zIndex = 99;
			dragDivStartPositionX = parseInt(currentDiv.style.left);
			dragDivStartPositionY = parseInt(currentDiv.style.top);
			offsetX = tempX-dragDivStartPositionX;
			offsetY = tempY-dragDivStartPositionY;
			currentDiv.style.zIndex = 99;
			currentDiv.style.borderColor = "#0000FF";
			for(var i=0; i<divArray.length; i++) {
				if (divArray[i] != currentDiv) {
					divArray[i].style.zIndex = 0;
				} 
			}						
			// allow the ongoing mouse movement monitor to also move the div
			animateActive=true;
		break;
		case 'stop':
			
			// stop the drag
			animateActive=false;
			for(var i=0; i<divArray.length; i++) {
				divArray[i].style.borderColor = "#CCCCCC";
			}
			//displace(); // -------------------------
		
			var currentDivTop = parseInt(currentDiv.style.top);
			currentDivTop -= startY;
			var closestIncY=0;
			var closestValY=999;
			var lastMeasureY=999;
			var gridYArray=gridY.split(',');
			
			var currentDivLeft = parseInt(currentDiv.style.left);
			currentDivLeft -= startX;
			var closestIncX=0;
			var closestValX=999;
			var lastMeasureX=999;
			var gridXArray=gridX.split(',');
			displacedDiv='';
			
			// Find the grid line that the dragged div is closest too at drop time
			for (i=0; i<gridYArray.length; i++) {
				gridYArray[i]=parseInt(gridYArray[i]);
				measureY=Math.abs((currentDivTop+(gridYInc/2))-gridYArray[i]);
				if (measureY<lastMeasureY) { 
					closestIncY=i; 
					closestValY=gridYArray[i];
					lastMeasureY=measureY;
				}
			}
			// place the dragged div 
			if (!animateActive) {
				topVal = parseInt(closestValY);
				currentDiv.style.top=topVal+'px';
			}
			// Find the grid line that the dragged div is closest too at drop time
			for (i=0; i<gridXArray.length; i++) {
				gridXArray[i]=parseInt(gridXArray[i]);
				measureX=Math.abs((currentDivLeft+(gridXInc/2))-gridXArray[i]);
				if (measureX<lastMeasureX) { 
					closestIncX=i; 
					closestValX=gridXArray[i];
					lastMeasureX=measureX;
				}
			}
			// place the dragged div 
			if (!animateActive) {
				leftVal = parseInt(closestValX);
				currentDiv.style.left=leftVal+'px';
			}
			
			// if there is something in that slot displace to the start location of the dragged div
			var moveDiv = null;
			for(var i=0; i<divArray.length; i++) {
				var topVal = parseInt(divArray[i].style.top);
				//topVal -= startY;
				var leftVal = parseInt(divArray[i].style.left);
			   // leftVal -= startX;
				if ((closestValY == topVal) && (closestValX == leftVal) && (divArray[i] != currentDiv)) {
					moveDiv=divArray[i];
				}
				
			}
//                    alert(moveDiv.id);
			if ((moveDiv !=null) && (moveDiv != currentDiv) && !animateActive) { 
				moveDiv.style.left=dragDivStartPositionX+'px';
				moveDiv.style.top=dragDivStartPositionY+'px';
				displacedDiv=moveDiv;
			}
			if (moveDiv == currentDiv && moveDiv !=null && !animateActive) {
				currentDiv.style.top=dragDivStartPositionY+'px';
				currentDiv.style.left=dragDivStartPositionX+'px';
			}
			// ----------------------------------------
			if (displacedDiv !=null) {
				var objectNumber = divName.substr(3);
				var fileidObjectName = 'fileid'+objectNumber;
				var fileidObject = document.getElementById(fileidObjectName);
				
				var fileidDragged = 0;
				var fileidDisplaced = 0;
				var aid=0;
				var bid=0;
				var peopleid=0;
				var fileListIdDragged=0;
				var fileListIdDisplaced=0;
				var sortOrderDragged=0;
				var sortOrderDisplaced=0;
				var positionDragged='';
				var positionDisplaced='';
				
				var aidField = document.getElementById('aidImage');
				var bidField = document.getElementById('bidImage');
				var peopleidField = document.getElementById('peopleidImage');
				
				if (aidField != null) {
					aid=aidField.value;
				}
				
				if (bidField != null) {
					bid=bidField.value;
				}
				
				if (peopleidField != null) {
					peopleid = peopleidField.value;
				}
				
				if (fileidObject != null) {
					fileidDragged = parseInt(fileidObject.value);
					var filelistidObjectName='filelistid'+objectNumber;
					var obj = document.getElementById(filelistidObjectName);
					if (obj != null && obj.value>0) { fileListIdDragged=obj.value; }
					var sortorderObjectName='sortorder'+objectNumber;
					var obj = document.getElementById(sortorderObjectName);
					if (obj != null && obj.value>0) { sortOrderDragged=obj.value; }
					var positionObjectName='position'+objectNumber;
					var obj = document.getElementById(positionObjectName);
					if (obj != null) { positionDragged=obj.value; }           
					// now the displaced      
					if (displacedDiv != null && displacedDiv != '') {
						//alert("displacedDiv: "+displacedDiv);
						objectNumber = displacedDiv.id.substr(3);
						fileidObjectName = 'fileid'+objectNumber;
						fileidObject = document.getElementById(fileidObjectName);
						if (fileidObject != null) {
							fileidDisplaced = parseInt(fileidObject.value);
							//alert("dragged Image Record Id: "+fileidDragged+", displaced Image Record id: "+fileidDisplaced);
							var filelistidObjectName='filelistid'+objectNumber;
							var obj = document.getElementById(filelistidObjectName);
							if (obj != null && obj.value>0) { fileListIdDisplaced=obj.value; }
							var sortorderObjectName='sortorder'+objectNumber;
							var obj = document.getElementById(sortorderObjectName);
							if (obj != null && obj.value>0) { sortOrderDisplaced=obj.value; }
							var positionObjectName='position'+objectNumber;
							var obj = document.getElementById(positionObjectName);
							if (obj != null) { positionDisplaced=obj.value; }
							
						} else {
							alert("System Error! Displaced image object not found: "+fileidObjectName);
						}
					}
				} else {
					alert("System Error! Dragged image object not found: "+fileidObjectName);
				}
				if (isNaN(fileidDragged)) { fileidDragged=0; }
				if (isNaN(fileidDisplaced)) { fileidDisplaced=0; }
				//alert('fileidDragged:' +fileidDragged+', fileidDisplaced: '+fileidDisplaced);
				//if (fileidDragged >0 && fileidDisplaced >0) {
					/* now we have the fileids assemble the submission to server and go */
					if (positionDragged !='' && positionDisplaced != '' && (positionDragged != positionDisplaced)) {
						//alert("dragged: "+positionDragged+" Displaced: "+positionDisplaced);
						var pa=new Array(); // parameter Array
						pa.push("func=saveArtBndImageLayout");
						if (aid) { 
							setFieldValue('aidImage',aid);
							pa.push("aidImage="+aid); }
						if (bid) { 
							setFieldValue('bidImage',bid);
							pa.push("bidImage="+bid); }
						if (peopleid) { 
							setFieldValue('peopleImage',peopleid);
							pa.push("peopleidImage="+peopleid); }
						if (fileidDragged) { 
							setFieldValue('fileidDragged',fileidDragged);
							pa.push("fileidDragged="+fileidDragged); }
						if (fileidDisplaced) { 
							setFieldValue('fileidDisplaced',fileidDisplaced);
							pa.push("fileidDisplaced="+fileidDisplaced); }
						if (fileListIdDragged) { 
							setFieldValue('fileListIdDragged',fileListIdDragged);
							pa.push("fileListIdDragged="+fileListIdDragged); }
						if (fileListIdDisplaced) { 
							setFieldValue('fileListIdDisplaced',fileListIdDisplaced);
							pa.push("fileListIdDisplaced="+fileListIdDisplaced); }
						if (sortOrderDragged) { 
							setFieldValue('sortOrderDragged',sortOrderDragged);
							pa.push("sortOrderDragged="+sortOrderDragged); }
						if (sortOrderDisplaced) { 
							setFieldValue('sortOrderDisplaced',sortOrderDisplaced);
							pa.push("sortOrderDisplaced="+sortOrderDisplaced); }
						if (positionDragged) { 
							setFieldValue('positionDragged',positionDragged);
							pa.push("positionDragged="+positionDragged); }
						if (positionDisplaced) { 
							setFieldValue('positionDisplaced',positionDisplaced);
							pa.push("positionDisplaced="+positionDisplaced); }
						var params=pa.join("&");
						var ariaFilePath="/conf/dataEditMembersImageOrderUpdate.php";
						var type="membersImageEditor";
	//                            alert(params);
						fileidDragged=0;
						fileidDisplaced=0;
						lock('dragPic',true);
						postData(ariaFilePath,type,params);
					} else {
	//                           alert("System Error! Dragged: "+fileidDragged+", Displaced: "+fileidDisplaced);
					} // end if fileid !- displaced
					
		//		} else {
	//                       alert("System Error! Dragged: "+fileidDragged+", Displaced: "+fileidDisplaced);
				//}
			} // end if displacedDiv != null
	
		break;
	}
}
function lock(subj,bool) {
	switch(subj) {
		case 'dragPic':
			dragPicLocked=bool;
			if (bool) {
				flashup('report','locked');
			} else {
				flashup('report','open');
			}
		break;
		case 'debug':
			dragPicLocked=bool;
		break;
	}
}
function setFieldValue(id,val) {
	if (id) {
		var obj=document.getElementById(id);
		if (obj!=null) {
			obj.value=val;
		}
	}
}
function moveAllUpAfterX() {
	// if the div has been dropped way off the right, after the last div in the divHandleArray then move it straight up to the position after last.
	var rightOfList=0;
	for(var j=0; j<divHandleArray.length; j++) {
		var leftVal = parseInt(divHandleArray[j].style.left);
		leftVal-=startX;
		if (leftVal > rightOfList && currentDiv!=divHandleArray[j]) {
			rightOfList=leftVal;
		}
	}
	rightOfList += gridXInc;
	if ((parseInt(currentDiv.style.left)-startX) > rightOfList) {
		currentDiv.style.left = (rightOfList+startX) + 'px';
	}
	// check there are no empties in the grid - if there are move to fill
	var gridXArray=gridX.split(',');
	for (i=0; i<gridXArray.length; i++) {
		gridXArray[i]=parseInt(gridXArray[i]);
		var isOccupied = false;
		for(var j=0; j<divHandleArray.length; j++) {
			var leftVal = parseInt(divHandleArray[j].style.left);
			leftVal-=startX;
			if (leftVal == gridXArray[i]) {
				isOccupied = true;
			}
		}
		if (!isOccupied) {
			for(var j=0; j<divHandleArray.length; j++) {
				var leftVal = parseInt(divHandleArray[j].style.left);
				leftVal-=startX;
				if (leftVal > gridXArray[i]) {
					divHandleArray[j].style.left = (leftVal-gridXInc+startX)+'px';
				}
			}
		}
	}
}
function zIndexHandler() {
	// step through each Tab in the layout order - rather than the array order
	var currentDivFound=false;
	currentDiv.style.zIndex=99;
	var depth=0;
	var gridXArray=gridX.split(',');
	for (i=0; i<gridXArray.length; i++) {
		for(var j=0; j<divHandleArray.length; j++) {
			var leftVal = parseInt(divHandleArray[j].style.left);
			leftVal -= startX;
			if (leftVal==gridXArray[i]) {
				if (divHandleArray[j] == currentDiv) {
					currentDivFound=true;
//					divHandleArray[j].style.textAlign='center';
				} else {
					if (!currentDivFound) {
						divHandleArray[j].style.zIndex = (depth+50);
						depth++;
//						divHandleArray[j].style.textAlign='left';
					} else {
						divHandleArray[j].style.zIndex = (depth+50);
						depth--;
//						divHandleArray[j].style.textAlign='right';
					}//end if ! currentDivFound
				}// end if current div
			}//end if leftVal==gridxarray[i]
		} // end re-arrange tabs
	} // end run through the grid
}
function animateArtistDataInterface() {
	if (currentDiv != null) {
		switch(mode) {
			case "skillsEditor":
				currentDiv.style.left = (tempX-offsetX)+'px';
				//currentDiv.style.top = (tempY-offsetY)+'px';
//				zIndexHandler();
			break;
			case "pictureEditor":
				currentDiv.style.left = (tempX-offsetX)+'px';
				currentDiv.style.top = (tempY-offsetY)+'px';
//				zIndexHandler();
		
				//displace(dragDiv);
				//moveAllUpAfterY(dragDiv);
			break;
		}
	}
}
function viewImage(path,width,height) {
	var maxWidth=640;
	var maxHeight=410;
	var galleryObj = document.getElementById("gallery");
	if (galleryObj != null) {
		gos=galleryObj.style;
		gos.visibility='visible';
		gos.position='absolute';
		gos.top='50px';
		gos.left='20px';
		gos.overflow='hidden';
		gos.backgroundColor='#000000';
		gos.zIndex=81;
		/*
		gos.width=(Math.min(width,maxWidth)+10)+'px';
		gos.height=(Math.min(height,maxHeight)+10)+'px';
		*/
		gos.width='490px';
		gos.height='390px';
		w=width;
		h=height;
		if (w>maxWidth) {
			var factor=maxWidth / w;
			w = w*factor;
			h = h*factor;
		}
		if (h>maxHeight) {
			var factor=maxHeight / h;
			h = h*factor;
			w = w*factor;
		}
		var htmString = "<div style='width:100%; text-align:center; padding:0px; margin:0px;'><a href='javascript:closeImage()'><img src='"+path+"' width='"+w+"' height='"+h+"'/></a></div>";
		galleryObj.innerHTML=htmString;
	} else {
		alert('gallery not found');
	}
}
function closeImage() {
	var galleryObj = document.getElementById("gallery");
	if (galleryObj != null) {
		gos=galleryObj.style;
		gos.visibility='hidden';
		gos.backgroundColor=null;
		gos.zIndex=0;
		galleryObj.innerHTML="";
		gos.left="0px";
		gos.top="0px";
		gos.width="0px";
		gos.height="0px";
	}
}
