document.observe('dom:loaded', function() {
	new MapPoint();
});
var MadLog = Class.create({
	userLevel: 10,
	isAdmin: function() {
		if ( this.userLevel <= 10 ) {
			return true;
		} else {
			return false;
		}
	}
})
var MapPoint = Class.create({
	mode: 'normal',
	no: '',
	basePosition: null,

	initialize: function() {
		this.madlog = new MadLog;
		var no = $F('no');
		if ( $('MapPointArea') ) {
			new Ajax.Updater('MapPointArea','/main/mapPoint/index?no='+no, {
			onComplete: this.observing.bind(this)
			});
		}
	},
	observing: function () {
		this.basePosition = $('map').positionedOffset();
		$$('#mapLocals a').invoke('observe','mouseover',this.pointing.bind(this));
		if ( this.madlog.isAdmin() ) {
			$('btnChangePoint').observe('click',this.initChangePoint.bind(this));
			$('mapLocals').observe('click',this.selectPointer.bind(this));
		}
	},
	initChangePoint: function( ev ) {
		ev.stop();
		this.mode = 'selectPoint';
		$('mapPointer').addClassName('draggable');
	},
	selectPointer: function( ev ) {
		if ( this.mode == 'selectPoint' && ev.element().tagName == 'A' ){
			ev.stop();
			$('mapBlocker').toggle();
		var temp = new Draggable( 'mapPointer', {
			onEnd: function( d ) {
				var el = ev.element();
				var no = el.href.match(/[\d]+/);
				var x = d.element.getStyle('left').match(/[\d]+/) - this.basePosition.left;
				var y = d.element.getStyle('top').match(/[\d]+/) - this.basePosition.top;
				new Ajax.Request('/main/mapPoint/savePoint', {
					parameters: {
						'no': no,
						'x': x,
						'y': y
					},
					onSuccess: function( transport) {
						var result = transport.responseText;
						if ( result !== '1' ) {
							alert('저장 중 문제가 발생하였습니다.');
						} else {
							alert('저장 되었습니다.');
						}
						el.title = x + ',' + y
						$('mapBlocker').toggle();
						temp.destroy();
					}
				});
			}.bind(this)
		});
			this.mode = 'mormal';
		}
	},
	pointing: function( ev ) {
		var el = ev.element();
		var position = el.title.split(',');
		
		var left = this.basePosition.left + parseInt(position[0]) + 'px';
		var top = this.basePosition.top + parseInt(position[1]) + 'px';
		$('mapPointer').setStyle({
			'left': left,
			'top': top
		}).show();
		ev.stop();
	}
});

