/******************************************************************************
* albControlRuntime.js
*******************************************************************************

*******************************************************************************
*                                                                             *
* Copyright 2006									                          *
*                                                                             *
******************************************************************************/
/*
function updatePrivateImage(id, init)
{
	var hidden = document.getElementById(id+"_h");
	var image = document.getElementById(id+"_i");
	var tempoImage = document.getElementById(id+"_ih");
	var input = document.getElementById(id+"_f");
	var labelInput = document.getElementById(id+"_l");
	var para = document.getElementById(id+"_p");
	var descriptionInput = document.getElementById(id+"_d");
	if(hidden == null || image == null || input == null || tempoImage == null) return;
	var w = parseInt(hidden.getAttribute("W"), 10);
	var oid = parseInt(hidden.value, 10);
	var h = parseInt(hidden.getAttribute("H"), 10);
	var swidth = parseInt(hidden.getAttribute("SWIDTH"), 10);
	var sheight = parseInt(hidden.getAttribute("SHEIGHT"), 10);
	var label = hidden.getAttribute("SLABEL");
	var description = hidden.getAttribute("SDESCRIPTION");
	var swidth;
	var sheight;
	var sourceUrl;
	var resizedUrl;
	if(init) {
		sourceUrl = hidden.getAttribute("SURL");
		var size = computeImageSize(w, h, swidth, sheight);
		resizedUrl = "./imageProvider.asp?private_image=" + oid + "&ew=" + size[0] + "&eh=" + size[1];
	} else {
		hidden.value = "";
		tempoImage.style.display = "inline";
		resizedUrl = sourceUrl = tempoImage.src = input.value;
		sourceUrl = sourceUrl.replace(/\\/g, "/");
	}
	if(sourceUrl != null && sourceUrl != ""&& sourceUrl.substr(sourceUrl.length -1) != "/") {
		image.src = resizedUrl;
		image.className = "previewImage";
		var pos = sourceUrl.lastIndexOf("/");
		var filename = sourceUrl.substr(pos+1);
		if(labelInput != null) labelInput.value = label;
		if(descriptionInput != null) descriptionInput.value = description;
		if(para != null) para.innerHTML = filename;
		if(!init) return;
		resizeImagePreview(image, w, h, swidth, sheight);
		var title = filename + "\n" + swidth + " x " + sheight;
		image.title = title;
	} else {
		image.src = "./iso_icons/empty.gif";
		image.style.width = "0px";
		image.style.height = "0px";
		image.className = "missingPreviewImage";
		var title = objThesaurus.translate("alb53");
		image.title = title;
		if(labelInput != null) labelInput.value = "";
		if(descriptionInput != null) descriptionInput.value = "";
	}
}
*/

function computeImageSize(w, h, swidth, sheight)
{
	if(w * sheight > h * swidth) {
		if(sheight < h) {
			h = sheight;
			w = swidth;
		} else {
			w = Math.round(h * swidth/sheight);
		}
	} else {
		if(swidth < w) {
			w = swidth;
			h = sheight;
		} else {
			h = Math.round(w * sheight/swidth);
		}
	}
	return new Array(w,h);
}

function resizeImagePreview(image, w, h, swidth, sheight)
{
	var size = computeImageSize(w, h, swidth, sheight);
	var width = size[0];
	var height = size[1];
	if(!isNaN(width)) image.style.width = width + "px";
	if(!isNaN(height)) image.style.height = height + "px";
}


function removePrivateResource(id, isResource)
{
	var hiddenInput = document.getElementById(id+"_h");
	if (hiddenInput != null) hiddenInput.value = "";
	var labelInput = document.getElementById(id+"_l");
	var descriptionInput = document.getElementById(id+"_d");	
	var fileInput = document.getElementById(id+"_f");	
	if (labelInput != null) labelInput.value = "";
	if (descriptionInput != null) descriptionInput.value = "";
	resetPrivateResourcePreview(id, isResource);
}

function resetPrivateResourcePreview(id, isResource)
{
	var image = document.getElementById(id+"_i");
	var para = document.getElementById(id+"_p");
	image.src = "./iso_icons/empty.gif";
	image.className = "missingPreviewResource";
	image.style.width = "0px";
	image.style.height = "0px";
	var title = isResource == false ? objThesaurus.translate("alb53"):objThesaurus.translate("alb54");
	image.title = title;
	para.innerHTML = title;
	para.className = "smallDesc";
}

function updatePrivateResourcePreviewAsDocument(id)
{
	var image = document.getElementById(id+"_i");
	image.src = "./iso_icons/download.png";
	image.className = "previewResource";
	image.style.width = "16px";
	image.style.height = "16px";
}

function updatePrivateResourcePreviewAsUpload(id)
{
	var image = document.getElementById(id+"_i");
	var para = document.getElementById(id+"_p");
	image.src = "./iso_icons/empty.gif";
	image.className = "previewResource";
	image.style.width = "0px";
	image.style.height = "0px";
	var parentDiv = image.parentNode;
	parentDiv.style.height = "0px";
	parentDiv.style.lineHeight = "0px";
	var title = "L'apercu sera disponible une fois le fichier transféré sur le serveur ";
	image.title = title;
	para.innerHTML = title;
	para.className = "";
}

function updatePrivateResource(id)
{
	var hidden = document.getElementById(id + "_h");
	if(hidden == null) hidden = document.getElementById(id);
	var image = document.getElementById(id+"_i");
	var tempoImage = document.getElementById(id+"_ih");
	var input = document.getElementById(id+"_f");
	var para = document.getElementById(id+"_p");
	var inputw = document.getElementById(id+"_w");
	var inputh = document.getElementById(id+"_h");
	hidden.value = "";
	updatePrivateResourcePreviewAsUpload(id);
}








function PrivateResourceControl(id, formManager, name, map)
{
	GenericControl.call(this, id, formManager, name, map);
	this._isResource = map.isResource;
	this.initPrivateResource();
}

PrivateResourceControl.prototype = new GenericControl();


PrivateResourceControl.prototype.isChecked = function()
{
	return false;
}

PrivateResourceControl.prototype.isDisabled = function()
{
	var input = document.getElementById(this._id);
	if(input == null) {
		return;
	}
	return input.disabled;
}

PrivateResourceControl.prototype.isReadOnly = function()
{
	var input = document.getElementById(this._id);
	if(input == null) {
		return;
	}
	return input.readOnly;
}

PrivateResourceControl.prototype.checkValue = function()
{
	var input = document.getElementById(this._id);
	if(input == null) {
		return true;
	}
	if(input.value != "") {
		return true;
	}
	var input = document.getElementById(this._id + "_h");
	if(input == null) {
		return true;
	}
	if(input.value != "") {
		return true;
	}
	return false;
}

PrivateResourceControl.prototype.checkTitleValue = function()
{
	var input = document.getElementById(this._id + "_l");
	if(input == null) {
		return true;
	}
	if(input.value != "") {
		return true;
	}
	return false;
}
PrivateResourceControl.prototype.checkDescriptionValue = function()
{
	var input = document.getElementById(this._id + "_d");
	if(input == null) {
		return true;
	}
	if(input.value != "") {
		return true;
	}
	return false;
}

PrivateResourceControl.prototype.onSubmit = function(formManager)
{
	if(!GenericControl.prototype.onSubmit.call(this, formManager)) return false;
	this._reason = "";
	var failurePara = document.getElementById(this._id + "_failure_l");
	var status = true;
	if(this.checkValue() && !this.checkTitleValue()) {
		if(failurePara != null) {
			var message = failurePara.innerHTML;
			if(this._reason != "") this._reason += "; ";
			this._reason += message;
			failurePara.style.display = "block";
			status = false;
		}
	} else {
		if(failurePara != null) failurePara.style.display = "none";
	}
	var failurePara = document.getElementById(this._id + "_failure_d");
	if(!this.checkDescriptionValue()) {
		var failurePara = document.getElementById(this._id + "_failure_d");
		if(failurePara != null) {
			var message = failurePara.innerHTML;
			if(this._reason != "") this._reason += "; ";
			this._reason += message;
			failurePara.style.display = "block";
			status = false;
		}
	} else {
		if(failurePara != null) failurePara.style.display = "none";
	}
	return status;
}


PrivateResourceControl.prototype.onloadImagePreview = function(id)
{
	var id = this._id;
	var hidden = document.getElementById(id+"_h");
	var image = document.getElementById(id+"_i");
	var tempoImage = document.getElementById(id+"_ih");
	var inputw = document.getElementById(id+"_w");
	var inputh = document.getElementById(id+"_h");
	var w = parseInt(hidden.getAttribute("W"), 10);
	var h = parseInt(hidden.getAttribute("H"), 10);
	tempoImage.style.display = "inline";	
	var swidth = tempoImage.width;
	var sheight = tempoImage.height;
	tempoImage.style.display = "none";
	if (inputw != null) inputw.value = swidth + "";
	if (inputh != null) inputh.value = sheight + "";
	image.src = tempoImage.src;
	image.className = "previewImage";
	resizeImagePreview(image, w, h, swidth, sheight);
	image.title += "\n" + swidth + " x " + sheight;
}

PrivateResourceControl.prototype.initPrivateResource = function()
{
	var id = this._id;
	var isResource = this._isResource == "true";
	var hidden = document.getElementById(id + "_h");
	if(hidden == null) hidden = document.getElementById(id);
	var sourceUrl = hidden.getAttribute("SURL");
	sourceUrl = sourceUrl.replace(/\/\//g, "/").replace(/^.\//, "");
	var oid = parseInt(hidden.value, 10);
	if(isNaN(oid)) oid = null;
	if (oid != null)
	{	
		var image = document.getElementById(id+"_i");
		var para = document.getElementById(id+"_p");
		var labelInput = document.getElementById(id+"_l");
		var descriptionInput = document.getElementById(id+"_d");	
		var swidth = parseInt(hidden.getAttribute("SWIDTH"), 10);
		var sheight = parseInt(hidden.getAttribute("SHEIGHT"), 10);
		var label = hidden.getAttribute("SLABEL");
		var description = hidden.getAttribute("SDESCRIPTION");
		var pos = sourceUrl.lastIndexOf("/");
		var filename = sourceUrl.substr(pos+1);
		image.title = filename;
		para.innerHTML = filename;
		if (labelInput != null) labelInput.value = label;
		if (descriptionInput != null) descriptionInput.value = description;
		if (!isNaN(swidth) && !isNaN(sheight))
		{
			var w = parseInt(hidden.getAttribute("W"), 10);
			var h = parseInt(hidden.getAttribute("H"), 10);
			var size = computeImageSize(w, h, swidth, sheight);
			var oid = parseInt(hidden.value, 10);
			var resizedUrl = "./imageProvider.asp?private_image=" + oid + "&ew=" + size[0] + "&eh=" + size[1];
			image.src = fixUrl(resizedUrl);
			image.className = "previewImage";
			resizeImagePreview(image, w, h, swidth, sheight);
			image.title += "\n" + swidth + " x " + sheight;
		}
		else
			updatePrivateResourcePreviewAsDocument(id);
	}
	else
		resetPrivateResourcePreview(id, isResource);
}

//
// ------------------------------------- class HiddenControl
//
function AlbImageControl(id, formManager, name, map)
{
	GenericControl.call(this, id, formManager, name, map);
	this._isResource = map.isResource;
	this.installImage();
}

AlbImageControl.prototype = new GenericControl();

AlbImageControl.prototype.getMainInput = function()
{
	var id = this._id;
	var hidden = document.getElementById(id + "_h");
	if(hidden == null) hidden = document.getElementById(id);
	return hidden;
}

AlbImageControl.prototype.installImage = function()
{
	var id = this._id;
	var isResource = this._isResource == "true";
	var hidden = document.getElementById(id + "_h");
	if(hidden == null) hidden = document.getElementById(id);
	var image = document.getElementById(id+"_i");
	var para = document.getElementById(id+"_p");
	if(hidden == null || image == null) return;
	var sourceUrl;
	var w = parseInt(hidden.getAttribute("W"), 10);
	var h = parseInt(hidden.getAttribute("H"), 10);
	var url = hidden.getAttribute("SURL")
	var oid = parseInt(hidden.value, 10);
	if(!isNaN(oid)) {
		sourceUrl = imageProviderUrl + "?image=" + oid + "&ew=" + w + "&eh=" + h;
	}
	var label = hidden.getAttribute("SLABEL");
	var size = hidden.getAttribute("SSIZE");
	if(size != null) {
		size = Math.floor(parseInt(size, 10) / 1000);
	}
	if(isResource) {
		if(sourceUrl != null && sourceUrl != "" && sourceUrl.substr(sourceUrl.length -1) != "/") {
			image.src ="./iso_icons/odf_button_big_document.png";
			resizeImagePreview(image, w, h, 75, 100);
			image.className = "previewImage";
			var pos = url.lastIndexOf("/");
			var filename = url.substr(pos+1);
			var title = objThesaurus.translate("alb56",filename) + "\n";
			if(label != "") title +=  objThesaurus.translate("alb57",label) + "\n";
			if(size != 0) title +=  objThesaurus.translate("alb59",""+size);
			para.innerHTML = label + " --- " + filename;
			image.title = title;
		} else {
			image.src = "./iso_icons/empty.gif";
			image.style.width = "0px";
			image.style.height = "0px";
			image.className = "missingPreviewImage";
			var title = objThesaurus.translate("alb54");
			image.title = title;
			para.innerHTML = title;
		}
	
	} else {
		var swidth = parseInt(hidden.getAttribute("SWIDTH"), 10);
		var sheight = parseInt(hidden.getAttribute("SHEIGHT"), 10);
		if(sourceUrl != null && sourceUrl != "" && sourceUrl.substr(sourceUrl.length -1) != "/") {
			image.src = sourceUrl;
			image.className = "previewImage";
			var pos = url.lastIndexOf("/");
			var filename = url.substr(pos+1);
			resizeImagePreview(image, w, h, swidth, sheight);
			var title = objThesaurus.translate("alb56",filename) + "\n";
			if(label != "") title +=  objThesaurus.translate("alb57",label) + "\n";
			if(size != 0) title +=  objThesaurus.translate("alb59",""+size);			
			image.title = title;
			para.innerHTML = label + " --- " + filename;;
		} else {
			image.src = "./iso_icons/empty.gif";
			image.style.width = "0px";
			image.style.height = "0px";
			image.className = "missingPreviewImage";
			var title = objThesaurus.translate("alb53");
			image.title = title;
			para.innerHTML = title;
		}
	}
	
}

AlbImageControl.prototype.browseImage = function()
{
	var id = this._id;
	var url = this._props.url;
	albumCurrentControlId = id;
	var hiddenInput = document.getElementById(id + "_h");
	if(hiddenInput == null) hiddenInput = document.getElementById(id);
	var oid = hiddenInput.value;
	var width = "800";
	var height = "600";
	window.albumDialogClient = new AlbumDialogClientForAlbumControl(id, oid);
	showModalWindow(url, "albumDialog", width, height, window.albumDialogClient);
}

AlbImageControl.prototype.removeImage = function()
{
	var id = this._id;
	var hidden = document.getElementById(id+"_h");
	if(hidden == null) hidden = document.getElementById(id);
	var image = document.getElementById(id+"_i");
	var para = document.getElementById(id+"_p");
	if(hidden == null || image == null) return;
	var w = parseInt(hidden.getAttribute("W"), 10);
	var h = parseInt(hidden.getAttribute("H"), 10);
	hidden.value = "";
	image.src = "./iso_icons/empty.gif";
	image.style.width = "0px";
	image.style.height = "0px";
	image.className = "missingPreviewImage";
	var title = objThesaurus.translate("alb53");
	image.title = title;
	para.innerHTML = title;
}


var albumCurrentControlId = null;

function AlbumDialogClientForAlbumControl(id, oid)
{
	this.id = id;
	this.oid = oid;
	this.descr = null;
}

AlbumDialogClientForAlbumControl.prototype.getOid = function()
{
	return this.oid;
}

AlbumDialogClientForAlbumControl.prototype.setDescription = function(descr)
{
	this.descr = descr;
}

AlbumDialogClientForAlbumControl.prototype.commit = function()
{
	var id = this.id;
	var descr = this.descr;
	var hidden = document.getElementById(id + "_h");
	if(hidden == null) hidden = document.getElementById(id);
	var image = document.getElementById(id+"_i");
	var para = document.getElementById(id+"_p");
	if(hidden == null || image == null) return;
	hidden.value = descr.oid;
	var swidth = descr.width;
	var sheight = descr.height;
	var w = parseInt(hidden.getAttribute("W"), 10);
	var h = parseInt(hidden.getAttribute("H"), 10);
	var title = objThesaurus.translate("alb56",descr.filename + descr.extension) + "\n";
    if(descr.label != "") title += objThesaurus.translate("alb57",descr.label) + "\n";
	if(descr.size != 0) title += objThesaurus.translate("alb59",""+descr.size);
	if(swidth != "") {
		var sourceUrl = imageProviderUrl + "?image=" + descr.oid + "&ew=" + w + "&eh=" + h;
		image.src = fixUrl(sourceUrl);
		image.className = "previewImage";
		resizeImagePreview(image, w, h, swidth, sheight);
		title += "\nTaille: " + swidth + " x " + sheight;
	} else {
		image.width = 75;
		image.height = 100;
		resizeImagePreview(image, w, h, 75, 100);
		image.src = "./iso_icons/odf_button_big_document.png";
		image.className = "previewImage";
	}
	image.title = title;
	para.innerHTML = descr.label + " --- " + descr.filename + descr.extension;
}
