/**
 *
 * LCMS and its source-code is licensed under the LGPL.
 * You may copy, adapt, and redistribute this file for commercial or non-commercial use.
 * When copying, adapting, or redistributing this document in keeping with the guidelines above,
 * you are required to provide proper attribution to champion open systems.
 * If you reproduce or distribute the document without making any substantive modifications to its content,
 * please use the following attribution line:
 *
 * Copyright 2007 champion open systems (http://www.chaosys.ch) All rights reserved.
 *
 */

/**
* 
* Functions concerning the imagedisplay.
*
*/


/** 
*
* Zoom-Section.
*
*/

/**
* Zooming the image by Slider-Widget.
*/
function zoomSlider( value ) {
	try{
		percX = calculatePercLeft(50);
		percY = calculatePercTop(50);
		newWith = value * (pictureMaxWidth/100);
		if( newWith < pictureMinWidth ){
			newWith = pictureMinWidth;
		}
		setViewObjectWidth(newWith);
		adjustView(percX, percY);
	}catch(err){}
}


/** 
* Move to Center and show maximal width of picture.
*/
function zoomToOverview( width ) {
		x = 0;
		y = 0;
		goToPosition(width, x, y);
		centerView();
}


/** 
* Always track the target while zooming.
*/
function adjustView(percLeft, percTop) {
	viewObjectElement = document.getElementById('viewObject');
	xmax = parseFloat(getViewObjectWidth());
	ymax = parseFloat(getViewObjectHeight());
	
	xcenter = xmax / 100 * percLeft;
	ycenter = ymax / 100 * percTop;
	
	resultX = (-1 * xcenter)+(getObjectivX() / 2);
	resultY = (-1 * ycenter)+(getObjectivY() / 2);
	
	viewObjectElement.style.left = resultX + "px";
	viewObjectElement.style.top = resultY + "px";
}


/** 
*
* Image-Section.
*
*/

/** 
* function to set the navigationScreen and viewObject image.
*/
function setWebmicImage(id, path, width) {
        removeAllLabels();
        removeAllQuestions();
        document.getElementById('labelClosedText').value="";
        document.getElementById('labelOpenedText').value="";
        dijit.byId("zoomsliderId").setValue(0);
        viewObjectElement = document.getElementById('viewObject');
        // custom url.
        if ( id == 'customURL'){
                url = path;
                viewObjectElement.src = url;
                document.getElementById('navigationScreenImage').src = url;
                zoomToOverview( width );
        // selection from radio-list.
        } else {
        		labelsUrl=webappHost + path + "xml/" + id + ".xml";
        		importXML(labelsUrl);
        		setTimeout("importQuestions()",1000);
                imagestring = webappHost + path + "graphics/" +id + ".jpg";
                viewObjectElement.src = imagestring;
                document.getElementById('navigationScreenImage').src = imagestring;
                zoomToOverview( width );
        }
}

function importQuestions(){
	currentQuestionId=currentQuestionId.substring(1,currentQuestionId.length-1);
    importQuestionXML(webappHost + "/questions/" + currentQuestionId + ".xml");
}

/** 
*
* Label-Layer-Section.
*
*/

/** 
* Set visibility of Label Layer 'hidden'.
*/
function hideLabelLayer(){
	labelLayerElement = document.getElementById('labelLayer');
	useLabelLayer = false;
	labelLayerElement.style.visibility='hidden';
}

/** 
* Set visibility of Label Layer 'visible'.
*/
function showLabelLayer(){
	useLabelLayer = true;
	setLabelLayer();
	labelLayerElement = document.getElementById('labelLayer');
	labelLayerElement.style.visibility='visible';
}

/** 
* Show and update or hide the labelLayer and viewObject.
*/
function setLabelLayer(){
	if(useLabelLayer){
		var labelLayerElement = document.getElementById('labelLayer');
		var objectivElement = document.getElementById("objectiv");
		var viewObjectElement = document.getElementById("viewObject");
		if (labelLayerElement != null) {
			labelLayerElement.style.width = getViewObjectWidth()+"px";
			labelLayerElement.style.height = getViewObjectHeight()+"px";
			labelLayerElement.style.top = viewObjectElement.style.top;
			labelLayerElement.style.left = viewObjectElement.style.left;
		}else {
			var newElement = document.createElement("div");
			newElement.id = "labelLayer";
			newElement.style.width = getViewObjectWidth()+"px";
			newElement.style.height = getViewObjectHeight()+"px";
			newElement.style.top = viewObjectElement.style.top;
			newElement.style.left = viewObjectElement.style.left;
			newElement.onmousemove = function(evt){
				moveDisplayImageByLabelLayer();
				performGlobalUpdate();
			}
			m3 = new dojo.dnd.Moveable(newElement);
			objectivElement.appendChild(newElement);
		}
	}
}

/** 
* Listener implementation: if labelLayer is turned on, it rules the navigation.
*/
function moveDisplayImageByLabelLayer(){
	if(useLabelLayer){
		var labelLayerElement = document.getElementById('labelLayer');
		var objectivElement = document.getElementById("objectiv");
		var viewObjectElement = document.getElementById("viewObject");
		viewObjectElement.style.top = labelLayerElement.style.top;
		viewObjectElement.style.left = labelLayerElement.style.left;
	}
}

