Move = {
	start: function(fn){
		document.addEvent('mousemove', Move.check )
		document.addEvent('mouseup', Move.cancel )
		Move.running = fn
		Move.spos = {x:Mouse.x, y:Mouse.y}
	},
	running: false,
	spos: {x:0,y:0},

	check : function(e){
		Move.running && Move.running({ x:Move.spos.x-e.page.x, y:Move.spos.y-e.page.y });
	},
	cancel : function(e){ 
		document.removeEvent('mousemove', Move.check )
		document.removeEvent('mouseup', Move.cancel )
		Move.running = false 
	}
}

qgGrid = function(table){
	var gohst = new Element('div').setStyles({position:'absolute',backgroundColor:'white'}).inject(document.body);
	colMove = false;
	table.getElement('thead').getElements('td').each(function(td){
		var resize = false;
		td.set({
			events:{
				mousemove:function(e){
					if( Move.running ){ return; }
					if( e.client.x < td.getPosition().x+5 ){
						td.getParent().style.cursor = 'e-resize';
						resize = td.getPrevious();
					} else {
						td.getParent().style.cursor = 'default';
						resize = false;
					}
				},
				mousedown:function(e){
					e.stop();
					if(resize){
						var resizePos = resize.offsetWidth;
						Move.start(	function(diff){
							resize.style.width = Math.max(resizePos-diff.x,10) + 'px';
						})
					} else {
						colMove = td
						gohst.setStyles({display:'block',width:td.offsetWidth,height:td.offsetHeight}).innerHTML = td.innerHTML;
						Move.start( function(){
							gohst.setStyles({top:Mouse.y+1,left:Mouse.x+1});
						})
					}
				},
				mouseup:function(){
					resize = false;
					if(colMove){
						gohst.style.display = 'none';
						var pos = td.cellIndex+1;
						var seite = pos > colMove.cellIndex ? 'after':'before';
						table.getElements('tr td:nth-child('+(colMove.cellIndex+1)+')').each(function(mtd){
							mtd.inject(mtd.getParent().getElement(':nth-child('+(pos)+')') ,seite);
						})
						colMove = false;
					}
				}
			}
		})
	})
	table.addEvent('click', function(e){
		var td = $(e.target);
		var tr = td.getParent();

		var th = table.getElement('thead tr :nth-child('+(td.cellIndex+1)+')');

		name = th.getAttribute('name');
		id = tr.getAttribute('entryid');
		//td.contentEditable = true;
		td.addEvent('blur', function(){
			this.contentEditable = false;
		})
	})
}
window.addEvent('domready',function(){
	$$('table.qgGrid').each(function(el){
		new qgGrid(el);
	})
})
