$(document).ready(function() {	
	/** récupération de l'environnement **/
	var temp = $(location).attr('host').split('.') ;
	if(temp[2] == 'dev')
		env = 'dev' ;
	else if(temp[2] == 'prd')
		env = 'prd' ;
	else
		env = 'fr' ;

	/***************************************************************************
	*** Gestion photos
	****************************************************************************/

	function message(action, result)
	{
		switch(action + ',' + result)
		{
			// Insert
			case 'insert,0'           : return "Photo téléchargée avec succès, celle-ci va être validée par nos services." ;
			case 'insert,1'           : return "Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services." ;
			case 'insert,2'           : return "Erreur de téléchargement. Veuillez essayer de nouveau." ;
			case 'insert,3'           : return "Cette photo est trop grande : vous ne pouvez pas télécharger des photos de plus de 4&nbsp;Mo" ;
			case 'insert,4'           : return "Vous ne pouvez télécharger que des images au format JPG. Si vos photos sont d'un format différent, merci de nous les transmettre par email à l'adresse <a href=\"$mailto\">photos@pap.fr</a> en précisant votre nom et votre référence d'annonce." ;
			// Rotate   
			case 'rotate,0'           : return "" ;
			case 'rotate,1'           : return "Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services." ;
			// Crop
			case 'crop,0'             : return "" ;
			case 'crop,1'             : return "Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services." ;
			// Update                 
			case 'update,0'           : return "" ;
			case 'update,1'           : return "Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services." ;
			case 'update,2'           : return "Erreur de téléchargement. Veuillez essayer de nouveau." ;
			case 'update,3'           : return "Cette photo est trop grande : vous ne pouvez pas télécharger des photos de plus de 4&nbsp;Mo" ;
			case 'update,4'           : return "Vous ne pouvez télécharger que des images au format JPG. Si vos photos sont d'un format différent, merci de nous les transmettre par email à l'adresse <a href=\"papvacances@pap.fr\">papvacances@pap.fr</a> en précisant votre nom et votre référence d'annonce." ;
			// Delete                 
			case 'delete,0'           : return "" ;
			case 'delete,1'           : return "Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services." ;
			case 'delete_invalide,0'  : return "" ;
			case 'delete_invalide,1'  : return "Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services." ;		
			// Order                  
			case 'order,0'            : return "" ;
			case 'order,1'            : return "Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services." ;
			default :
				return "Une erreur inconnue est survenue." ;
		}
	}	
			
	var ajax_error = "Une erreur est survenue. Le serveur est indisponible. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services." ;
	
	
	function show_error(message)
	{
		$('#message').html("<p class='erreur'>" + message + "</p>") ;
	}
	
	function show_success(message)
	{
		$('#message').html("<p class='succes'>" + message + "</p>") ;
	}
	
	function resize_fancybox(width, height)
	{
		content = $('#fancybox-content') ;
		wrap = $('#fancybox-wrap') ;
		marge_horizontale = 100 ;
		marge_verticale = 100 ;
	
		if(width < 670)
			width = 670 ;

		if(width > ($(window).width() - marge_horizontale) && height > ($(window).height() - marge_verticale)) 
		{
			wrap.width($(window).width() - marge_horizontale) ; 
			content.width($(window).width() - marge_horizontale) ; 
			wrap.height($(window).height() - marge_verticale + 20) ;
			content.height($(window).height() - marge_verticale) ;
		}
		else if(width > ($(window).width() - marge_horizontale))
		{
			wrap.width($(window).width() - marge_horizontale) ; 
			content.width($(window).width() - marge_horizontale) ; 
			wrap.height(height + 40) ;
			content.height(height + 20) ;
		}			
		else if(height > ($(window).height() - marge_verticale))
		{
			wrap.width(width) ; 
			content.width(width) ; 
			wrap.height($(window).height() - marge_verticale + 20 ) ;
			content.height($(window).height() - marge_verticale) ;
		}		
		else
		{
			wrap.width(width) ; 
			content.width(width) ; 
			wrap.height(height + 40) ;
			content.height(height + 20) ;
		}
	
		$('#fancybox-outer').css("border","1px solid #666") ;
		$('#fancybox-wrap' ).css("border","1px solid #999") ;
		$('#fancybox-wrap' ).css("padding","10px") ;
		
		$.fancybox.resize() ;
	}
	
	if($('#gestion_photos').length > 0)
	{
		$.ajaxSetup({
			cache: false
		}) ;

		
		reference = $('#gestion_photos').metadata().reference ;
		annonces_id = $('#gestion_photos').metadata().annonces_id ;
		journal = $('#gestion_photos').metadata().journal ;
		nb_photos = parseInt($('#gestion_photos').metadata().nb_photos) ;
		nb_photos_max = parseInt($('#gestion_photos').metadata().nb_photos_max) ;
	
		function photos_reload()
		{
			$('#photos').load('/ajax/photos.php?reference='+ reference) ;
			
			if(swfobject.hasFlashPlayerVersion("10"))
			{
				$('#message').html("") ;
				if (nb_photos < nb_photos_max)
					$('#gestion_upload').show() ; 
				else
					$('#gestion_upload').hide() ; 
			}
			else
			{
				if (nb_photos < nb_photos_max)
					$('#insert_form').show() ; 
			}
		}
		
		photos_reload() ;

		// on checke la version de flash
		if(!swfobject.hasFlashPlayerVersion("10"))
		{
			$('#gestion_upload').hide() ;
			$('#message-flash').show() ;
			if (nb_photos < nb_photos_max )
				$('#insert_form').show();
		}
		else
		{
			/** upload photo **/
			$('#file_upload').uploadify({
				'uploader'       : '/vendor/jquery.uploadify-v2.1.4/uploadify.swf',
				'script'         : 'http://upload.pap.' + env + '/upload.json.php',
				'scriptAccess'   : 'always',
				'scriptData'     : {'annonces_id':annonces_id},
				'cancelImg'      : '/vendor/jquery.uploadify-v2.1.4/cancel.png',
				'method'         : 'post',
				'folder'         : '/',
				'auto'           : true,
				'fileExt'        : '*.jpg;*.jpeg',
				'fileDesc'       : "Types d'images autorisées (.JPG, .JPEG)",
				'buttonImg'      : '/images/boutons/photo-add.png',
				'width'          : 132,
				'height'         : 90,
				'queueID'        : 'custom-queue',
				'removeCompleted': false,
				'onError'        : function(ev, queueID, fileObj, errorObj) {
					show_error("Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services.") ;
				},
				'onComplete'     : function(event, ID, fileObj, response, data) {
					response = jQuery.parseJSON(response) ;
					if (response.result_cdr == 0)
						$.ajax({
							url: '/ajax/photo-update.php?action=insert',
							data : {
								reference      : reference,
								pho_nom_unique : response.hash,
								pho_largeur    : response.width,
								pho_hauteur    : response.height,
								pho_journal    : journal
							}, 
							dataType: "json",
							success: function(response) {
								if(response.resultat == 0)
								{
									nb_photos++ ;
									photos_reload() ;
									$('#custom-queue').hide() ;
									show_success(message('insert', 0)) ;
								}
								else
									show_error(response.message) ;
							},
							error : function(jqXHR, textStatus, errorThrown) {
								show_error(ajax_error) ;
							}
						});
					else
					{
						show_error(message('insert', response.result_cdr)) ;
						$('#custom-queue').hide() ;
					}
				},
				'onSelect  '     : function(event,data) {
					$('#custom-queue').show() ;
				}
			});
				
		}

		$('.photos-actions a').livequery(function() {
			$(this).fancybox({'padding' : 0, 'margin' : 0, 'type' : 'inline'}) ;
		}) ;
		
		/** affichage de l'écran d'édition de la photo **/
		$('.photo').livequery(function(){
			 $(this).fancybox({
			 	'padding'       : 0, 
			 	'margin'        : 0,
				'width'         : 600,
				'height'        : 800,
				'autoScale'     : false,
				'transitionIn'  : 'none',
				'transitionOut' : 'none',
				'type'          : 'iframe',
				'onClosed'      : function() {
					photos_reload() ;
					
				},
				'onComplete' : function(element) {
					width = $(element).metadata().width ;
					height = $(element).metadata().height ;
					
					resize_fancybox(width + 50, height + 80) ;
				} 
			});
		});
		

		
		function saveOrder(order_serial)
		{
			$.ajax({
				url: '/ajax/photo-update.php?action=order',
				data : {
					reference    : reference,
					order_serial : order_serial
				}, 
				async : false,
				dataType: "json",
				success: function(response) {
					if(response.resultat != 0)
						show_error(response.message) ;
				},
				error : function(jqXHR, textStatus, errorThrown) {
					show_error(ajax_error) ;
				}
			});
		}
		
		// Sortable
		$("#photos_liste").livequery(function() {
			$(this).sortable({
				update: function() {
					saveOrder($("#photos_liste").sortable('serialize')) ;
				},
				placeholder: "placeholder", 
				forcePlaceholderSize: true,
				items: 'li'
			});
		}) ;
	
		/** suppression d'une photo invalide **/
		var delete_name ;
		$('#photos_invalides a').fancybox({
			'padding'    : 0, 
			'margin'     : 0,
			'onComplete' : function(element){
				delete_name = $(element).metadata().pho_nom_unique ;
			}
		}) ;
		
		$('#invalides_ok').click(function(){
				$.ajax({
					url: '/ajax/photo-update.php?action=delete_invalide',
					data : {
						reference          : reference,
						pho_nom_unique     : delete_name
					}, 
					dataType: "json",
					success: function(data) {
						if(data.resultat == 0)
						{	
							$('#invalide_' + delete_name).closest('td').hide() ;
							if($('#photos_invalides td:visible').length == 0)
								$('#refusees-actions').fadeOut() ;
						}	
					},
					error : function(jqXHR, textStatus, errorThrown) {
					}
				}) ;
			parent.$.fancybox.close() ;
		}) ;
		
		$('#invalides_retour').click(function(){
			parent.$.fancybox.close() ;
		}) ;
		
	}
	
	/***************************************************************************
	*** Edition des photos 
	****************************************************************************/
	
	if($('#photo_edit').length > 0)
	{
		$.ajaxSetup({
			cache: false
		});
		
		reference = $('#photo_edit').metadata().reference ;
		annonces_id = $('#photo_edit').metadata().annonces_id ;
		journal = $('#photo_edit').metadata().journal ;
		pho_nom_unique = $('#photo_edit').metadata().pho_nom_unique ; 
		
		// rotation droite
		$("#button-rotate-90").click(function(){
			saveRotate(90) ;
		});
	
		// rotation gauche
		$("#button-rotate-270").click(function(){
			saveRotate(270) ;
		});
		
		function saveRotate(angle)
		{
			$.ajax({
				url: 'http://upload.pap.' + env + '/rotate.json.php?callback=?',
				data : {
					annonces_id : annonces_id,
					hash        : pho_nom_unique,
					angle       : angle
				}, 
				dataType: "jsonp",
				success: function(response) {
					new_width = $('#photo').height() ;
					new_height = $('#photo').width() ;
					if (response.result_cdr == 0)
						$.ajax({
							url: '/ajax/photo-update.php?action=rotate',
							data : {
								reference          : reference,
								pho_nom_unique     : response.hash,
								pho_nom_unique_old : pho_nom_unique,
								pho_largeur        : new_width,
								pho_hauteur        : new_height,
								pho_journal        : journal
							}, 
							dataType: "json",
							success: function(data) {
								if(data.resultat == 0)
								{
									pho_nom_unique = response.hash ;
									
									// on réinitialise la photo pour le crop
									$('#photo').attr('src', data.src) ;
								}
								else
									show_error(data.message) ;
							},
							error : function(jqXHR, textStatus, errorThrown) {
								show_error(ajax_error) ;
							}
						});
					else
						show_error(message('rotate', response.result_cdr)) ;
				},
				error : function(jqXHR, textStatus, errorThrown) {
					show_error(ajax_error) ;
				}
			});
		}
				
		/** suppression **/
		$('#button-delete').click(function () {
			if(confirm("La photo va être supprimée. Continuer ?"))
			{
				var resultat ; // pour ie9
				$.ajax({
					url: '/ajax/photo-update.php?action=delete',
					data : {
						reference          : reference,
						pho_nom_unique     : pho_nom_unique
					}, 
					async : false,
					dataType: "json",
					success: function(data) {
						resultat = data.resultat ;
						if(data.resultat == 0)
							parent.nb_photos-- ;
						else
							show_error(data.message) ;
					},
					error : function(jqXHR, textStatus, errorThrown) {
						resultat = 1
						show_error(ajax_error) ;
					}
				}) ;
				
				if(resultat == 0)
					parent.$.fancybox.close() ;
			}
		}) ;
		
		if(!$.browser.msie || $.browser.msie && $.browser.version >= 8)
		{
			/** Crop **/
			var jcrop_api ;
			$("#button-crop-on").click(function(){
				$("#button-crop-off").parent('td').show() ;
				$("#button-crop-save").parent('td').show() ;
				$("#button-crop-on").parent('td').hide() ;
				
				// on cache tous les autres boutons
				$("#button-rotate-90").parent('td').hide() ;
				$("#button-rotate-270").parent('td').hide() ;
				$("#button-upload").parent('td').hide() ;
				$("#button-delete").parent('td').hide() ;
				
				initJcrop() ;
			});
		
			$("#button-crop-off").click(function(){
				$("#button-crop-off").parent('td').hide() ;
				$("#button-crop-save").parent('td').hide() ;
				$("#button-crop-on").parent('td').show() ;
				
				// tous les autres boutons réapparaissent
				$("#button-rotate-90").parent('td').show() ;
				$("#button-rotate-270").parent('td').show() ;
				$("#button-upload").parent('td').show() ;
				$("#button-delete").parent('td').show() ;
	
				
				jcrop_api.destroy();
			});
			
			// init
			function initJcrop()
			{
				jcrop_api = $.Jcrop('#photo') ;
			
				jcrop_api.setOptions({
					bgOpacity   : .5,
					onChange    : preview,
					sideHandles : true
				});
				
				jcrop_api.enable();
			
				$('#photo_edit').keyup(function(e) {
					if (e.keyCode == 27)
						$("#button-crop-off").trigger('click') ;
				});
			}
			
			function preview(c)
			{
				$('#x').val(c.x) ;
				$('#y').val(c.y) ;
				$('#w').val(c.w) ;
				$('#h').val(c.h) ;
			};
		
			function saveCrop() {
				x_start = $('#x').val() ;
				y_start = $('#y').val() ;
				x_end = parseInt(x_start) + parseInt($('#w').val()) ;
				y_end = parseInt(y_start) + parseInt($('#h').val()) ;
				
				$.ajax({
					url: 'http://upload.pap.' + env + '/crop.json.php?callback=?',
					data : {
						annonces_id    : annonces_id,
						hash           : pho_nom_unique,
						left           : x_start,
						top            : y_start,
						right          : x_end,
						bottom         : y_end
					}, 
					dataType: "jsonp",
					success: function(response) {
						if (response.result_cdr == 0)
							$.ajax({
								url: '/ajax/photo-update.php?action=crop',
								data : {
									reference          : reference,
									pho_nom_unique     : response.hash,
									pho_nom_unique_old : pho_nom_unique,
									pho_largeur        : x_end - x_start,
									pho_hauteur        : y_end - y_start,
									pho_journal        : journal
								}, 
								dataType: "json",
								success: function(data) {
								if(data.resultat == 0)
								{
									pho_nom_unique = response.hash ;
								
									// on réinitialise la photo pour le crop
									$('#photo').attr('src', data.src) ;
								}
								else
									show_error(data.message) ;
									
								},
								error : function(jqXHR, textStatus, errorThrown) {
									show_error(ajax) ;
								}
							});
						else
							show_error(message('crop', response.result_cdr)) ;
						
						$("#button-crop-off").trigger('click') ;
						
					},
					error : function(jqXHR, textStatus, errorThrown) {
						show_error(ajax) ;
					}
				});
			}
		
			$('#button-crop-save').click(function(){
				if(confirm("Enregistrer le recadrage ?"))
					saveCrop() ;
				return false ;
			}) ;
			
		}
		else
		{
			$('#button-crop-off').parent('td').hide() ;
			$('#button-crop-on').parent('td').hide() ;
			$('#button-crop-save').parent('td').hide() ;
		}
		
		
		// on checke la version de flash
		if(!swfobject.hasFlashPlayerVersion("10"))
		{
			$('#file_upload').hide() ;
			$('#button-upload').click(function(){
				$('#replace_form').toggle() ;
			}) ;
		}
		else
		{
			/** upload photo **/
			$('#file_upload').uploadify({
				'uploader'       : '/vendor/jquery.uploadify-v2.1.4/uploadify.swf',
				'script'         : 'http://upload.pap.' + env + '/upload.json.php',
				'scriptAccess'   : 'always',
				'scriptData'     : {'annonces_id':annonces_id},
				'cancelImg'      : '/vendor/jquery.uploadify-v2.1.4/cancel.png',
				'method'         : 'post',
				'folder'         : '/',
				'auto'           : true,
				'width'          : 105,
				'height'         : 30,
				'fileExt'        : '*.jpg;*.jpeg',
				'fileDesc'       : "Types d'images autorisés (.JPG, .JPEG)",
				'buttonImg'      : '',
				'wmode'          : 'transparent',
				'hideButton'     : true,
				'queueID'        : 'custom-queue',
				'removeCompleted': false,
				'onError'        : function(ev, queueID, fileObj, errorObj) {
					show_error("Une erreur est survenue. Veuillez patienter quelques instants puis essayer de nouveau. Si le problème persiste, n'hésitez pas à contactez nos services.");
				},
				'onComplete'     : function(event, ID, fileObj, response, data) {
					response = jQuery.parseJSON(response) ;
					if (response.result_cdr == 0)
						$.ajax({
							url: '/ajax/photo-update.php?action=update',
							data : {
								reference          : reference,
								pho_nom_unique     : response.hash,
								pho_nom_unique_old : pho_nom_unique,
								pho_largeur        : response.width,
								pho_hauteur        : response.height,
								pho_journal        : journal
							}, 
							dataType: "json",
							success: function(data) {
								if(data.resultat == 0)
								{
									pho_nom_unique = response.hash ;
								
									// on réinitialise la photo
									$('#photo').attr('src', data.src) ;
									
									$('#custom-queue').hide() ;
								}
								else
									show_error(data.message) ;
							},
							error : function(jqXHR, textStatus, errorThrown) {
								show_error(ajax_error) ;
							}
						});
					else
					{
						show_error(message('update', response.result_cdr)) ;
						$('#custom-queue').hide() ;
					}
				}
			});
		}
	}
});


