window.addEvent('domready', function(){
	var itemclass;
	var itemsubclass;
	
	$$('div.details').slide('hide');
	$$('span.inner').each(function(span) { span.style.display = 'none'; });
	
	$$('a.character').addEvent('click',function(e){
		e.stop();
		$$('div.character').slide('toggle');
		$$('div.points').slide('hide');
	}
	);
	
	$$('a.points').addEvent('click',function(e){
		e.stop();
		$$('div.points').slide('toggle');
		$$('div.character').slide('hide');
	}
	);
	
	$$('a.vote_infos').addEvent('click',function(e){
		e.stop();
		Sexy.info('Chaque vote vous rapporte 2 points The Third Age , soit 12 points par heure.Vous pouvez ainsi totaliser plus de 2000 points par mois en ne consacrant que quelques secondes à voter pour votre serveur.',
		{textBoxBtnOk: 'Fermer'});
	}
	);
	
	$$('a.paypal').addEvent('click',function(e){
		e.stop();
		var message = "Si vous choisissez le système paypal, vous recevrez 500Points pour 1€20 versé ";
		message += "(les frais fixes paypal étant beaucoup moins élevés que ceux allopass) mais le crédit ne sera pas immédiat,";
		message += "il faudra envoyer un Mp à l'attention d'Era ou d'Ultima, qui vous créditera les points, après vérification de la transaction.";
		message += "<br>Cliquez ci-dessous pour commencer la transaction";
	    message += "<form action='https://www.paypal.com/cgi-bin/webscr' method='post' style='margin-top:20px;margin-left:90px;'><input type='hidden' name='cmd' value='_s-xclick'><input type='hidden' name='hosted_button_id' value='1947893'><input type='image' src='../images/paypal.png' border='0' name='submit' alt=''><img alt='' border='0' src='https://www.paypal.com/fr_FR/i/scr/pixel.gif' width='1' height='1'></form> <br />";

		Sexy.info(message, {
			textBoxBtnOk: 'Fermer'});
	}
	);
	
	$$('a.bug').addEvent('click',function(e){
		e.stop();
		Sexy.info('Le module de bug boutique est actuellement fermé suite aux mises à jour de la boutique, susceptibles de règler la majorité des problèmes.Si une erreur venait tout de même à se produire, prière de nous la rapporter par Mp ou via le forum. Merci',
		{textBoxBtnOk: 'Fermer'});
	}
	);
	
	$$('select.character_choice').addEvent('change', function(e){
		e.stop();
		$('level_price').set('html','Pas de prix');
		$('submit').disabled = true;
		var rq = new Request({
					url: 'level?character='+this.options[this.selectedIndex].value,
					method: 'GET', 
					onSuccess: function(response){
						$$('select.level_choice').set('html', response);
						}
				});
				rq.send();
	});
	
	$$('select.level_choice').addEvent('change', function(e){
		e.stop();
		if(this.selectedIndex != 0)
		{
			var current = this.options[this.selectedIndex].value - this.selectedIndex + 1;
			var nb = this.selectedIndex ;
			$('level_price').set('html',getLevelPrice(current, nb)+' points');
			$('submit').disabled = false;
		}
		else
		{
			$('submit').disabled = true;
		}
			
	});
	
	$$('form.level_shop').addEvent('submit', function(e) {
		e.stop();
		Sexy.confirm('Commander des niveaux pour un total de '+ $('level_price').get('html') +' TTA ?', {
			textBoxBtnOk: 'Oui',
			textBoxBtnCancel: 'Annuler',
			onComplete:
			function(returnvalue) {
				if (returnvalue) {
					$$('form.level_shop').set('send', {
						onComplete: function(response) { 
						if(response == 0){ 
						Sexy.info('Vous allez reçevoir votre commande in game, merci !', {
							onComplete: function(returnvalue){ document.location.replace('/shop');}});
							}
						else{
						Sexy.alert('Crédit insuffisant !');						
						}
						}
					});
					$$('form.level_shop').send();
				}
			}
		});
	});
	
	$$('a.unlock').addEvent('click', function(e){
		e.stop();
		Sexy.confirm('Débloquer vos personnages, en cas de passage sous la map ou tout autre problème les téléporteront tous au foyer.Ce service est entièrement gratuit et vous devez être déconnecté pour qu\'il fonctionne. ', {
			textBoxBtnOk: 'Suivant',
			textBoxBtnCancel: 'Annuler',
			onComplete:
			function(returnvalue) {
				if (returnvalue) {
					var rq = new Request({
							url: '/shop/unlock',
							method: 'GET',
							onSuccess: function(response) { 
								Sexy.info('Personnages débloqués, bon jeu !', {
									onComplete: function(rv){document.location.replace('/shop');}});
							}
					});
			 
					rq.send();
				}
			}	
		});
	});
	
	$$('select.character_choice_name').addEvent('change', function(e){
		e.stop();
		$('submit').disabled = true;
		if(this.selectedIndex > 0)
		{
			$('rename').disabled = false;
		}
		else
		{
			$('rename').disabled = true;
		}
	});

	$$('select.character_choice_reset').addEvent('change', function(e){
		e.stop();
		if(this.selectedIndex > 0)
		{
			$('submit').disabled = false;
		}
		else
		{
			$('submit').disabled = true;
		}
	});
	
	$$('form.reset_shop').addEvent('submit', function(e) {
		e.stop();
		Sexy.confirm('Commander le changement d\'apparence, de nom , de sexe pour 2000 points TTA ? (vous devez être déconnecté pour que le service fonctionne.)', {
			textBoxBtnOk: 'Oui',
			textBoxBtnCancel: 'Annuler',
			onComplete:
			function(returnvalue) {
				if (returnvalue) {
					$$('form.reset_shop').set('send', {
						onComplete: function(response) { 
						if(response == 0){ 
						Sexy.info('Vous allez reçevoir votre commande in game, merci !', {
							onComplete: function(returnvalue){ document.location.replace('/shop');}});
							}
						else{
						Sexy.alert('Crédit insuffisant !');						
						}
						}
					});
					$$('form.reset_shop').send();
				}
			}
		});
	});

	$$('select.character_choice_money').addEvent('change', function(e){
		e.stop();
		$('money_price').set('html','Pas de prix');
		$('submit').disabled = true;
		if(this.selectedIndex > 0)
		{
			var rq = new Request({
						url: 'money?character='+this.options[this.selectedIndex].value,
						method: 'GET', 
						onSuccess: function(response){
							$$('td.character_richness').set('html', response);
							$('money_amount').disabled = false;
							}
					});
					rq.send();
		}
		else
		{
			$$('td.character_richness').set('html', 'null');
			$('money_amount').disabled = true;
		}
	});
	
	if($('money_amount'))
	{
		$('money_amount').addEvent('keyup', function(e){
		e.stop();
		if(isNumeric(this.value) && this.value > 0){
			$('money_price').set('html',generateAmount(this.value) +' points');
			$('submit').disabled = false;
		}else{
			if(isNumeric(this.value) && this.value == ''){
				this.value = 0;
				$('submit').disabled = true;
				$('money_price').set('html', 0 +'point');
			}else{
			Sexy.alert('Erreur de saisie');
			this.value = 0;
			$('submit').disabled = true;
			$('money_price').set('html', 0 +'point');
			}}
		});
	}
	
	$$('form.money_shop').addEvent('submit', function(e) {
		e.stop();
		Sexy.confirm('Commander de l\'or pour un total de '+ $('money_price').get('html') +' TTA ? (vous devez être déconnecté pour que le service fonctionne.)', {
			textBoxBtnOk: 'Oui',
			textBoxBtnCancel: 'Annuler',
			onComplete:
			function(returnvalue) {
				if (returnvalue) {
					$$('form.money_shop').set('send', {
						onComplete: function(response) { 
						if(response == 0){ 
						Sexy.info('Vous allez reçevoir votre commande in game, merci !', {
							onComplete: function(returnvalue){ document.location.replace('/shop');}});
							}
						else{
						Sexy.alert('Crédit insuffisant !');						
						}
						}
					});
					$$('form.money_shop').send();
				}
			}
		});
	});
	
	if($('rename'))
	{
		$('rename').addEvent('keyup', function(e){
			e.stop();
			if(testName(this.value))
			{
				var rq = new Request({
						url: 'name?new='+this.value,
						method: 'GET', 
						onSuccess: function(response){
								if(response == 'true'){
									$('availability').set('html', 'Disponible');
									$('availability').style.color = "green";
									$('submit').disabled = false;
								}else{
									$('availability').set('html', 'Déjà pris');
									$('availability').style.color = "red";
									$('submit').disabled = true;
								}	
							}
					});
					rq.send();
			}
			else
			{
				if(this.value.length < 2)
					$('availability').set('html', 'Nom trop court');
				if(this.value.length > 12)
					$('availability').set('html', 'Nom trop long');
				if(this.value.length >= 2 && this.value.length <= 12)
					$('availability').set('html', 'Nom invalide');
				$('availability').style.color = "red";
				$('submit').disabled = true;
			}
		});
	}
	
	$$('form.name_shop').addEvent('submit', function(e) {
		e.stop();
		Sexy.confirm('Renommer votre personnage en "' + $('rename').value +'" pour la somme de 1500 points TTA ? (vous devez être déconnecté pour que le service fonctionne.)', {
			textBoxBtnOk: 'Oui',
			textBoxBtnCancel: 'Annuler',
			onComplete:
			function(returnvalue) {
				if (returnvalue) {
					$$('form.name_shop').set('send', {
						onComplete: function(response) { 
						if(response == 0){ 
						Sexy.info('Vous allez reçevoir votre commande in game, merci !', {
							onComplete: function(returnvalue){ document.location.replace('/shop');}});
							}
						else{
						Sexy.alert('Crédit insuffisant !');						
						}
						}
					});
					$$('form.name_shop').send();
				}
			}
		});
	});
	
	$$('a.wg').addEvent('click', function(e){
		e.stop();
		Sexy.confirm('Nous offrons à tout nouvel arrivant sur le serveur des cadeaux pour lui souhaiter la bienvenue et l\'aider à bien débuter.<br>Ils sont constitués d\'un sac 34 emplacements et de 20 pièces d\'or.<br> Il n\'est possible de les obtenir qu\'une seul fois par joueur.<br> Bon jeu sur The Third Age ! <br> Rappel, vous devez être déconnecté lors de la transaction', {
			textBoxBtnOk: 'Continuer',
			textBoxBtnCancel: 'Annuler',
			onComplete:
			function(returnvalue) {
				if (returnvalue) {
					var rq = new Request({
							url: '/shop/welcomegifts',
							method: 'GET',
							onSuccess: function(response) {
								if(response == 'ok'){
								Sexy.info('Cadeaux envoyés par mail in game , bienvenue bon jeu !');
							}else{
									Sexy.alert('Vous avez déjà demandé vos cadeaux !');
							}
							}
					});
			 
					rq.send();
				}
			}	
		});
	});
	
	$$('a.menu').each(function(link) {
		link.addEvent('click', function(e){
		e.stop();
		var param = link.get('class');
		param = param.split(" ");
		var rq = new Request({
							url: link.href+'?class='+param[1]+'&subclass='+param[2],
							method: 'GET',
							onRequest: $('corpse').set('html', '<img src="../images/ajax-loader.gif" title="chargement" class="loading">'),
							onSuccess: function(response) {
								itemclass = param[1];
								itemsubclass = param[2];
								$('corpse').set('html', response);
							}});
			rq.send();
	
		});
	});
	
	$$('a.pager').each(function(link) {
		link.addEvent('click', function(e){
		e.stop();
		var rq = new Request({
							url: link.href,
							method: 'GET',
							onRequest: $('corpse').set('html', '<img src="../images/ajax-loader.gif" title="chargement" class="loading">'),
							onSuccess: function(response) {
								$('corpse').set('html', response);
								$$('a.pager').each(function(link) {
									link.addEvent('click', function(e){
									e.stop();
									var rq = new Request({
														url: link.href,
														method: 'GET',
														onRequest: $('corpse').set('html', '<img src="../images/ajax-loader.gif" title="chargement" class="loading">'),
														onSuccess: function(response) {
															$('corpse').set('html', response);
														}});
										rq.send();
								
									});
								});
							}});
			rq.send();
	
		});
	});
	
	$$('a.menuheader').each(function(link) {
		link.addEvent('click', function(e){
		e.stop();
		var param = link.get('class');
		param = param.split(" ");
		if($(param[1]).style.display=='none')
		{
			$$('span.inner').each(function(span) { span.style.display = 'none'; });
			$(param[1]).style.display = 'block';
		}
		else
			$(param[1]).style.display = 'none';
		});
	});
	
	$$('a.sbn').addEvent('click', function(e){
			e.stop();
			var rq = new Request({
					url: 'item?sbn='+$('name_criteria').value,
					method: 'GET', 
					onRequest: $('corpse').set('html', '<img src="../images/ajax-loader.gif" title="chargement" class="loading">'),
					onSuccess: function(response){
						$('corpse').set('html', response);
					}
					});
				rq.send();
		});
		
	$$('a.sbe').addEvent('click', function(e){
			e.stop();
			var rq = new Request({
					url: 'item?id='+$('entry_criteria').value,
					method: 'GET',
					onRequest: $('corpse').set('html', '<img src="../images/ajax-loader.gif" title="chargement" class="loading">'),
					onSuccess: function(response){
						$('corpse').set('html', response);
					}
					});
				rq.send();
		});
		
		$$('input.quality').addEvent('click', function(e){
			var rq = new Request({
					url: 'item?class='+itemclass+'&subclass='+itemsubclass+'&quality='+this.value,
					method: 'GET',
					onRequest: $('corpse').set('html', '<img src="../images/ajax-loader.gif" title="chargement" class="loading">'),
					onSuccess: function(response){
						$('corpse').set('html', response);
					}
					});
				rq.send();
		});
		
		$$('select.character_choice_item').addEvent('change', function(e){
			if(this.selectedIndex > 0)
				$('submit').disabled = false;
			else
				$('submit').disabled = true;
		});
		
		$$('form.item_shop').addEvent('submit', function(e) {
		e.stop();
		Sexy.confirm('Acheter l\'objet "' + $('item_name').get('html') +'" pour la somme de '+$('item_price').get('html')+' et l\'envoyer à '+$('character_choice_item').options[$('character_choice_item').selectedIndex].innerHTML+' ? (vous devez être déconnecté pour que le service fonctionne.)', {
			textBoxBtnOk: 'Oui',
			textBoxBtnCancel: 'Annuler',
			onComplete:
			function(returnvalue) {
				if (returnvalue) {
					$$('form.item_shop').set('send', {
						onComplete: function(response) {
						if(response == 0){ 
						Sexy.info('Vous allez reçevoir votre commande in game, merci !', {
							onComplete: function(returnvalue){ document.location.replace('/shop');}});
							}
						else{
						Sexy.alert('Crédit insuffisant !');						
						}
						}
					});
					$$('form.item_shop').send();
				}
			}
		});
	});
	
	if($('item_price'))
	{
		$('item_price').addEvent('keyup', function(e){
			e.stop();
			if(testPrice(this.value))
			{
				$('amount').set('html', '');
				$('submit').disabled = false;
			}
			else
			{
				$('amount').set('html', 'Montant invalide');
				$('amount').style.color = "red";
				$('submit').disabled = true;
			}
		});
	}
	
	// Create the new slider instance
	
	$$('div.slider').each(function(el, i){
		var wished = el.getParent('tr').getElement('.wished');
		var print = el.getParent('tr').getElement('.wished_print');
		var price = el.getParent('tr').getElement('.price');
		new Slider(el, el.getElement('.knob'), {
			steps: el.getParent('tr').getElement('.max').get('html').toInt()+0.5,	// There are 35 steps
			range: [el.getParent('tr').getElement('.value').get('html').toInt()],	// Minimum value is 8
			onChange: function(value){
			// Everytime the value changes, we change the font of an element
				wished.value = value;
				print.value  = value;
				price.value = getSkillPrice(el.getParent('tr').getElement('.value').get('html').toInt(), value)+'pts';
			}
		}).set(el.getParent('tr').getElement('.value').get('html').toInt());
	}
	);
}
);

function getLevelPrice(level, qty) {
	var maxlevel = new Array(30, 39, 59, 69, 75, 80);
	var prixUnitaire = new Array(150, 225, 375, 500, 600, 750);
	var prix = 0;
	for(var i = 0 ; i < qty ; i++) {
		for(var j = 0 ; j < maxlevel.length ; j++) {
			if(level + 1 + i <= maxlevel[j]) {
				prix += prixUnitaire[j];
				break;
			}
		}
	}
	return prix;
}

function getSkillPrice(actual, wanted)
{
	var price = 0;
	if(actual >= 300)
		price = (wanted - actual) * 20;
	if(actual < 300 && actual >= 225)
		price = (wanted - actual) * 16;
	if(actual < 225 && actual >= 150)
		price = (wanted - actual) * 13;
	if(actual < 150 && actual >= 75)
		price = (wanted - actual) * 10;
	if(actual < 75 && actual >= 1)
		price = (wanted - actual) * 7;
	return price;
}


function generateAmount(amount){
	var price;
	if(amount > 1000)
		price = 500 + (500 / 1.5) + ((amount - 1000)/2);
	if(amount >= 500 && amount <= 1000)
		price = 500 + (amount - 500)/1.5;
	if(amount > 0 &&  amount < 500)
		price = amount;
	return Math.round(price);
}

function isNumeric(input){
    return !isNaN(input);
}

function testName(name) {
	if (name.match(/^[\w ]+$/) && !name.match(/[_ ]/) && !name.match(/\d/) && name.length >= 2 && name.length <= 12 )
		return true;
	else
		return false;
}

function testPrice(name) {
	if (name > 0 && name < 100000 && name.length > 0)
		return true;
	else
		return false;
}
