/**
PHOTOPHOP (PHPDRAW 2)
Copyright (C) 2007  Johan Barbier <johan.barbier@gmail.com>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
Event.observe(window, 'load', function() {
	getMenu();
	Event.observe('phpdrawContents', 'click', eventObj.getClick.bindAsEventListener(eventObj));
	Event.observe('phpdrawContents', 'mousemove', eventObj.getPosition.bindAsEventListener(eventObj));
	$$('.toolzMenu').each(function(el) {
		Event.observe(el, 'click', function(ev){
			$$('.toolzMenu').each(function(el) {
				el.setStyle({
					opacity: 1,
					border: '0px'
				});
			});
			Event.element(ev).setStyle({
				opacity: 0.7,
				border: '1px solid #999999'
			});
		});
	});
	sMemento = null;
	aClicks = new Array;
	sSelectionPos = '';
	iClicksToBeDone = null;
	aPos = $('phpdrawContents').cumulativeOffset();
	iX = 200;
	iY = 200;
	iThickNess = 1;
	iFontSize = 1;
	sTile = 'none';
	sColor = '255255255';
	sFile = '';
});

var getMenu = function() {
	Event.observe('line', 'click', eventObj.drawLine.bindAsEventListener(eventObj));
	Event.observe('ellipse', 'click', eventObj.drawEllipse.bindAsEventListener(eventObj));
	Event.observe('filledEllipse', 'click', eventObj.drawFilledEllipse.bindAsEventListener(eventObj));
	Event.observe('rectangle', 'click', eventObj.drawRectangle.bindAsEventListener(eventObj));
	Event.observe('filledRectangle', 'click', eventObj.drawFilledRectangle.bindAsEventListener(eventObj));
	Event.observe('displayPicker', 'click', eventObj.displayPicker.bindAsEventListener(eventObj));
	Event.observe('colorpickerImg', 'click', eventObj.chooseColor.bindAsEventListener(eventObj));
	Event.observe('tiles', 'click', eventObj.displayTilesPicker.bindAsEventListener(eventObj));
	Event.observe('fill', 'click', phpdraw.action.fill.bindAsEventListener(eventObj));
	Event.observe('texte', 'click', eventObj.displayTextBox.bindAsEventListener(eventObj));
	Event.observe('texteV', 'click', eventObj.displayTextBoxV.bindAsEventListener(eventObj));
	Event.observe('fontsize', 'click', eventObj.displayFontSize.bindAsEventListener(eventObj));
	Event.observe('fontsizeSelection', 'change', eventObj.chooseFontsize.bindAsEventListener(eventObj));
	Event.observe('pixel', 'click', eventObj.displayPixelWidth.bindAsEventListener(eventObj));
	Event.observe('pixelSelection', 'change', eventObj.choosePixelWidth.bindAsEventListener(eventObj));
	Event.observe('new', 'click', eventObj.openNewImgBox.bindAsEventListener(eventObj));
	Event.observe('newImgTicker', 'click', phpdraw.action.newImage.bindAsEventListener(eventObj));
	Event.observe('save', 'click', eventObj.displaySaveBox.bindAsEventListener(eventObj));
	Event.observe('saveTicker', 'click', phpdraw.action.saveImage.bindAsEventListener(eventObj));
	Event.observe('openImg', 'click', eventObj.displayUploadBox.bindAsEventListener(eventObj));
	Event.observe('uploadTicker', 'click', phpdraw.action.openImage.bindAsEventListener(eventObj));
	Event.observe('greyscale', 'click', phpdraw.action.greyScale.bindAsEventListener(eventObj));
	Event.observe('blackwhite', 'click', phpdraw.action.blackAndWhite.bindAsEventListener(eventObj));
	Event.observe('negate', 'click', phpdraw.action.negate.bindAsEventListener(eventObj));
	Event.observe('colorize', 'click', phpdraw.action.colorize.bindAsEventListener(eventObj));
	Event.observe('sepia', 'click', phpdraw.action.sepia.bindAsEventListener(eventObj));
	Event.observe('gaussianblur', 'click', phpdraw.action.gaussianBlur.bindAsEventListener(eventObj));
	Event.observe('emboss', 'click', phpdraw.action.emboss.bindAsEventListener(eventObj));
	Event.observe('selectiveblur', 'click', phpdraw.action.selectiveBlur.bindAsEventListener(eventObj));
	Event.observe('meanremoval', 'click', phpdraw.action.meanRemoval.bindAsEventListener(eventObj));
	Event.observe('edgedetect', 'click', phpdraw.action.edgeDetect.bindAsEventListener(eventObj));
	Event.observe('wavy', 'click', phpdraw.action.wavy.bindAsEventListener(eventObj));
	Event.observe('rotate', 'click', eventObj.displayRotateBox.bindAsEventListener(eventObj));
	Event.observe('rotateTicker', 'click', phpdraw.action.rotate.bindAsEventListener(eventObj));
	Event.observe('smooth', 'click', eventObj.displaySmoothBox.bindAsEventListener(eventObj));
	Event.observe('smoothTicker', 'click', phpdraw.action.smooth.bindAsEventListener(eventObj));
	Event.observe('brightness', 'click', eventObj.displayBrightnessBox.bindAsEventListener(eventObj));
	Event.observe('brightnessTicker', 'click', phpdraw.action.brightness.bindAsEventListener(eventObj));
	Event.observe('contrast', 'click', eventObj.displayContrastBox.bindAsEventListener(eventObj));
	Event.observe('contrastTicker', 'click', phpdraw.action.contrast.bindAsEventListener(eventObj));
	Event.observe('resize', 'click', eventObj.displayResizeBox.bindAsEventListener(eventObj));
	Event.observe('resizeTicker', 'click', phpdraw.action.resize.bindAsEventListener(eventObj));
	Event.observe('resizeXBox', 'blur', phpdraw.action.checkRatio.bindAsEventListener(eventObj));
	Event.observe('resizeYBox', 'blur', phpdraw.action.checkRatio.bindAsEventListener(eventObj));
	Event.observe('resizeRatio', 'click', phpdraw.action.checkRatio.bindAsEventListener(eventObj));
	Event.observe('crop', 'click', eventObj.crop.bindAsEventListener(eventObj));
	Event.observe('undo', 'click', phpdraw.action.undo.bindAsEventListener(eventObj));
	Event.observe('select', 'click', eventObj.select.bindAsEventListener(eventObj));
}

var dynamicMenu = function() {
	$$('.classTiles').each(function(e) {
		Event.observe(e, 'mouseover', function(ev){
			e.setStyle({
				opacity: 0.5
			});
		});
		Event.observe(e, 'mouseout', function(ev){
			e.setStyle({
				opacity: 1
			});
		});
		Event.observe(e, 'click', eventObj.selectTile.bindAsEventListener(eventObj));
	});
	if($(sTile) !== null) {
		$(sTile).setStyle({
			border: '2px solid #99aaee'
		});
	}
}

var phpdraw = {
	registerMemento: function(s) {
		sMemento = s;
		$('currentTool').update('<strong class="msgTitle">Tool</strong><br />'+s);
	},
	
	clearClicks: function() {
		aClicks.clear();
		phpdraw.clearBox('boxDivDisplay');
	},
	
	clearBox: function(sBoxDiv) {
		if($(sBoxDiv) !== null) {
			$(sBoxDiv).remove();
		}
	},
	
	saveClicks: function(ev) {
		var iLength = aClicks.length;
		if(iLength + 1 === iClicksToBeDone && sSelectionPos !== '') {
			var aSelectionPos = $('selectionDivDisplay').cumulativeOffset();
			var x = Event.pointerX(ev) - aSelectionPos[0];
			var y = Event.pointerY(ev) - aSelectionPos[1];	
		} else {
			var x = Event.pointerX(ev) - aPos[0];
			var y = Event.pointerY(ev) - aPos[1];				
		}
		aClicks[iLength] = new Array(x, y);	
	},
	
	saveClicksToBeDone: function(iNbr) {
		iClicksToBeDone = iNbr;
	},
	
	getImgDim: function() {
		var aDim = $('phpdrawContents').getDimensions();
		$('newImgWidth').value = aDim.width - 2;
		$('newImgHeight').value = aDim.height - 2;
		return new Array ($F('newImgWidth'), $F('newImgHeight'));
	}
	
};

phpdraw.action = {
	displayPosition: function(x, y) {
		$('pointerPosition').update('<strong class="msgTitle">Position</strong><br />X : '+x+'<br />Y : '+y);
	},

	displaySelectionBox: function(x, y, sBoxId) {
		phpdraw.clearBox(sBoxId);
		var oDiv = document.createElement('div');
		var oDivId = document.createAttribute('id');
		oDivId.nodeValue = sBoxId;
		oDiv.setAttributeNode(oDivId);
		$('body').appendChild(oDiv);
		if(x > aClicks[0][0]) {
			var iLeft = aClicks[0][0] + aPos[0];
		} else {
			var iLeft = x + aPos[0];
		}
		if(y > aClicks[0][1]) {
			var iTop = aClicks[0][1] + aPos[1];
		} else {
			var iTop = y + aPos[1];
		}
		var iWidth = Math.abs(x - aClicks[0][0]);
		var iHeight = Math.abs(y - aClicks[0][1]);
		var sBgColor = $('drawColor').getStyle('backgroundColor');
		$(sBoxId).setStyle({
			position: 'absolute',
			top: iTop+'px',
			left: iLeft+'px',
			width: iWidth+'px',
			height: iHeight+'px',
			border: '1px dotted '+sBgColor
		});
		Event.observe(sBoxId, 'mousemove', eventObj.getPosition.bindAsEventListener(eventObj));
		Event.observe(sBoxId, 'click', eventObj.getClick.bindAsEventListener(eventObj));
	},
	
	select: function() {
		sSelectionPos = '';
		if(aClicks.length === iClicksToBeDone) {
			iX = aClicks[0][0];
			iY = aClicks[0][1];
			var iX2 = aClicks[1][0];
			var iY2 = aClicks[1][1];
			sSelectionPos = iX+'-'+iY+'-'+iX2+'-'+iY2;
			phpdraw.clearClicks();
		}
	},
	
	drawLine: function() {
		if(aClicks.length === iClicksToBeDone) {
			iX = aClicks[0][0];
			iY = aClicks[0][1];
			var iX2 = aClicks[1][0];
			var iY2 = aClicks[1][1];
			phpdraw.clearClicks();
			ajaxObj.getDraw('line '+iX2+'-'+iY2);
		}
	},
	
	drawEllipse: function() {
		if(aClicks.length === iClicksToBeDone) {
			iX = aClicks[0][0];
			iY = aClicks[0][1];
			var iX2 = aClicks[1][0];
			var iY2 = aClicks[1][1];
			iWidth = Math.abs((iX2 - iX) * 2);
			iHeight = Math.abs((iY2 - iY) * 2);
			phpdraw.clearClicks();
			ajaxObj.getDraw('ellipse '+iWidth+'-'+iHeight);
		}
	},
	
	drawFilledEllipse: function() {
		if(aClicks.length === iClicksToBeDone) {
			iX = aClicks[0][0];
			iY = aClicks[0][1];
			var iX2 = aClicks[1][0];
			var iY2 = aClicks[1][1];
			iWidth = Math.abs((iX2 - iX) * 2);
			iHeight = Math.abs((iY2 - iY) * 2);
			phpdraw.clearClicks();
			ajaxObj.getDraw('filledEllipse '+iWidth+'-'+iHeight);
		}
	},
	
	drawRectangle: function() {
		if(aClicks.length === iClicksToBeDone) {
			iX = aClicks[0][0];
			iY = aClicks[0][1];
			var iX2 = aClicks[1][0];
			var iY2 = aClicks[1][1];
			phpdraw.clearClicks();
			ajaxObj.getDraw('rectangle '+iX2+'-'+iY2);
		}
	},
	
	drawFilledRectangle: function() {
		if(aClicks.length === iClicksToBeDone) {
			iX = aClicks[0][0];
			iY = aClicks[0][1];
			var iX2 = aClicks[1][0];
			var iY2 = aClicks[1][1];
			phpdraw.clearClicks();
			ajaxObj.getDraw('filledrectangle '+iX2+'-'+iY2);
		}
	},
	
	crop: function() {
		if(aClicks.length === iClicksToBeDone) {
			iX = aClicks[0][0];
			iY = aClicks[0][1];
			var iX2 = aClicks[1][0];
			var iY2 = aClicks[1][1];
			phpdraw.clearClicks();
			ajaxObj.getDraw('crop '+iX2+'-'+iY2);
		}
	},
	
	drawText: function(sTextDir) {
		if($('textBox').present() === false) {
			return false;
		}
		if(aClicks.length === iClicksToBeDone) {
			iX = aClicks[0][0];
			iY = aClicks[0][1];
			phpdraw.clearClicks();
			ajaxObj.getDraw(sTextDir+' "'+$F('textBox')+'"');
		}
	},
	
	fill: function() {
		ajaxObj.getDraw('fill 0');
	},
	
	gaussianBlur: function() {
		ajaxObj.getDraw('gaussianblur 0');
	},
	
	selectiveBlur: function() {
		ajaxObj.getDraw('selectiveblur 0');
	},
	
	meanRemoval: function() {
		ajaxObj.getDraw('meanremoval 0');
	},
	
	edgeDetect: function() {
		ajaxObj.getDraw('edgedetect 0');
	},
	
	wavy: function() {
		ajaxObj.getDraw('wavy 0');
	},
	
	greyScale: function() {
		ajaxObj.getDraw('greyscale 0');
	},
	
	blackAndWhite: function() {
		ajaxObj.getDraw('blackwhite 0');
	},
	
	negate: function() {
		ajaxObj.getDraw('negate 0');
	},
	
	colorize: function() {
		ajaxObj.getDraw('colorize 0');
	},
	
	sepia: function() {
		ajaxObj.getDraw('sepia 0');
	},
	
	emboss: function() {
		ajaxObj.getDraw('emboss 0');
	},
	
	smooth: function() {
		ajaxObj.getDraw('smooth '+$F('smoothBox'));
	},
	
	brightness: function() {
		ajaxObj.getDraw('brightness '+$F('brightnessBox'));
	},
	
	contrast: function() {
		ajaxObj.getDraw('contrast '+$F('contrastBox'));
	},
	
	undo: function() {
		ajaxObj.getDraw('undo 0');
	},
	
	saveImage: function() {
		if($('saveBox').present() === false) {
			return false;
		}
		eventObj.displaySaveBox();
		$('currentTool').update('<strong class="msgTitle>Saved !</strong>');
		ajaxObj.getDraw('file '+$F('saveBox')+'.'+$F('saveTypeSelection'));
	},

	openImage: function() {
		$('uploadForm').submit();
		sFile = 'tmpimg/'+$F('fichier').substring($F('fichier').lastIndexOf('\\') + 1);
		$('uploadForm').hide();
		ajaxObj.checkUpload(sFile);
	},

	rotate: function() {
		if(isNaN($F('rotateBox')) || $F('rotateBox') < -360 || $F('rotateBox') > 360) {
			$('errorMsg').update('Rotation angle must be numeric');
			$('rotateBox').value = '';
			return false;
		}
		ajaxObj.getDraw('rotate '+$F('rotateBox'));
	},
	
	checkRatio: function(ev) {
		sFrom = Event.element(ev).id;
		if((isNaN($F('resizeXBox')) || $F('resizeXBox') < 1) && $F('resizeXBox') !== '') {
			$('errorMsg').update('Width must be a positive integer');
			$('resizeXBox').value = '';
			return false;
		}
		if((isNaN($F('resizeYBox')) || $F('resizeYBox') < 1) && $F('resizeYBox') !== '') {
			$('errorMsg').update('Height must be a positive integer');
			$('resizeYBox').value = '';
			return false;
		}
		if($('resizeRatio').checked === true) {
			var aDim = phpdraw.getImgDim();
			if(aDim[0] === aDim[1]) {
				if(sFrom === 'resizeXBox') {
					$('resizeYBox').value = $F('resizeXBox');
				} else {
					$('resizeXBox').value = $F('resizeYBox');
				}
				return false;
			} else if(aDim[0] < aDim[1]) {
				var iRatio = aDim[1]/aDim[0];
				if($F('resizeYBox')/$F('resizeXBox') !== iRatio) {
					if(sFrom === 'resizeXBox') {
						$('resizeYBox').value = parseInt($F('resizeXBox')*iRatio);
					} else {
						$('resizeXBox').value = parseInt($F('resizeYBox')/iRatio);
					}
					return false;
				}
			} else {
				var iRatio = aDim[0]/aDim[1];
				if($F('resizeXBox')/$F('resizeYBox') !== iRatio) {
					if(sFrom === 'resizeXBox') {
						$('resizeYBox').value = parseInt($F('resizeXBox')/iRatio);
					} else {
						$('resizeXBox').value = parseInt($F('resizeYBox')*iRatio);
					}
					return false;
				}
			}
		}
	},
	
	resize: function() {
		ajaxObj.getDraw('resize '+$F('resizeXBox')+'-'+$F('resizeYBox'));
	},
	
	newImage: function() {
		ajaxObj.getNew($F('newImgWidth'), $F('newImgHeight'), sColor);
	}
};

var eventObj = {
	getPosition: function(ev) {
		var x = Event.pointerX(ev) - aPos[0];
		var y = Event.pointerY(ev) - aPos[1];
		phpdraw.action.displayPosition(x, y);
		switch(sMemento) {
			case 'crop':
			case 'rectangle':
			case 'filledRectangle':
				if(aClicks.length === 1) {
					phpdraw.action.displaySelectionBox(x, y, 'boxDivDisplay');
				}
				break;
			case 'select':
				if(aClicks.length === 1) {
					phpdraw.action.displaySelectionBox(x, y, 'selectionDivDisplay');
				}
				break;
			default:
				break;
		}
	},
	
	selectTile: function(ev) {
		sTile = Event.element(ev).id;
		$('tilespicker').hide();
	},
	
	select: function() {
		phpdraw.clearBox('selectionDivDisplay');
		sSelectionPos = '';
		phpdraw.registerMemento('select');
		phpdraw.saveClicksToBeDone(2);
	},
	
	crop: function() {
		phpdraw.registerMemento('crop');
		phpdraw.saveClicksToBeDone(2);
	},
	
	drawLine: function() {
		phpdraw.registerMemento('line');
		phpdraw.saveClicksToBeDone(2);
	},
	
	drawEllipse: function() {
		phpdraw.registerMemento('ellipse');
		phpdraw.saveClicksToBeDone(2);
	},
	
	drawFilledEllipse: function() {
		phpdraw.registerMemento('filledEllipse');
		phpdraw.saveClicksToBeDone(2);
	},
	
	drawRectangle: function() {
		phpdraw.registerMemento('rectangle');
		phpdraw.saveClicksToBeDone(2);
	},
	
	drawFilledRectangle: function() {
		phpdraw.registerMemento('filledRectangle');
		phpdraw.saveClicksToBeDone(2);
	},
	
	displayPicker: function() {
		$('colorpicker').toggle();
	},
	
	displayUploadBox: function() {
		if($('uploadForm').visible()) {
			$('uploadForm').hide();
		} else {
			$('uploadForm').setStyle({
				display: 'inline'
			});
		}
	},
	
	displayTextBox: function() {
		$('textBox').toggle();
		phpdraw.registerMemento('text');
		phpdraw.saveClicksToBeDone(1);
	},
	
	displayTextBoxV: function() {
		$('textBoxV').toggle();
		phpdraw.registerMemento('textV');
		phpdraw.saveClicksToBeDone(1);
	},
	
	displaySmoothBox: function() {
		$('smoothBox').toggle();
		$('smoothTicker').toggle();
	},
	
	displayBrightnessBox: function() {
		$('brightnessBox').toggle();
		$('brightnessTicker').toggle();
	},
	
	displayContrastBox: function() {
		$('contrastBox').toggle();
		$('contrastTicker').toggle();
	},
	
	displayRotateBox: function() {
		$('rotateBox').toggle();
		$('rotateTicker').toggle();
	},
	
	displayResizeBox: function() {
		$('resizeXBox').toggle();
		$('resizeYBox').toggle();
		$('resizeRatio').toggle();
		$('resizeTicker').toggle();
	},
	
	displaySaveBox: function() {
		$('saveBox').toggle();
		$('saveTypeSelection').toggle();
		$('saveTicker').toggle();
	},
	
	displayFontSize: function() {
		$('fontsizeSelection').toggle();
	},
	
	choosePixelWidth: function() {
		eventObj.displayPixelWidth();
		ajaxObj.getDraw('pixel '+$F('pixelSelection'));
	},
	
	displayTilesPicker: function() {
		if($('tilespicker').getStyle('display') === 'none') {
			ajaxObj.getTilesPicker();
		} else {
			$('tilespicker').hide();
		}
	},
	
	displayPixelWidth: function() {
		$('pixelSelection').toggle();
	},
	
	chooseFontsize: function() {
		eventObj.displayFontSize();
		ajaxObj.getDraw('fontsize '+$F('fontsizeSelection'));
	},
	
	chooseColor: function(ev) {
		var aPickerPos = $('colorpickerImg').cumulativeOffset();
		var X = Event.pointerX(ev) - aPickerPos[0];
		var Y = Event.pointerY(ev) - aPickerPos[1];
		ajaxObj.getColor(X, Y);
	},
	
	openNewImgBox: function() {
		phpdraw.getImgDim();
		$('newImgWidth').toggle();
		$('newImgHeight').toggle();
		$('newImgTicker').toggle();
	},
	
	getClick: function(ev) {
		if(sMemento === null) {
			return false;
		}
		switch(sMemento) {
			case 'line':
				phpdraw.saveClicks(ev);
				phpdraw.action.drawLine();
				break;
			case 'ellipse':
				phpdraw.saveClicks(ev);
				phpdraw.action.drawEllipse();
				break;
			case 'rectangle':
				phpdraw.saveClicks(ev);
				phpdraw.action.drawRectangle();
				break;
			case 'filledRectangle':
				phpdraw.saveClicks(ev);
				phpdraw.action.drawFilledRectangle();
				break;
			case 'filledEllipse':
				phpdraw.saveClicks(ev);
				phpdraw.action.drawFilledEllipse();
				break;
			case 'text':
				phpdraw.saveClicks(ev);
				phpdraw.action.drawText('text');
				break;
			case 'textV':
				phpdraw.saveClicks(ev);
				phpdraw.action.drawText('textV');
				break;
			case 'crop':
				phpdraw.saveClicks(ev);
				phpdraw.action.crop();
				break;
			case 'select':
				phpdraw.saveClicks(ev);
				phpdraw.action.select();
				break;
			default:
				return false;
		}
	}
};

var ajaxObj = {
	getDraw : function(sExpression) {
		var oAjax = new Ajax.Request(
			'ajax/ajax.draw.php', {
				method: 'post',
				parameters: {'EXPR': sExpression, 'X': iX, 'Y': iY, 'FILE': sFile, 'COLOR': sColor, 'PIXEL': iThickNess, 'FONTSIZE': iFontSize, 'TILE': sTile, 'SELECTION': sSelectionPos},
				onSuccess: ajaxObj.onSuccess,
				onError: ajaxObj.onError,
				asynchronous: false	
			}
		);
	},
	
	getNew : function(iWidth, iHeight, sBgColor) {
		var oAjax = new Ajax.Request(
			'ajax/ajax.new.php', {
				method: 'post',
				parameters: {'WIDTH': iWidth, 'HEIGHT': iHeight, 'BGCOLOR': sBgColor, 'X': iX, 'Y': iY, 'COLOR': sColor, 'PIXEL': iThickNess, 'FONTSIZE': iFontSize},
				onSuccess: ajaxObj.onSuccessNew,
				onError: ajaxObj.onError,
				asynchronous: false	
			}
		);
	},
	
	getColor : function(X, Y, pointerX, pointerY) {
		var oAjax = new Ajax.Request(
			'ajax/ajax.get.color.php', {
				method: 'post',
				parameters: {'X': X, 'Y': Y},
				onSuccess: ajaxObj.onSuccessGetColor,
				onError: ajaxObj.onError,
				asynchronous: false	
			}
		);
	},
	
	getTilesPicker : function() {
		var oAjax = new Ajax.Request(
			'ajax/ajax.get.tiles.php', {
				method: 'post',
				parameters: {'ISAJAX': 1},
				onSuccess: ajaxObj.onSuccessGetTilesPicker,
				onError: ajaxObj.onError,
				asynchronous: false	
			}
		);
	},
	
	checkUpload: function(sFileName) {
		oAjaxUpdater = new Ajax.PeriodicalUpdater(
			'errorMsg', 'ajax/ajax.check.upload.php', {
				method: 'post',
				frequency: 1,
				parameters: {'FILE': sFileName},
				onSuccess: ajaxObj.onSuccessCheckUpload
			}
		);
	},
	
	
	onSuccess : function(xhr) {
		$('errorMsg').update('');
		var oXml = xhr.responseXML;
		var phpDraw = oXml.lastChild;
		if(phpDraw.firstChild.tagName === 'error') {
			var oError = phpDraw.firstChild;
			$('errorMsg').update(phpDraw.firstChild.firstChild.data);
		} else {
			var oFile = phpDraw.getElementsByTagName('file').item(0);
			var oX = phpDraw.getElementsByTagName('x').item(0);
			var oY = phpDraw.getElementsByTagName('y').item(0);
			var oColor = phpDraw.getElementsByTagName('color').item(0);
			var oThickNess = phpDraw.getElementsByTagName('thickness').item(0);
			var oFontSize = phpDraw.getElementsByTagName('fontsize').item(0);
			$('phpdrawContents').src = oFile.firstChild.data;
			iX = parseInt(oX.firstChild.data);
			iY = parseInt(oY.firstChild.data);
			sColor = oColor.firstChild.data;
			iThickNess = oThickNess.firstChild.data;
			iFontSize = oFontSize.firstChild.data;
			sFile = oFile.firstChild.data;
		}
	},
	
	onSuccessNew: function(xhr) {
		$('errorMsg').update('');
		var oXml = xhr.responseXML;
		var phpDraw = oXml.lastChild;
		if(phpDraw.firstChild.tagName === 'error') {
			var oError = phpDraw.firstChild;
			$('errorMsg').update(phpDraw.firstChild.firstChild.data);
		} else {
			var oFile = phpDraw.getElementsByTagName('file').item(0);
			var oX = phpDraw.getElementsByTagName('x').item(0);
			var oY = phpDraw.getElementsByTagName('y').item(0);
			var oColor = phpDraw.getElementsByTagName('color').item(0);
			var oThickNess = phpDraw.getElementsByTagName('thickness').item(0);
			var oFontSize = phpDraw.getElementsByTagName('fontsize').item(0);
			$('phpdrawContents').src = oFile.firstChild.data;
			iX = parseInt(oX.firstChild.data);
			iY = parseInt(oY.firstChild.data);
			sColor = oColor.firstChild.data;
			iThickNess = oThickNess.firstChild.data;
			iFontSize = oFontSize.firstChild.data;
			sFile = oFile.firstChild.data;
		}
	},
	
	onSuccessGetColor: function(xhr) {
		$('errorMsg').update('');
		sColor = xhr.responseText;
		$('drawColor').setStyle({
			backgroundColor: 'rgb('+sColor.substr(0,3)+', '+sColor.substr(3,3)+', '+sColor.substr(6,3)+')'
		});
	},
	
	onSuccessGetTilesPicker: function(xhr) {
		$('errorMsg').update('');
		$('tilespicker').update('');
		$('tilespicker').update(xhr.responseText);
		$('tilespicker').show();
		dynamicMenu();
	},
	
	onSuccessCheckUpload: function(xhr) {
		if(xhr.responseText === '1') {
			oAjaxUpdater.stop();
			$('errorMsg').update('');
			$('phpdrawContents').writeAttribute('src', sFile);
		} else if(xhr.responseText === '0') {
			oAjaxUpdater.stop();
			$('errorMsg').update('Wrong file type, only PNG is accepted');
		}
	},
	
	onError : function(xhr) {
		$('errorMsg').update('Unexpected error');
	}
};
