var bankTom = new Array();
var bankRendez = $empty();
var upCont = new Array();
var foundList;
var bankOrder = true;
var drop = $empty();
var itemTitle = $empty();
var sumTitle = $empty();


var coinsObj = function(db,ps){
	var db = (db == null) ? 1 : db;

	coins = new Object;
	coins.item_id = 0;
	coins.item_name = 'Coins';
	coins.item_name_clean = 'coins';
	coins.img = './images/coins.gif';
	coins.price = 1;
	coins.sPrice = db*1;
	coins.darab = db;
	coins.last_updated = 0;
	coins.pos = ps;

	return coins;
}
	
var bEmpty = function(){
	drop.empty();
	bankTom.empty();
	sumBank();
};

var sortBankTom = function(order){
	var tom = Array();
	var i = 0;

	order.each(function(elem,index){
		id = elem.replace('b','');
		bankTom[id.toInt()].pos = index;
	});
};

var fillBank = function(){
	bEmpty();

	upCont = upCont.sort(sortByPos);
	
	/*upCont.each(function(item,index){
		console.log(index+':'+item.pos);
	});*/
	
	leker = new Request.JSON({method: 'post',url:'GE_byid.php',
		onSuccess: function(json, text){
		
			if($type(json) == 'array' && json != null)
			json.each(function(item,index){
				if(item.item_id == 0)
				{
					item = coinsObj(upCont[index].darab,upCont[index].pos);
				}
				else {
					
					item.darab = upCont[index].darab;
					item.pos = upCont[index].pos;
				}
				bankTom[item.item_id] = item;
				rebankItem(item);
			});
			sumBank();
		},
		onComplete: function(){
			drop.setStyle('background-image','none');
		}
	}).send('id='+JSON.encode(upCont));
	
};

var sortByPos = function(a,b){
	x = a.pos;
	y = b.pos;
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};

var sortBySumPrice = function(a,b){
	x = a.sPrice;
	y = b.sPrice;
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};

var sortByDarab = function(a,b){
	x = a.darab;
	y = b.darab;
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};

var rebankItem= function(item) {

		oneItem = new Element('ul',{'class':'Iitem','id':'b'+item.item_id});
		nev = item.item_name;
		img = new Element('li',{'class':'Ikep','title':nev});
		img.setStyle('backgroundImage', 'url('+item.img+')');	
		img.inject(oneItem);
		itemTitle.attach(img);

		var ar = rsNumber(item.price);

		ara = new Element('li',{'class':'Iar'}).inject(oneItem);

		formaar = new Element('span',{'text':ar + ' gp'}).inject(ara,'bottom');

		oneItem.inject(drop,'bottom');
		
		bankItem(oneItem,item.item_id);

};

var bankItem = function(elem,id){
	arLi = elem.getChildren('li.Iar')[0];
	arLi.appendText(' db: ','top');
	
	bankTom[id].darab = (bankTom[id].darab) ? bankTom[id].darab : 1;
	db = bankTom[id].darab;
	
	var darab = new Element('input',{'type':'text','class':'Idb','value':rsNumber(db) }).inject(arLi,'top');
	bankTom[id].sPrice = db * (bankTom[id].price).toInt();
	var dbOBS = itemCalc(darab,bankTom[id].price,arLi.getChildren('span'),id);
	
	darab.addEvents({'focus':function(){
			dbOBS.pause();
			darab.set('morph', {duration: 'short', transition: 'quart:out'});
			darab.morph({'width':148});
			darab.set('value',bankTom[id].darab);
			darab.highlight()

		},
		'blur':function(e){
			darab.set('morph', {duration: 'short', transition: 'quart:in'});
			darab.morph({'width':50});
			dbOBS.resume();
			dbOBS.fireEvent('onFired');
		},
		'click':function(e){
			e.stop();
			darab.select();
			return false;
		}
	});
	darab.addEvent((Browser.Engine.trident || Browser.Engine.webkit) ? 'keydown' : 'keypress',
		function(e){
			if (e && e.key && !e.shift)
			{	
				if(e.key == 'enter')
				{
					this.blur();
				}
			}
		return true;		
	});
	nevLi = elem.getChildren('li.Inev')[0];

	/*if(nevLi.get('text').length > 24)
	{
		nevLi.set('text',(nevLi.get('text')).substring(0,24) + '...');
	}*/
	if(nevLi != null)
		nevLi.dispose();
	kepLi = elem.getChildren('li.Ikep')[0];
	kepLi.set('title',bankTom[id].item_name);
	itemTitle.attach(kepLi);

	

	delItem = new Element('div',{'class':'delItem','title':'Tárgy törlése a bankból'}).inject(kepLi);

	delItem.addEvents({'click':function(){
		myFx = new Fx.Tween(elem);
		myFx.start('opacity',1,0).chain(function(){
			elem.dispose();
			bankRendez.removeItems(elem);
		$$('#'+id).setStyles({'cursor':'pointer','title':'Tárgy mozgatása a bankba.'});
			delete bankTom[id];
			/*bankTom.each(function(item, index){
				console.log(item.pos + ':'+item.item_name);
			});*/
			
			sumBank();
		});
		
	},
	'focus':function(e){
		e.stop();
		darab.focus();
	}
	});
	
	bankRendez.addItems(elem);
	sumBank();
	
};

var itemCalc = function(darab,dbAr,elem,id){
	var dbOBS = new Observer(darab,function(){
		dbLimit(darab,id);
		db = bankTom[id].darab;
		elem.set('text',rsNumber(db*dbAr)+' gp');
		bankTom[id].sPrice = db*dbAr;
		//bankTom[id].darab = db.toInt();
		sumBank();
	}, {'delay':400,'periodical':800});
	
	elem.set('text',rsNumber(bankTom[id].sPrice)+' gp');
	return dbOBS;
};

var sumBank = function(){
	var osszeg = 0;

	bankTom.each(function(item,index){
	
			if(item != null)
			{
				osszeg = osszeg + item.sPrice;
			}
	});
	
	$('sum').getChildren('span')[0].set('text',rsNumber(osszeg))
	$('sum').store('tip:title',number_format(osszeg, 0, '.', ' ') + ' coins');
	
	$('darabSz').getChildren('span')[0].set('text',$('bank').getChildren('ul').length);
};

var dbLimit = function(element,id){
	number = fromRsNumber(element.get('value'),id).toInt();

	if($type(number) != 'number' || number < 0) {
		number = 0;
	}
	element.set('value',rsNumber(number));
};

var fromRsNumber = function(price,id){

	price = price.toUpperCase();
	if(price.contains('K'))
	{
		number = price.replace('K','').toFloat();
		number = number * 1000;
		
	}
	else if(price.contains('M'))
	{
		number = price.replace('M','').toFloat();
		number = number * 1000000;
	}
	else {
		number = price.toInt();
	}
	if(id != null)
	{	if(price == rsNumber(bankTom[id].darab))
			number = bankTom[id].darab;	
		else
			bankTom[id].darab = number;	
	}
	
	return number;
};

var swSortIco = function(elem){
	if(elem != $('sortbybank') && bankTom.length < 2)
		return;

	$$('#sortPriceASC','#sortPriceDSC','#sortdbASC','#sortdbDSC','#sortbybank').each(function(item){
		item.setStyle('opacity',0.5)
		.addEvents({
		'mouseleave':function(){
			this.fade(0.5);
		}
		});
	});
	elem.removeEvents('mouseleave');

	elem.setStyle('opacity',1);

};

window.addEvent('domready',function(){
	var foundI = $('foundItems');
	drop = $('bank');
	var searchBankI = $('searchBank');



	itemTitle = new Tips($$('.Iname'),{
		fixed: true,
		'class': 'myTip',
		offset:{
			x: 0,
			y: 48
			}
		});
		
	sumTitle = new Tips($('sum'),{
		fixed: true,
		'class': 'myTip',
		offset:{
			x: 16,
			y: 16
			}
		});

	bankRendez = new Sortables(drop,{
		constrain: true,
    clone: true,
    revert: true,
		opacity: 0.3,
		handle: '.Ikep',
		onComplete: function() {
			sortBankTom(this.serialize(1));
		}
	});

	var myResize = drop.makeResizable({modifiers: {x: false, y: 'height'}, handle: $('resHand')});
	
	var getItems = function (){
		var jsonRequest = new Request.JSON({method: 'get', url: "GE_leker.php",
			onComplete: function(items,text){
				foundI.empty();
				if(items != null && items.length != 0)
				{
					foundList = tomAssoc(items);
					showItems(items);
					fBoxShow();
					//$('foundBox').setStyle('display','block');
				}
				else
				{
					fBoxHide();
					foundList = $empty();
				}
				$('Vitem').setStyle('backgroundImage','none');
			},
			onRequest: function() {
				$('Vitem').setStyle('backgroundImage','url(images/ajax-loader.gif)');
				//$('foundBox').setStyle('display','none');
			}
		}).send($('item').toQueryString());

	};

	var showItems = function(items) {

		foundI.empty();
		var r = 2;
		items.each(function(item, index){
			r = (r == 1) ? 2 : 1;
			oneItem = new Element('ul',{'class':'Iitem bg'+r,'id':item.item_id});
			img = new Element('li',{'class':'Ikep'});
			img.setStyle('backgroundImage', 'url('+item.img+')');	
			img.inject(oneItem);
			nev = item.item_name;	
			neve = new Element('li',{'text':nev,'title':item.item_name,'class':'Inev'}).inject(oneItem);
			var ar = rsNumber(item.price);

			ara = new Element('li',{'class':'Iar'}).inject(oneItem);

			formaar = new Element('span',{'text':ar + ' gp'}).inject(ara,'bottom');
			
			oneItem.inject(foundI);
			
			itemDrag(oneItem,img);
		});

	};

	var itemDrag = function(elem,img) {

			elem.addEvent('dblclick',function(e){
				
				id = elem.get('id');
				if(bankTom[id] != null)
					return false;
				e.stop();
				
				if(!bankOrder)
					$('sortbybank').fireEvent('click',e);
				
				bankTom[id] = foundList[id];
				clone0 = elem.clone();
				clone0.set('id','b'+id);
				clone0.inject(drop);
				bankItem(clone0,id);
				sumBank();
				drop.tween('background-color','#CADBEA','#E1EAF1');

				sortBankTom(bankRendez.serialize(1));

				
			});
			
			
			elem.setStyles({'cursor':'pointer','title':'Tárgy mozgatása a bankba.'});

			elem.addEvent('mousedown', function(e) {
					e = new Event(e).stop();
					
					if(bankTom[elem.get("id")] != null)
					{
						if(!bankOrder)
							$('sortbybank').fireEvent('click',e);
						db = $$('#b'+elem.get("id")).getChildren('li.Iar')[0].getChildren('input.Idb')[0];
						num = fromRsNumber(db.get('value')[0],elem.get("id"));
						bankTom[elem.get("id")].darab = bankTom[elem.get("id")].darab+1
						db.set('value',bankTom[elem.get("id")].darab);
						db.highlight();
						
						return;
					}
					
					var coord = this.getCoordinates(); 

					var clone = this.clone()
						.setStyles({'left': coord.left-10, 'top': coord.top-10, 'bottom': coord.bottom-10, 'right': coord.right-10})
						.setStyles({'opacity': 0.7, 'position': 'absolute'});

					var drag = clone.makeDraggable({
						droppables: [$('bank')],
						snap: 0,
						onSnap: function(){

							clone.injectInside(document.body);
						},
						onComplete: function()
						{	
							if(clone)
								clone.dispose();
						},
						onDrop: function(element,droppable){
							if(droppable == null)
							{	
								clone.dispose();
								drop.removeEvents();
							}
							else
							{
								drop.removeEvents();
								clone.dispose();
								id = elem.get('id');
								
								if(!bankOrder)
									$('sortbybank').fireEvent('click',e);
									
								bankTom[id] = foundList[id];
								clone0 = elem.clone();
								clone0.set('id','b'+id);
								clone0.inject(drop);
								bankItem(clone0,id);
								drop.tween('background-color','#CADBEA','#E1EAF1');
								$$(elem,clone0).setStyles({'cursor':'default','title':'A tárgy már a bankban van!'});
								sortBankTom(bankRendez.serialize(1));
							}
						},
						onEnter: function() {
							drop.setStyles({'background-color':'#CADBEA'});
							clone.morph('.bHover');												
						},
						onLeave: function() {
							drop.setStyles({'background-color':'#E1EAF1'});
							clone.morph('.IitemH');
						}
					});
				
					drag.start(e)
			});

	};
	searchBankI.addEvents({'keyup':function(e){
			if(e.key == 'esc')
				searchBankI.set('value') == '';
			e.stop();
		},
		'click':function(){
			searchBankI.select();
		}
	});
	
	var sBankOb = new Observer(searchBankI,function(){
		if(bankTom.length == 0)
			return;
		var i = 0;
		var sFor = searchBankI.get('value');
		
		if(sFor == '')
		{
			sumBank();
			$$('#bank ul.Iitem').setStyle('display','block');
		}
		else{
			$$('#bank ul.Iitem').setStyle('display','block');
			
			bankTom.each(function(item,index){
				if(item != null)
				{	
					if(!item.item_name_clean.contains(sFor))
						$$('#b' + item.item_id).setStyle('display','none');
					else
						i++;
					$('darabSz').getChildren('span')[0].set('text',i);
				}
		});	
		}
		
	}, {'delay':400});
	
	$('sortOrder').addEvent('click',function(e){
		e.stop();
		var bh = $('bankHeader');

		if(bh.getStyle('height').toInt() == 22)
		{
			bh.morph({'height':45});
			return false;
		}
		else
		{
			bh.morph({'height':22});
			return false;
		}

	});

	$('sortbybank').addEvent('click',function(e){
		e.stop();	
		var bankInd = bankSortByPos();

		bankInd.each(function(item,index){
			$('b'+item.item_id).inject(drop,'bottom');
	
		});	
		bankRendez.addItems($$('#bank ul'));
		swSortIco(this);
	});
	
	$('sortdbASC').addEvent('click',function(e){
		e.stop();	
		var bankInd = bankSortByDarab();

		bankInd.each(function(item,index){
			$('b'+item.item_id).inject(drop,'bottom');

		});

		bankRendez.removeItems($$('#bank ul.Iitem'));
		swSortIco(this);
	});

	$('sortdbDSC').addEvent('click',function(e){
		e.stop();	
		var bankInd = bankSortByDarab();

		bankInd.each(function(item,index){
			$('b'+item.item_id).inject(drop,'top');
		});
		bankRendez.removeItems($$('#bank ul'));
		swSortIco(this);
	});		
		
	$('sortPriceASC').addEvent('click',function(e){
		e.stop();	
		bankInd = bankSortByPrice();

		bankInd.each(function(item,index){
			$('b'+item.item_id).inject(drop,'bottom');

		});
		bankRendez.removeItems($$('#bank ul'));
		swSortIco(this);
	});

	$('sortPriceDSC').addEvent('click',function(e){
		e.stop();	
		bankInd = bankSortByPrice();

		bankInd.each(function(item,index){
			$('b'+item.item_id).inject(drop,'top');
		});
		bankRendez.removeItems($$('#bank ul'));
		swSortIco(this);
	});


	var bankSortByPos = function(){
		bankOrder = true;
		var bankInd = new Array();

		bankTom.each(function(item,index){
			if(item != null)
				bankInd[item.pos] = item;
		});

		bankInd = bankInd.sort(sortByPos);

		return bankInd;
	};
	

	var bankSortByDarab = function(){
		bankOrder = false;
		var bankInd = new Array();
		
		bankTom.each(function(item,index){
			if(item != null)
				bankInd[item.pos] = item;
		});

		bankInd = bankInd.sort(sortByDarab);

		return bankInd;
	};
	
	var bankSortByPrice = function(){
		bankOrder = false;
		var bankInd = new Array();

		bankTom.each(function(item,index){
			if(item != null)
				bankInd[item.pos] = item;
		});
		
		bankInd = bankInd.sort(sortBySumPrice);
		return bankInd;
	};
	
	$('resHand').addEvent('dblclick',function(e){
		e.stop();
		dropH = drop.getScrollSize().y;

		if(dropH == drop.getStyle('height').toInt())
		{
			drop.set('morph', {duration: 'normal', transition: 'quart:out'});
			drop.morph({'height':300});
			return;
		}
		
		drop.set('morph', {duration: 'normal', transition: 'quart:out'});
		drop.morph({'height':(dropH+5)});
	});
	
	$('Vitem').addEvent('click',function(){
		this.select();
	});
	
	$$('#urit','#sortOrder','#szamol','#clearItem','#addCoins','#sortPriceASC','#sortPriceDSC','#sortdbASC','#sortdbDSC','#sortbybank').each(function(item){
		item.setStyle('opacity',0.5)
		.addEvents({'mouseenter':function(){
			this.fade('in');
		},
		'mouseleave':function(){
			this.fade(0.5);
		}
		});
	});

	swSortIco($('sortbybank'));

	$('addCoins').addEvents({'click':function(){
			if(bankTom[0] != null)
			{	
				db = $$('#b0').getChildren('li.Iar')[0].getChildren('input.Idb')[0];
				num = fromRsNumber(db.get('value')[0],0);
				bankTom[0].darab = bankTom[0].darab+1
				db.set('value',bankTom[0].darab);
				db.highlight();
				return;
			}
			bankTom[0] = coinsObj();
			rebankItem(bankTom[0]);
			sortBankTom(bankRendez.serialize(1));
			return false;
		}
	});

/*
	itemTitle.addEvents({
		'onShow':function(tip){
			tip.setStyle('margin-top',20);
			tip.tween('margin-top', [20, 0]);
		},
		'onHide':function(tip){
			tip.setStyle('margin-top',20);
		}
	});


	sumTitle.addEvents({
		'onShow':function(tip){
			tip.setStyle('margin-top',20);
			tip.tween('margin-top', [20, 0]);
		},
		'onHide':function(tip){
			tip.setStyle('margin-top',20);
		}
	});*/


	/*$('loadAction').addEvent('submit',function(e){
		e.stop();
		
		if(!$('fUpload'))
		var fupload = new IFrame({
			'name':'fUpload',
			'id':'fUpload',
			styles: {
				display: 'none'
			},
			events: {
				load: function(){
					upCont = JSON.decode(this.contentWindow.document.body.innerHTML);
					if(upCont != null)
					{
						swSortIco($('sortbybank'));
						fillBank();
						$('loadBank').fireEvent('click',e);

					}
				}
			}
		}).inject($('loadAction'),'after');

		if($('ufile').get('value') != '')
		{	
			drop.setStyle('background-image','url("images/activity_indicator.gif")');
			$('loadAction').set('target','fUpload').submit();
		}
		
	});


	$('loadBank').addEvent('click',function(e){
		e.stop();
		if($('loadAction').getChildren('input').length == 0)
		{
			fUpl = new Element('input',{'type':'file','name':'file','id':'ufile'}).inject($('loadAction'));
			fImg = new Element('input',{'type':'image','src':'images/upload.gif','title':'bank visszatöltése'}).inject($('loadAction'));
		}
		else
		{
			$('loadAction').getChildren('input').each(function(element){
				element.dispose();
			});
		}
		
	});
	
	$('saveAction').addEvent('submit',function(e){
		e.stop();
		saveBank(e);
	});
	
	
	$('saveBank').addEvent('click',
		function(e){
			e.stop();
			if(bankTom.length == 0)
			{
				return false;
			}
			
			if($('saveAction').getChildren('input').length == 0)
			{
				fName = new Element('input',{'type':'text','name':'fname','value':''}).inject($('saveAction'),'bottom');
				$('saveAction').appendText('Letöltés névvel: ','top');
				fDload = new Element('input',{'type':'image','src':'images/compfile.gif','title':'fájl letöltése'}).inject($('saveAction'),'bottom');

			}
			else
			{
				($('saveAction').getChildren('input')).each(function(element){
					element.dispose();
				});
				$('saveAction').set('text','');	
			}
			
			//saveBank(fName);
		});*/
	
	$('clearItem').addEvent('click',function(e){

		$('Vitem').removeProperty('value');
		fBoxHide();
	});

	$('urit').addEvent('click',function(e){
		e.stop();
		if(confirm('Biztosan kiüríted a bankod?'))
			bEmpty();
	});
	
	$('szamol').addEvent('click',function(){
		sumBank();
	});
	
	getItems();
	
	$('item').addEvent('submit',function(e){
		e.stop();
		getItems();
		$('szamol').blur();
	});
	
	var kiegeszit = new Autocompleter.Ajax.Json('Vitem', 'ge_json.php', {
        'postVar': 'keres',
				'minLength': 3,
				'autoSubmit':true,
				'overflow':true,
				'overflowMargin':50
    });

	var itemKeretTop = function(){

		div = new Element('div',{'class':'panel'});
		span1 = new Element('span',{'class':'corners-top'}).inject(div,'top');
		span2 = new Element('span').inject(span1);
		
		return div;
	};


	var itemKeretBottom = function(){

		span3 = new Element('span',{'class':'corners-bottom'});
		span4 = new Element('span').inject(span3);
		
		return span3;
	};
	
	var tomAssoc = function(tom){
		tom2 = Array();
		tom.each(function(item,index){
			tom2[item.item_id] = item;
		});
		
		return tom2;
	};
	

	

	window.addEvent('resize',function(){
		szeles = $('inside').getStyle('width').toString();
		szeles = szeles.replace('px','');
		if($('foundBox').getStyle('display') == 'none')
			szeles = szeles.toInt()-10;
		else
			szeles = szeles.toInt()-380;

		$('bankPanel').morph({width: szeles});
		kinyit = new Fx.Morph($('bankHeader'),{duration: 'short'});
		
		kinyit.start({width: szeles}).chain(function(){
			if($('bankHeader').getStyle("height").toInt() == 0)
				kinyit.start({height:22});//22
		});
		
	});
	
	var fBoxHide = function(){
		meretez = new Fx.Morph($('foundBox'),{duration: 'short'});
		meretez.start({height:0}).chain(
			function(){
				meretez.start({width:0}).chain(function(){
					$('foundBox').setStyle('display', 'none');
					window.fireEvent('resize');
				});
			});
		$('rightPanel').setStyle('float','left');
		

	};
	
	var fBoxShow = function(){
		$('rightPanel').setStyle('float','right');
		$('foundBox').setStyles({'display':'block'});
		var hosszu = foundI.getStyle('height').toInt();
		meretez = new Fx.Morph($('foundBox'));
		meretez.start({width:347}).chain(
			function(){
				meretez.start({height:hosszu+10});
			});
		
		window.fireEvent('resize');
	};
	

	var saveBank = function(e){
		sortBankTom(bankRendez.serialize(1));
		$('sortbybank').fireEvent('click',e);
		
		var tom = bankTom;
		var tom2 = new Array();
		var i = 0;
		tom.each(function(item,index){
			if(item != null)
			{
				delete item['img'];
				delete item['item_name'];
				delete item['item_name_clean'];
				delete item['last_updated'];
				delete item['price'];
				delete item['sPrice'];
				tom2[i] = item;
				i++;
			}

		});
				
		var Jtom = JSON.encode(tom2);

		var tomInpt= new Element('input',{'type':'hidden','value':Jtom,'name':'tom'}).inject($('saveAction'));
		$('saveAction').submit();

		setTimeout(function(){
			$('saveAction').getChildren('input').each(function(element){
				element.dispose();
			});
			$('saveAction').set('text','');
		},30);	

		
	};
	
		


});


