//var base = 'http://www.mypixmania.com/tools/thumbnail.php?type=album';
var base = '/tools/thumbnail.php?type=album';

var insertPhrase = "Insérez votre texte ici,\nAppuyez sur Entrée pour passer à la ligne";

// ici currentPage représente l'index
var currentPage = 1;
var currentEvenPage = 0;

// page étant editée à l'écran
var currentIndex = 0;

// ici totalPage représente le nombre de pages dans l'album
var totalPage = 1;

var currentColor = 'color';
var currentModelType = 'phc';
var currentBgType = 'u';
var currentBgValue = 1;
var currentFormat = '0';
var currentReference = '42040014';
var currentpreview = 1;
var currentModelDims;

var verticalGravity = 'align_middle';
var horizontalGravity = 'align_center';

var price = 0;

var photoList = new Array();

var oWaitingClock;
var tWaitingClock;
var oEmptyAlbum;
var oEmptyPage;
var oPrice;

var oldTab;
var oldTabLink;

var oPreview0;
var oPreview1;

oMini=new Array();



var previewPages = new Array();
var previewMini = new Array();
var lang = new Array();





function changeTab(link, target) {
	//log('changeTab' + "\n");
	if (target == 'tabText' && previewPages[currentIndex].getSrcProperty('id') == '') {
//		alert("Vous ne pouvez pas insérer du texte sans avoir de photo sur la page");
//		return;
	}

	var o = GetObject(target);
	if (oldTab) {
		oldTab.style.display = 'none';
	}

	if (oldTabLink) {
		oldTabLink.className = '';
	}

	link.className = 'selected';

	o.style.display = 'block';
	oldTab = o;
	oldTabLink = link;
}

function buildPhotosSelector() {
	//log('buildPhotosSelector' + "\n");
	var oPhotosSelector = GetObject('photosSelector');

	for (var i in photosId) {
		if (typeof(photosId[i]) != 'number') {
			continue;
		}

		var img = document.createElement('img');

		img.src = '/tools/thumbnail.php?d=' + directory + '&src0=id(' + d[photosId[i]] + '.' + photosId[i] + ')+rtt(' + r[i] + ')';


		//alert(img.src);

		img.id = 'img_photo_' + photosId[i];
		img.name = 'img_photo_' + photosId[i];
		img.photoId = photosId[i];

		img.alt = "";
		img.className = 'photoNotSelected';
		img.onclick = function() {Select(this.photoId);};
		/*
		img.onmouseover = function () {this.className = 'photoSelected'}
		img.onmouseout = function () {this.className = 'photoNotSelected'}
		*/

		//img.ondblclick = function() {deletePhoto(this.photoId);};

		var td = document.createElement('td');
		var tr = document.createElement('tr');
		var tbody = document.createElement('tbody');
		var table = document.createElement('table');
		var div = document.createElement('div');

		div.id = 'photo_' + photosId[i];
		div.className = 'photo';

		td.appendChild(img);
		tr.appendChild(td);
		tbody.appendChild(tr);
		table.appendChild(tbody);
		div.appendChild(table);
		oPhotosSelector.appendChild(div);

		Drag.init(img);

		// report stuff
		img.onDragStart = function(o, x, y) {reportDragStart(o, x, y); }
		img.onDragEnd = function(o, x, y) { reportDragEnd(o, x, y); }
		img.onDrag = function(o, x, y, ex, ey) { reportDrag(o, x, y, ex, ey); }
	}
}

function reportDragStart(Drag, x, y) {
	//log('reportDragStart' + "\n");
	var oDragDropContainer = document.getElementById('DragDropContainer');
	var img = document.createElement('img');

	Drag.associatedObject = img;
	Drag.associatedObject.src = Drag.obj.src;

	Drag.associatedObject.style.position = 'absolute';
	Drag.associatedObject.style.visibility = 'visible';
	Drag.associatedObject.style.left = x + "px";
	Drag.associatedObject.style.top = y + "px";

	Drag.targets = new Array();
	if (oPreview0.style.display != 'none') {
		Drag.targets.push({obj: oPreview0, currentIndex: 0});
	}

	if (oPreview1.style.display != 'none') {
		Drag.targets.push({obj: oPreview1, currentIndex: 1});
	}

	for (var i = 0; (c = Drag.targets[i]); i++) {
		var o = Drag.targets[i].obj;
		o.offsetx = computeLeft(o);
		o.offsety = computeTop(o);

		o.offsetw = o.offsetWidth;
		o.offseth = o.offsetHeight;
	}

	var o = GetObject('photosSelector');

	Drag.obj.offsetx = computeLeft(Drag.obj) - o.scrollLeft;
	Drag.obj.offsety = computeTop(Drag.obj) - o.scrollTop;

	oDragDropContainer.appendChild(img);

	Drag.obj.oldx = x;
	Drag.obj.oldy = y;

	reportDrag(Drag, x, y);
}

function computeTop(o) {
	//log('computeTop' + "\n");
	if (o.offsetParent) {
		return parseInt(o.offsetTop) + computeTop(o.offsetParent);
	} else {
		return parseInt(o.offsetTop);
	}
}

function computeLeft(o) {
	//log('computeLeft' + "\n");
	if (o.offsetParent) {
		return parseInt(o.offsetLeft) - parseInt(o.scrollLeft) + computeLeft(o.offsetParent);
	} else {
		return parseInt(o.offsetLeft) - parseInt(o.scrollLeft);
	}
}

function reportDragEnd(Drag, x, y) {
	//log('reportDragEnd' + "\n");
	delete(Drag.associatedObject);

	Drag.moveTo(Drag.obj.oldx, Drag.obj.oldy);
	var id = Drag.obj.id.split('_')[2];

	for (var i = 0; (c = Drag.targets[i]); i++) {
		if (Drag.targets[i].selected) {
			if (Drag.targets[i].currentIndex == currentIndex) {
				Select(id);
			} else {
				if (Drag.targets[i].currentIndex > currentIndex) {
					goToPage(currentPage + 1);
					Select(id);
				} else {
					goToPage(currentPage - 1);
					Select(id);
				}
			}

			Drag.targets[i].selected = false;
			Drag.targets[i].obj.className = Drag.targets[i].obj.className.replace(/ dropTarget/, '');
		}
	}

	var c = GetObject('DragDropContainer');
	for (var i = 0; img = c.childNodes[i]; i++) {
		c.removeChild(img);
	}

}

function reportDrag(Drag, x, y, ex, ey) {
	//log('reportDrag' + "\n");

	Drag.associatedObject.style.left = (Drag.obj.offsetx + x) + "px";
	Drag.associatedObject.style.top = (Drag.obj.offsety + y) + "px";

	for (var i = 0; (c = Drag.targets[i]); i++) {
		var dx = Drag.obj.offsetx + x - Drag.targets[i].obj.offsetx + Drag.obj.offsetWidth / 2;
		var dy = Drag.obj.offsety + y - Drag.targets[i].obj.offsety + Drag.obj.offsetHeight / 2;
		if (
			dy >= 0 &&
			dy <= Drag.targets[i].obj.offseth &&
			dx >= 0 &&
			dx <= Drag.targets[i].obj.offsetw
			)
		{
			if (!Drag.targets[i].obj.className.match(/ ?dropTarget/)) {
				Drag.targets[i].selected = true;
				Drag.targets[i].obj.className += " dropTarget";
			}
		} else {
			Drag.targets[i].selected = false;
			Drag.targets[i].obj.className = Drag.targets[i].obj.className.replace(/ ?dropTarget/, '');
		}
	}
}

function updateNotice(id) {
	//log('updateNotice' + "\n");
	// TODO: on attend les traductions

	var o = GetObject('img_photo_' + id);
	if (!o || typeof(o) != 'object') {
		return;
	}

	if (photoList[id] <= 0) {
		photoList[id] = 0;
		o.className = 'photoNotSelected';
		o.title = '';
	} else {
		var p = new Array();
		for (var i = 0; i <= totalPage; i++) {
			if (album.getPage(i).getSrcProperty('id') == id) {
				p.push(i);
			}
		}

		o.title = p.join(', ');
		/*
		if (p.length > 1) {
			o.title = 'La photo est présente dans les pages: ' + p.join(', ');
		} else {
			o.title = 'La photo est présente dans la page ' + p.join();
		}
		*/

		o.className = 'photoSelected';
	}
}

function resetText() {
	//log('resetText' + "\n");
	// TODO: on attend les traductions
	previewPages[currentIndex].setTxtProperty('txt', '');
	oText.value = '';
	refreshText();
	return;

	if (confirm("Etes vous sûr de supprimer le texte ?")) {
		previewPages[currentIndex].setTxtProperty('txt', '');
		oText.value = '';
		refreshText();
	}
}

function Select(id) {
	//log('Select(' + id + ")\n");
	var oldId = previewPages[currentIndex].getSrcProperty('id');

	if (typeof(oldId) != 'undefined' && oldId != '') {
		if (oldId == id) {
			return;
		}
	}

	if (!photoList[id]) {
		photoList[id] = 1;
	} else {
		photoList[id]++;
	}

	previewPages[currentIndex].setSrcProperty('id', d[id]+'.'+id);
	//previewPages[currentIndex].setSrcProperty('d', d[id]);
	previewPages[currentIndex].setSrcProperty('rotatethumbnails', r[id]);
	previewPages[currentIndex].setSrcProperty('rotate', r[id]);

	//log("\t" + 'Rotation: ' + r[id] + "\n");

	validatePage();

	if (typeof(oldId) != 'undefined' && oldId != '') {
		photoList[oldId]--;
		updateNotice(oldId);
	}

	updateNotice(id);

	refresh();


}

function rotatePage(a) {
	//log('rotatePage(' + a + ")\n");
	var oldRotation = parseInt(previewPages[currentIndex].getSrcProperty('rotate'));
	if (isNaN(oldRotation)) {
		oldRotation = 0;
	}

	var newRotation = (oldRotation + a) % 360;
	previewPages[currentIndex].setSrcProperty('rotate', newRotation);
	refresh();
}

function refresh() {
	//log('refresh()' + "\n");
	displayPageNumber();
	refreshSelectors();
	refreshModels();

	//showWaitingClock();
	previewPages[currentIndex].refresh();

	/* Tests david

	var updatepage = 'page'+ currentPage;
	var updatedivpage = 'divpage'+ currentPage;

	if (currentIndex==0){
		document.getElementById( updatepage ).src=document.getElementById( "preview0" ).src+"&o=MINI";
	} else {
		document.getElementById( updatepage ).src=document.getElementById( "preview1" ).src+"&o=MINI";
	}

	document.getElementById( updatedivpage ).style.visibility = "visible";
	document.getElementById( updatedivpage ).style.position = "relative";
	*/

	//alert('refresh');

	validatePage()


	for (var i=0;i<=totalPage;i++){

		if (i==currentPage){
			album.getPage(i).copy(previewMini[i]);
			previewMini[i].setfinalProperty('resize', 'x50');
			previewMini[i].refresh();
		}

		var divo = GetObject('essaidav' + i);
		divo.style.visibility="visible";
		divo.style.position="relative";

	}

	for (var i=totalPage+1;i<=98;i++){
		var divo = GetObject('essaidav' + i);
		divo.style.visibility="hidden";
		divo.style.position="absolute";
	}



	oPrice.innerHTML = computePrice();

	return;
}


function goToPage(i) {

	//log('goToPage' + "\n");
	if (typeof(i) == 'string') {
		i = parseInt(i);
	}

	if (i <= 0) {
		i = 0;
	}

	if (i >= totalPage + 1) {
		i = totalPage;
	}

	/*
	if (i == currentPage) {
		return;
	}
	*/

	validatePage();

	if (i == 0) {
		// cover
		currentModelDims = ReferenceToDimsForCover[currentReference];

		currentPage = i;
		currentEvenPage = currentPage - (currentPage % 2 == 0 ? 0 : 1);

		oPreview0.style.display = '';
		album.getPage(0).copy(previewPages[0]);
		previewPages[0].refresh();

		oPreview1.style.display = 'none';

		currentIndex = 0;

		oPreview0.className = 'selected';
		oPreview1.className = '';
	} else {
		currentModelDims = ReferenceToDims[currentReference];

		// pages normales
		currentPage = i;
		currentEvenPage = currentPage - (currentPage % 2 == 0 ? 0 : 1);


		if (currentEvenPage == 0) {
			// page 0
			oPreview0.style.display = 'none';
		} else {
			oPreview0.style.display = '';
			album.getPage(currentEvenPage).copy(previewPages[0]);
			previewPages[0].refresh();
		}

		if ((currentPage == totalPage)&&(currentPage % 2 == 0)) {
			oPreview1.style.display = 'none';
		} else {
			oPreview1.style.display = '';
			album.getPage(currentEvenPage + 1).copy(previewPages[1]);
			previewPages[1].refresh();
		}

		currentIndex = currentPage % 2;

		if (currentIndex == 0) {
			oPreview0.className = 'selected';
			oPreview1.className = '';
		}

		if (currentIndex == 1) {
			oPreview0.className = '';
			oPreview1.className = 'selected';
		}
	}

	addAlbum('saveAlbumEnCours',0);
	refresh();

}

function resetAlbum() {
	//log('resetAlbum' + "\n");
	album.reset();
	totalPage = 1;
	currentPage = 1;

	previewPages[currentIndex].setSrcProperty('id', '');

	refresh();
}

function makeAlbum() {
	//log('makeAlbum' + "\n");
	var bgId = previewPages[currentIndex].getBgProperty('id');
	var photosToInsert = new Array();

	if (photosId.length > 98 && currentModelDims != '145x145') {
		for (var i = 0; i < 98; i++) {
			photosToInsert[i] = photosId[i];
		}
	} else if (photosId.length > 24 && currentModelDims == '145x145') {
		for (var i = 0; i < 24; i++) {
			photosToInsert[i] = photosId[i];
		}
	} else {
		photosToInsert = photosId;
	}

	album.make(photosToInsert);

	totalPage = album.getTotalPage();

	var horizontalType;
	var verticalType;

	switch (currentModelType) {
		case 'phc':
		case 'pvc':
			horizontalType = 'phc';
			verticalType = 'pvc';
			break;

		case 'phb_tt':
		case 'pvl_tr':
			horizontalType = 'phb_tt';
			verticalType = 'pvl_tr';
			break;

		case 'pht_tb':
		case 'pvr_tl':
			horizontalType = 'pht_tb';
			verticalType = 'pvr_tl';
			break;
	}


	var p;
	for (var i = 0; i <= totalPage; i++) {

		p = album.getPage(i);
		var id = p.getSrcProperty('id');
		var modelId = p.getBgProperty('model');

		photoList[id] = 1;

		p.setBgProperty('id', bgId);

		var modelType;

		if (w[id] > h[id]) {
			modelType = horizontalType;
		} else {
			modelType = verticalType;
		}

		/*
		modelId = models[modelsDims[modelId][modelType][modelsFormats[modelId]][currentBgType];
		*/

		p.setBgProperty('model', modelId);

		var o = GetObject('img_photo_' + id);
		o.title = 'La photo est présente dans la page ' + i;
		o.className = 'photoSelected';
	}

	album.getPage(totalPage).copy(previewPages[currentIndex]);

	currentPage = totalPage;

	refresh();
}

function zoomPage(i) {
	//log('zoomPage' + "\n");
	validatePage();
	var w = window.open(album.getPage(i).getUrl() + '&o=SMALL', 'zoom', 'width=617px,height=817px');
	if (w) {
		w.focus();
	}
}

function deletePhoto(id) {
	//log('deletePhoto' + "\n");
	var o = GetObject('photo_' + id);
	o.style.display = 'none';
}

function viewAllPhotos() {
	//log('viewAllPhotos' + "\n");
	for (var i in photosId) {
		if (typeof(photosId[i]) != 'number') {
			continue;
		}

		GetObject('photo_' + photosId[i]).style.display = '';
	}
}

function changeFormat() {
	//log('changeFormat' + "\n");
	currentFormat = this.id;
	refreshModel();
}

function changeModel(newModel) {
	//log('changeModel' + "\n");
	if (typeof(newModel) != 'string') {
		currentModelType = this.id;
	} else {
		currentModelType = newModel;
	}
	refreshModel();
}

function changeModelId() {
	//log('changeModelId' + "\n");
	refreshModel(this.modelId);
}

function refreshModel(newModelId) {
	//log('refreshModel' + "\n");
	var modelId;
	var overwrite = false;

	if (newModelId) {
		modelId = newModelId;
	} else {
		try {
			modelId = models[currentModelDims][currentModelType][currentFormat][currentBgType];
		} catch (e) {
			return;
			modelId = 0;
		}
	}

	previewPages[currentIndex].setBgProperty('model', modelId);

	refresh();

}

function changeColor() {
	//log('changeColor' + "\n");
	currentColor = this.id;
	previewPages[currentIndex].setSrcProperty('color', currentColor);
	refresh();
}

function showWaitingClock() {
	//log('showWaitingClock' + "\n");
	if (tWaitingClock) {
		window.clearTimeout(tWaitingClock);
	}

	tWaitingClock = window.setTimeout("oWaitingClock.style.zIndex = 2;", 100);
}

function hideWaitingClock() {
	//log('hideWaitingClock' + "\n");
	if (tWaitingClock) {
		window.clearTimeout(tWaitingClock);
	}

	oWaitingClock.style.zIndex = -1;
}

function changePreview(numchange) {
	//log('changePreview' + "\n");
	if (numchange == currentIndex) {
		return;
	}

	goToPage(currentEvenPage + numchange);
}

function init() {
	//log('init' + "\n");

	oWaitingClock = GetObject('waitingClock');
	oEmptyAlbum = GetObject('emptyAlbum');
	oEmptyPage = GetObject('emptyPage');
	oPrice = GetObject('yourprice');

	oPreview0 = GetObject('preview0');
	previewPages[0] = new Page();
	previewPages[0].associateTo(oPreview0);

	oPreview1 = GetObject('preview1');
	previewPages[1] = new Page();
	previewPages[1].associateTo(oPreview1);

	for(var nbmini = 0; nbmini<=98; nbmini++){
		oMini[nbmini] = GetObject('essaidavpage'+nbmini);
		previewMini[nbmini] = new Page();
		previewMini[nbmini].associateTo(oMini[nbmini]);
	}



	initSelectors();

	currentReference = oSelectLivre.value;
	currentModelDims = ReferenceToDims[currentReference];

	album = new Album();
	album.addCover();

	GetObject('actionPrecedingPage').onclick = fnActionPrecedingPage;
	GetObject('actionNextPage').onclick   = fnActionNextPage;
	GetObject('actionFirstPage').onclick  = fnActionFirstPage;
	GetObject('actionLastPage').onclick   = fnActionLastPage;
	GetObject('actionZoomPage').onclick   = function() { zoomPage(currentPage) };
	GetObject('actionAddPage').onclick    = fnActionAddPage;
	GetObject('actionDeletePage').onclick = fnActionDeletePage;


	changeBg();

	displayPageNumber();
	previewPages[currentIndex].refresh();

	/*
	oPreview0.onload = hideWaitingClock;
	oPreview1.onload = hideWaitingClock;
	*/

	previewPages[0].copy(album.getPage(1));

}

function initSecondPage() {
	//log('initSecondPage' + "\n");
	album.addPage();

	album.getPage(1).copy(album.getPage(2));
	album.getPage(1).copy(previewPages[1]);

	previewPages[1].refresh();
	totalPage++;

	goToPage(2);
	goToPage(1);
}

function initPages(n) {
	//log('initPages' + "\n");
	var p;
	var f = album.getPage(1);
	for (var i = 0; i < n; i++) {
		album.addPage();
		totalPage++;
		p = album.getPage(totalPage);
		f.copy(p);

		p.setSrcProperty('id', 0);
		p.setTxtProperty('txt', '');
	}

}

function fnActionFirstPage() {
	//log('fnActionFirstPage' + "\n");
	goToPage(1);
}

function fnActionLastPage() {
	//log('fnActionLastPage' + "\n");
	goToPage(totalPage);
}

function fnActionPrecedingPage() {
	//log('fnActionPrecedingPage' + "\n");
	goToPage(currentPage - 1);
}

function fnActionNextPage() {
	//log('fnActionNextPage' + "\n");
	goToPage(currentPage + 1);
}


function fnActionAddPage() {
	//log('fnActionAddPage' + "\n");
	validatePage();

	if (currentReference == '42040014' && totalPage >= 24) {
		alert(message24);
		return;
	}

	if (totalPage == 98) {
		alert(message98);
		return;
	}

	/*var p;
	album.addPage();
	totalPage++;

	p = album.getPage(totalPage);
	album.getPage(totalPage - 1).copy(p);
	p.setSrcProperty('id', 0);
	p.setTxtProperty('txt', '');

	album.addPage();
	totalPage++;

	p = album.getPage(totalPage);
	album.getPage(totalPage - 1).copy(p);
	p.setSrcProperty('id', 0);
	p.setTxtProperty('txt', '');
	*/

	var p;
	album.addPage();
	totalPage++;

	for(i=totalPage;i>currentPage+1;i--){

		p = album.getPage(i);
		album.getPage(i - 1).copy(p);

	}

	if (totalPage==currentPage+1){
		p = album.getPage(totalPage);
		album.getPage(totalPage - 1).copy(p);
	}

	p = album.getPage(currentPage+1);
	p.setSrcProperty('id', 0);
	p.setTxtProperty('txt', '');




	goToPage(currentPage+1);

	for (var i=currentPage;i<=totalPage;i++){
		album.getPage(i).copy(previewMini[i]);
		previewMini[i].setfinalProperty('resize', 'x50');
		previewMini[i].refresh();
	}
}

function fnActionDeletePage() {
	//log('fnActionDeletePage' + "\n");

	if (currentPage == 0) {
		return;
	}

	if (currentPage == 1 && totalPage == 1) {
		return;
	}

	var pageToDelete = currentPage;

	if (currentPage == totalPage) {
		currentPage--;
	}

	var oldId = album.getPage(pageToDelete).getSrcProperty('id');

	if (typeof(oldId) != 'undefined' && oldId != '') {
		photoList[oldId]--;
		updateNotice(oldId);
	}

	album.deletePage(pageToDelete);
	totalPage--;

	currentEvenPage = currentPage - (currentPage % 2 == 0 ? 0 : 1);

	if (currentEvenPage == 0) {
		// page 0
		oPreview0.style.display = 'none';
	} else {
		oPreview0.style.display = '';
		album.getPage(currentEvenPage).copy(previewPages[0]);
		previewPages[0].refresh();
	}

	if (currentPage == totalPage) {
		oPreview1.style.display = 'none';
	} else {
		oPreview1.style.display = '';
		album.getPage(currentEvenPage + 1).copy(previewPages[1]);
		previewPages[1].refresh();
	}

	/*if (totalPage % 2 != 0) {
		var p;
		p = album.getPage(totalPage);

		if (p.getSrcProperty('id') == 0) {
			album.deletePage(totalPage);
			if (currentPage == totalPage) {
				currentPage--;
			}

			totalPage--;
		} else {
			album.addPage();
			totalPage++;

			p = album.getPage(totalPage);
			album.getPage(totalPage - 1).copy(p);
			p.setSrcProperty('id', 0);
			p.setTxtProperty('txt', '');
		}
	}*/

	if (totalPage < 24) {

		//fnActionAddPage();
	}

	goToPage(currentPage);

	for (var i=currentPage;i<=totalPage;i++){
		album.getPage(i).copy(previewMini[i]);
		previewMini[i].setfinalProperty('resize', 'x50');
		previewMini[i].refresh();
	}
}

function show(o) {
	//log('show' + "\n");
	o.style.display = 'block';
}

function hide(o) {
	//log('hide' + "\n");
	o.style.display = 'none';
}

function initSelectors() {
	//log('initSelectors' + "\n");
	oSelectBg = GetObject('themeSelector');

	oSelectLivre = GetObject('livreSelector');

	if (theme != '') {
		oSelectBg.value = theme;
	}

	oSelectBg.onchange = changeBg;

	oText = GetObject('text');
	oHelpText = GetObject('HelpText');
	oHelpTextSize = GetObject('HelpTextSize');

	oHelpFormat = new Array();
	oHelpModel = new Array();

	// on enlève les sauts de ligne pour Internet Explorer
	/*
	oText.onfocus = function () {if (oText.value.replace(/[\n\r]/gi, '') == insertPhrase.replace(/[\n\r]/, '')) {oText.value = '';};show(oHelpText);};
	oText.onblur = function () {if (oText.value == '') {oText.value = insertPhrase;};hide(oHelpText);};
	*/

	oActionAddPage = GetObject('actionAddPage');

	oSelectTextSize = GetObject('selectTextSize');
	oSelectTextColor = GetObject('selectTextColor');
	oSelectFont = GetObject('selectFont');

	oSelectTextSize.onchange = refreshText;
	oSelectTextColor.onchange = refreshText;
	oSelectFont.onchange = refreshText;

	/*
	oSelectTextSize.onfocus = function () {show(oHelpTextSize);};
	oSelectTextSize.onblur = function () {hide(oHelpTextSize);};
	*/

	oModelType = new Array();
	try {
		oModelType['pvc'] 	 = GetObject('pvc');
		oModelType['pvl_tr'] = GetObject('pvl_tr');
		oModelType['pvr_tl'] = GetObject('pvr_tl');

		oModelType['phc'] 	 = GetObject('phc');
		oModelType['phb_tt'] = GetObject('phb_tt');
		oModelType['pht_tb'] = GetObject('pht_tb');

		oModelType['pfull'] = GetObject('pfull');

		for (var i in oModelType) {
			oModelType[i].onclick = changeModel;
		}
	} catch (e) {
	}

	oFormat = new Array();
	try {
		oFormat['11x15'] = GetObject('11x15');
		oFormat['13x17'] = GetObject('13x17');
		oFormat['15x20'] = GetObject('15x20');
		oFormat['20x30'] = GetObject('20x30');

		for (var i in oFormat) {
			oFormat[i].onclick = changeFormat;
		}
	} catch (e) {
	}

	oColor = new Array();
	try {
		oColor['color'] 	 = GetObject('color');
		oColor['bw'] = GetObject('bw');
		oColor['sepia'] = GetObject('sepia');

		for (var i in oColor) {
			oColor[i].onclick = changeColor;
		}
	} catch (e) {
	}

	oGravity = new Array();
	try {
		oGravity['NW'] = GetObject('NW');
		oGravity['N']  = GetObject('N');
		oGravity['NE'] = GetObject('NE');
		oGravity['W']  = GetObject('W');
		oGravity['C']  = GetObject('C');
		oGravity['E']  = GetObject('E');
		oGravity['SW'] = GetObject('SW');
		oGravity['S']  = GetObject('S');
		oGravity['SE'] = GetObject('SE');

		for (var i in oGravity) {
			oGravity[i].onclick = changeGravity;
		}
	} catch (e) {
	}

	oGravity_v = new Array();
	oGravity_h = new Array();
	try {
		oGravity_v['align_top'] = GetObject('align_top');
		oGravity_v['align_middle'] = GetObject('align_middle');
		oGravity_v['align_bottom'] = GetObject('align_bottom');

		for (var i in oGravity_v) {
			oGravity_v[i].onclick = changeVerticalGravity;
		}

		oGravity_h['align_left'] = GetObject('align_left');
		oGravity_h['align_center'] = GetObject('align_center');
		oGravity_h['align_right'] = GetObject('align_right');

		for (var i in oGravity_h) {
			oGravity_h[i].onclick = changeHorizontalGravity;
		}
	} catch (e) {
	}

	//oImageQuality = GetObject('imageQuality');
}

function changeBookAll(message) {
	//log('changeBookAll' + "\n");
	// TODO: traduire


	var retourpage = currentPage;

	if (typeof(message) == 'undefined') {
		message = true;
	}

	/*
	if (oSelectLivre.value == '42040014' && totalPage > 24) {
		return;
	}
	*/

	currentReference = oSelectLivre.value;
	currentModelDims = ReferenceToDims[currentReference];

	validatePage();

	var modelId;
	var p;
	var dims;
	var currentPageold = currentPage;

	for (var i = 0; i <= totalPage; i++) {

		if (i == 0) {
			dims = ReferenceToDimsForCover[currentReference];
		} else {
			dims = ReferenceToDims[currentReference];
		}

		p = album.getPage(i);
		modelId = p.getBgProperty('model');

		try {
			modelId = models[dims][modelsTypes[modelId]][modelsFormats[modelId]][modelsBgTypes[modelId]];

		} catch (e) {
			var modelIds = getModelIds(dims);
			modelId = modelIds[0];

		}

		//log('Assign model ' + modelId + ' for page ' + i + "\n");

		p.setBgProperty('model', modelId);

		//goToPage(i);

	}

	album.getPage(currentPageold).copy(previewPages[currentIndex]);
	previewPages[currentIndex].refresh();

	/*
	var d = GetObject('bookformat');
	d.innerHTML = currentModelDims;
	*/

	goToPage(currentPageold);

	for (var i=0;i<=totalPage;i++){
		album.getPage(i).copy(previewMini[i]);
		previewMini[i].setfinalProperty('resize', 'x50');
		previewMini[i].refresh();
	}
}

function getModelIds(dims) {
	var m = models[dims];
	var modelIds = new Array();
	var i = 0;


	for (var i1 in m) {
		if (typeof(m[i1]) != 'object') {
			continue;
		}

		for (var i2 in m[i1]) {
			if (typeof(m[i1][i2]) != 'object') {
				continue;
			}

			for (var i3 in m[i1][i2]) {
				if (typeof(m[i1][i2][i3]) != 'number') {
					continue;
				}

				modelIds[i++] = m[i1][i2][i3];
			}
		}
	}

	return modelIds;
}


function changeBg(a, message) {
	//log('changeBg' + "\n");
	if (typeof(message) == 'undefined') {
		message = true;
	}


	var t = oSelectBg.value;

	var fullAlbum = false;
	if (typeof(a) == 'boolean') {
		fullAlbum = a;
	}

	var bgId = parseInt(t.substr(1));
	currentBgType = t.substr(0, 1);

	if (fullAlbum) {
		var modelId;
		var p;
		for (var i = 0; i <= totalPage; i++) {
			p = album.getPage(i);
			p.setBgProperty('id', bgId);
			/*
			modelId = p.getBgProperty('model');

			modelId = models[modelsDims[modelId]][modelsTypes[modelId]][modelsFormats[modelId]][currentBgType];

			p.setBgProperty('model', modelId);
			*/
		}
	}

	previewPages[currentIndex].setBgProperty('id', bgId);

	refreshModel();
}

function refreshSelectors() {
	//log('refreshSelectors' + "\n");
	/*if (currentPage == totalPage) {
		show(oActionAddPage);
	} else {
		hide(oActionAddPage);
	}*/

	show(oActionAddPage);


	var modelId = previewPages[currentIndex].getBgProperty('model');

	currentBgValue = previewPages[currentIndex].getBgProperty('id');

	currentModelType = modelsTypes[modelId];
	currentFormat = modelsFormats[modelId];
	currentBgType = modelsBgTypes[modelId];
	currentModelDims = modelsDims[modelId];

	currentColor = previewPages[currentIndex].getSrcProperty('color');

	if (typeof(currentColor) == 'undefined' || currentColor == '') {
		currentColor = 'color';
	}

	oSelectBg.value = currentBgType + currentBgValue;

	if (previewPages[currentIndex].getTxtProperty('txt') != '') {
		oText.value = Base64.decode(previewPages[currentIndex].getTxtProperty('txt'));
	} else {
//		oText.value = insertPhrase;
		oText.value = '';
	}

	oSelectTextSize.value = previewPages[currentIndex].getTxtProperty('s');
	oSelectTextColor.value = previewPages[currentIndex].getTxtProperty('c');;
	oSelectFont.value = previewPages[currentIndex].getTxtProperty('f');

	try {
		for (var i in oModelType) {
			if (typeof(oModelType[i]) == 'object') {
				oModelType[i].className = '';
			}
		}
	} catch (e) {
	}

	try {
		for (var i in oGravity) {
			if (typeof(oGravity[i]) == 'object') {
				oGravity[i].className = '';
			}
		}
	} catch (e) {
	}

	try {
		for (var i in oGravity_v) {
			if (typeof(oGravity_v[i]) == 'object') {
				oGravity_v[i].className = '';
			}
		}

		for (var i in oGravity_h) {
			if (typeof(oGravity_h[i]) == 'object') {
				oGravity_h[i].className = '';
			}
		}
	} catch (e) {
	}

	try {
		for (var i in oFormat) {
			if (typeof(oFormat[i]) == 'object') {
				oFormat[i].checked = false;
			}
		}
	} catch (e) {
	}

	try {
		for (var i in oColor) {
			if (typeof(oColor[i]) == 'object') {
				oColor[i].checked = false;
			}
		}
	} catch (e) {
	}

	try {
		oModelType[currentModelType].className = 'selected';
		oFormat[currentFormat].checked = true;
	} catch (e) {
	}

	try {
		oGravity[previewPages[currentIndex].getTxtProperty('g')].className = 'selected';
		oGravity_v[verticalGravity].className = 'selected';
		oGravity_h[horizontalGravity].className = 'selected';
		oColor[currentColor].checked = true;
	} catch (e) {
	}

	//refreshQuality();
}

function refreshQuality() {
	//log('refreshQuality' + "\n");
	var id = previewPages[currentIndex].getSrcProperty('id');
	if (typeof(id) == 'undefined' || id == 0 || id == '') {
		return;
	}

	var ratio = 4/3;

	// en pouces
	var baseWidth;
	var baseheight;

	switch (currentFormat) {
		case '11x15':
			baseHeight = 11.4 / 2.54;
			break;
		case '13x17':
			baseHeight = 12.7 / 2.54;
			break;
		case '15x20':
			baseHeight = 15.2 / 2.54;
			break;
		case '20x30':
			// 21 * 29.7
			baseHeight = 21.0 / 2.54;
			break;
		default:
			oImageQuality.className = '';
			return;
	}

	baseWidth = baseHeight * ratio;

	if (currentFormat != '20x30' && currentModelType.substr(0,2) == 'pv') {
		// on a un modèle vertical, on inverse les dimensions de référence
		baseWidth = baseHeight;
		baseHeight = baseWidth * ratio;
	}

	var q;
	var width = w[id];
	var height = h[id];

	var r = previewPages[currentIndex].getSrcProperty('rotate') / 90;

	if (r % 2) {
		// la photo est tournée, on inverse la hauteur et la largeur
		var tmp = width;
		width = height;
		height = tmp;
	}

	var rw = width / baseWidth;
	var rh = height / baseHeight;

	var ref = Math.min(rw, rh);

	if (ref > 170) {
		q = 1;
	} else if (ref > 125) {
		q = 0;
	} else {
		q = -1;
	}

	switch (q) {
		case -1:
			oImageQuality.className = 'bad';
			oImageQuality.innerHTML = 'Qualité insuffisante';
			break;
		case 0:
			oImageQuality.className = 'medium';
			oImageQuality.innerHTML = 'Qualité correcte';
			break;
		case 1:
			oImageQuality.className = 'good';
			oImageQuality.innerHTML = 'Qualité excellente';
			break;
		default:
			oImageQuality.className = '';
			oImageQuality.innerHTML = '';
	}
}

function refreshText() {
	//log('refreshText' + "\n");
	previewPages[currentIndex].setTxtProperty('s', oSelectTextSize.value);
	previewPages[currentIndex].setTxtProperty('c', oSelectTextColor.value);
	previewPages[currentIndex].setTxtProperty('f', oSelectFont.value);

	if (oText.value == '' || oText.value.replace(/[\n\r]/gi, '') == insertPhrase.replace(/[\n\r]/, '')) {
		oText.value = insertPhrase;
		previewPages[currentIndex].setTxtProperty('txt', '');
		refresh();
		return;
	}

	/*
	if (previewPages[currentIndex].getSrcProperty('id') == '') {
		alert("Vous ne pouvez pas insérer du texte sans avoir de photo sur la page");
		return;
	}
	*/

	previewPages[currentIndex].setTxtProperty('txt', Base64.encode(oText.value));

	/*
	if (oText.value != '') {
		if (currentModelType == 'phc') {
			currentModelType = 'pht_tb';
		}

		if (currentModelType == 'pvc') {
			currentModelType = 'pvl_tr';
		}
	}
	*/

	refresh();
}


function changeGravity() {
	//log('changeGravity' + "\n");
	previewPages[currentIndex].setTxtProperty('g', this.id);
	refresh();
}

function changeVerticalGravity() {
	//log('changeVerticalGravity' + "\n");
	verticalGravity = this.id;
	changeGravity2();
}

function changeHorizontalGravity() {
	//log('changeHorizontalGravity' + "\n");
	horizontalGravity = this.id;
	changeGravity2();
}

function changeGravity2() {
	//log('changeGravity2' + "\n");
	var g;

	switch (verticalGravity) {
		case 'align_top':
			switch (horizontalGravity) {
				case 'align_left':
					g = 'NW';
					break;
				case 'align_center':
					g = 'N';
					break;
				case 'align_right':
					g = 'NE';
					break;
				default:
					g = 'NW';
			}

			break;

		case 'align_middle':
			switch (horizontalGravity) {
				case 'align_left':
					g = 'W';
					break;
				case 'align_center':
					g = 'C';
					break;
				case 'align_right':
					g = 'E';
					break;
				default:
					g = 'C';
			}

			break;

		case 'align_bottom':
			switch (horizontalGravity) {
				case 'align_left':
					g = 'SW';
					break;
				case 'align_center':
					g = 'S';
					break;
				case 'align_right':
					g = 'SE';
					break;
				default:
					g = 'SW';
			}

			break;

		default:
			g = 'C';
	}

	previewPages[currentIndex].setTxtProperty('g', g);
	refresh();
}

function toggleTxtBorder() {
	//log('toggleTxtBorder' + "\n");
	if (previewPages[currentIndex].getTxtProperty('b') == 'on') {
		previewPages[currentIndex].setTxtProperty('b', 'off');
	} else {
		previewPages[currentIndex].setTxtProperty('b', 'on');
	}

	refresh();
}

function toggleSrcFill() {
	//log('toggleSrcFill' + "\n");
	if (previewPages[currentIndex].getSrcProperty('fill') == 'on') {
		previewPages[currentIndex].setSrcProperty('fill', 'off');
	} else {
		previewPages[currentIndex].setSrcProperty('fill', 'on');
	}

	refresh();
}

function displayPageNumber() {
	//log('displayPageNumber' + "\n");
	var d = GetObject('currentPageNumber');
	var numeropage = GetObject('numeroPage');

	try {
		if (currentPage == 0) {
			if(currentReference=='42040015' || currentReference=='42040017'){
				d.innerHTML = '<span style="font-size: 13px;font-weight:800;margin-right:160px;>">'+lang['Couverture2']+'</span> '+lang['Couverture1'];
				numeropage.style.width='400px';
			} else {
				d.innerHTML = '<span style="font-size: 13px;font-weight:800;margin-right:160px;>">'+lang['Couverture2']+'</span> '+lang['Couverture1'];
				numeropage.style.width='650px';
			}

		} else {
			d.innerHTML = lang['Page'] + ' ' + currentPage + '/' + totalPage;

		}
	} catch (e) {
	}
}

function deletePage() {
	//log('deletePage' + "\n");
	if (currentPage == 1 && totalPage == 1) {
		var oldId = album.getPage(1).getSrcProperty('id');

		if (typeof(oldId) != 'undefined' && oldId != '') {
			photoList[oldId]--;
			updateNotice(oldId);
		}

		validatePage();

		album.getPage(1).setSrcProperty('id', '');
		album.getPage(1).setTxtProperty('txt', '');
		album.getPage(1).copy(previewPages[currentIndex]);

		validatePage();
		refresh();
	} else {
		var pageToDelete = currentPage;

		if (currentPage == totalPage) {
			totalPage--;
			currentPage--;
		}

		if (currentPage < totalPage) {
			totalPage--;
		}

		var oldId = album.getPage(pageToDelete).getSrcProperty('id');

		if (typeof(oldId) != 'undefined' && oldId != '') {
			photoList[oldId]--;
			updateNotice(oldId);
		}

		album.deletePage(pageToDelete);

		album.getPage(currentPage).copy(previewPages[currentIndex]);

		refresh();
	}
}

function validatePage() {
	//log('validatePage' + "\n");
	previewPages[currentIndex].copy(album.getPage(currentPage));
}

function refreshModels() {
	//log('refreshModels' + "\n");
	var currentModelId = 0;
	try {
		currentModelId = models[currentModelDims][currentModelType][currentFormat][currentBgType];
	} catch (e) {
	}

	var o = GetObject('modelsPreview');

	// si l'image correspondant au modèle existe déjà
	var currentModelObject = GetObject('model:' + currentModelId);
	if (currentModelObject) {
		var c = o.getElementsByTagName('img');
		for (var i = 0; (img = c[i]); i++) {
			img.className = '';
		}

		currentModelObject.className = "selected";

		return;
	}

	// sinon on recrée la table
	o.style.display = 'none';

	while (c = o.childNodes[0]) {
		o.removeChild(c);
	}

	var table = document.createElement('table');

	// ne pas oublier tbody pour ie
	var tbody = document.createElement('tbody');
	var tr = document.createElement('tr');

	var p = new Page();

	var m = models[currentModelDims];

	for (var i1 in m) {
		if (typeof(m[i1]) != 'object') {
			continue;
		}

		for (var i2 in m[i1]) {
			if (typeof(m[i1][i2]) != 'object') {
				continue;
			}

			for (var i3 in m[i1][i2]) {
				if (typeof(m[i1][i2][i3]) != 'number') {
					continue;
				}

				modelId = m[i1][i2][i3];

				var img = document.createElement('img');
				img.modelId = modelId;
				img.id = 'model:' + modelId;

				img.onclick = changeModelId;

				p.setSrcProperty('ex', 'AE269E');
				p.setBgProperty('model', modelId);

				p.setTxtProperty('b', 'c000000');
				p.setTxtProperty('c', 'c000000');
				p.setTxtProperty('s', '50');
				//p.setTxtProperty('txt', Base64.encode(' '));
				p.setTxtProperty('txt', Base64.encode('a-z'));

				p.setfinalProperty('resize', 'x64');
				p.associateTo(img);
				p.refresh();

				if (currentModelId == img.modelId) {
					img.className = "selected";
				} else {
					img.className = "";
				}

				var td = document.createElement('td');
				td.appendChild(img);
				tr.appendChild(td);
			}
		}
	}

	tbody.appendChild(tr);
	table.appendChild(tbody);
	o.appendChild(table);

	o.style.display = '';

}

function debug() {
	return;
	if (typeof(album) != 'undefined') {
		var s = new Array();

		s.push(album.getTotalPage());
		s.push(currentPage);
		s.push(currentEvenPage);
		s.push(currentIndex);
		s.push(currentReference);
		s.push(currentModelDims);

		document.title = s.join(' ');

		var d = GetObject('debug');
		if (d) {
			d.value = album.dump();
		}
	}
}

//window.setInterval("debug();", 1000);


function log(s) {
	return;
	var o = GetObject('log');
	if (o) {
		o.value += s;
	}
}

