var $j = jQuery.noConflict();

// Observateur d'évênements global
Event.observe(window, "load", loadGeneral, false);

// Fonction de liaison des fonctions aux évênements
function loadGeneral() {

	if ($('tree')) {
		setSortElement();
		setDeleteCategory();
		setDeleteArticle();
	}

	regeneratePassword();

	if( $('list_users') ) {
		setDeleteUser();
	}

	if( $('list_members') ) {
		setDeleteMember();
	}

	if( $('technical_data') ) {
		setDeleteTechnicalData();
	}

	if( $('list_members') ) {
		setToggleMember();
	}

	if( $('documents_articles') ) {
		setDeleteArticlesDocument();
	}

	if( $('files_input') ) {
		Event.observe($('new_file'), "click", addInputFiles, false);
	}

	if( $('article_status_image') ) {
		Event.observe($('article_status_image'), "click",
			function() {
				optionOverlay();
			}
		, false);
	}

	if( $('news_status_image') ) {
		Event.observe($('news_status_image'), "click",
			function() {
				optionOverlay();
			}
		, false);
	}

	/* Annulation du changement de statut d'un article */
	if( $('update_status_cancel') ) {
		Event.observe($('update_status_cancel'), "click",
			function() {
				$('overlay_options').style.display = 'none';
				$('user').style.display = 'block';
				if( $('overlay_content') ) {
					rollbackValueStatusArticle();
				} else {
					rollbackValueStatusNews();
				}
			}
		, false);
	}

	/* Changement de statut d'un article */
	if( $('update_status_submit') ) {
		Event.observe($('update_status_submit'), "click",
			function() {
				$('user').style.display = 'block';
				$('overlay_options').style.display = 'none';
				$('warning_message_status').style.display = 'block';
			}
		, false);
	}

	if( $('overlay_content') ) {
		setValueStatusArticle();
	}

	if( $('overlay_content_news') ) {
		setValueStatusNews();
	}

	if( $('validation_article') ) {
		deleteArticle();
	}

	if( $('validation_news') ) {
		deleteNews();
	}

	if( $('search_query') ) {
		Event.observe($('search_query'), 'focus',
			function(){
				if( $('search_query').value == $('search_query_string').value ) {
					$('search_query').value = '';
					$('search_query').removeClassName('field_gray');
				}
			}
		);
		Event.observe($('search_query'), 'blur',
			function(){
				if( $('search_query').value == '' ) {
					$('search_query').value = $('search_query_string').value;
					$('search_query').addClassName('field_gray');
				}
			}
		);
	}

	if ($('all_news')) {
		setDeleteNews();
	}

	if( $('parent_news') ) {
		deleteNews();
	}

	if( $('login') ) {
		$('login').focus();
	}

	if( $('form_contact') ) {
		if($('filled').value == 0){
			$('first_name').focus();
		} else{
			$('message').focus();
		}
	}

	if( $('button_user_password') ) {
		Event.observe($('button_user_password'), "click", generateUserPassword, false);
	}

	if( $('users_new_password') ) {
		Event.observe($('users_new_password'), "click", generateUserAllPasswords, false);
	}
	
	if( $('cms_menu_li_options') ) {
		Event.observe($('cms_menu_li_options'), "mouseover",
			function() {
				$('cms_menu_sub').show();
			}
		, false);
		Event.observe($('cms_menu_li_options'), "mouseout",
			function() {
				$('cms_menu_sub').hide();
			}
		, false);
	}

	if ($('gmap_agency')) {
		initialize_map();
	}
}

function setValueStatusArticle() {
	var articleStatus = ['article_status_disabled',
						'article_status_refused',
						'article_status_draft',
						'article_status_completed',
						'article_status_published'];

	articleStatus.each(function(item) {
 		if( $(item) ) {
 			Event.observe($('label_'+item), 'click',
 				function() {
 					$('current_status').innerHTML = $('label_'+item).innerHTML;
 					$('current_status_details').innerHTML = $('details_'+item).innerHTML;
 					$('current_article_status').removeClassName($('current_article_status').readAttribute('class'));
 					$('current_article_status').addClassName('cms_' + getIdValue(item, 'article_'));
 				}
 			);

 			Event.observe($(item), 'click',
 				function() {
 					$('current_status').innerHTML = $('label_'+item).innerHTML;
 					$('current_status_details').innerHTML = $('details_'+item).innerHTML;
 					$('current_article_status').removeClassName($('current_article_status').readAttribute('class'));
 					$('current_article_status').addClassName('cms_' + getIdValue(item, 'article_'));
 				}
 			);
 		}
	});
}

function rollbackValueStatusArticle() {
	var item = 'article_' + getIdValue($('old_status').value, 'cms_');

	$('warning_message_status').style.display = 'none';

	$('current_status').innerHTML = $('label_'+item).innerHTML;
	$('current_status_details').innerHTML = $('details_'+item).innerHTML;
	$('current_article_status').removeClassName($('current_article_status').readAttribute('class'));
	$('current_article_status').addClassName('cms_' + getIdValue(item, 'article_'));
	$(item).checked = true;
}

function setValueStatusNews() {
	var myOptions = ['news_status_disabled',
					'news_status_refused',
					'news_status_draft',
					'news_status_completed',
					'news_status_published'];

	myOptions.each(function(item) {
 		if( $(item) ) {
 			Event.observe($('label_'+item), 'click',
 				function() {
 					$('current_status').innerHTML = $('label_'+item).innerHTML;
 					$('current_status_details').innerHTML = $('details_'+item).innerHTML;
 					$('current_news_status').removeClassName($('current_news_status').readAttribute('class'));
 					$('current_news_status').addClassName('cms_' + getIdValue(item, 'news_'));
 				}
 			);

 			Event.observe($(item), 'click',
 				function() {
 					$('current_status').innerHTML = $('label_'+item).innerHTML;
 					$('current_status_details').innerHTML = $('details_'+item).innerHTML;
 					$('current_news_status').removeClassName($('current_news_status').readAttribute('class'));
 					$('current_news_status').addClassName('cms_' + getIdValue(item, 'news_'));
 				}
 			);
 		}
	});
}

function rollbackValueStatusNews() {
	var item = 'news_' + getIdValue($('old_status').value, 'cms_');

	$('warning_message_status').style.display = 'none';

	$('current_status').innerHTML = $('label_'+item).innerHTML;
	$('current_status_details').innerHTML = $('details_'+item).innerHTML;
	$('current_news_status').removeClassName($('current_news_status').readAttribute('class'));
	$('current_news_status').addClassName('cms_' + getIdValue(item, 'news_'));
	$(item).checked = true;
}

// Fonction de tri de la liste des catégories & articles
function setSortElement() {
	$A($$('img.sort_handle')).each(
		function(e) {
			var temp 	= $(e.id).up('div').id;
			var parent 	= $(temp).up('div').id;

			// Initialise l'élément pour qu'il devienne triable lorsque l'on passe dessus
			Event.observe(parent, "mouseover", function() {
				Sortable.create(parent, {
					tag: 'div',
					dropZoneCss: 'sort_focus',
					constraint: false,
					scroll: window
				});
			}, false);

			// Détruit l'élément triable
			Event.observe($(e.id), "mouseout", function() {
				Sortable.destroy(parent);
			}, false);

			// Enregistre les données en base de données sur relachement de la souris
			Event.observe($(e.id), "mouseup", function() {
				if( parent.substr(0, 10) == 'child_cat_' ) {
					new Ajax.Request('admin_ajax_sort_categories_list.php', {
						method: 'post',
						parameters: {'data': Sortable.serialize(parent), 'array_name': parent}
					});
				} else if( parent.substr(0, 10) == 'child_art_' ) {
					new Ajax.Request('admin_ajax_sort_articles_list.php', {
						method: 'post',
						parameters: {'data': Sortable.serialize(parent), 'array_name': parent}
					});
				}
			}, false);
		}
	);
}

function setDeleteCategory() {
	$A($$('a.delete_cat')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_cat_');
			Event.observe($(e.id), "click", function() {
				if (confirm(sprintf(strings['js_confirm_delete_category'], $('category_name_' + id ).title) ) ) {
					var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_delete_category.php';
					var datas = $H({'id': id}).toQueryString();

					var myAjax = new Ajax.Request(url,
						{
							method: 'post',
							parameters: datas,
							onComplete: function(requester){
								switch (requester.status) {
									case 200: {
										document.location.href = '/' + getLang(window.location.href) + '/scripts/admin_home.php';
										break
									}
									case 500: {
										alert(requester.responseText);
										break
									}
									default: {
										alert(strings['js_internal_error']);
										break
									}
								}
							}
						}
					);
				}
			}, false);
		}
	);
}

function setDeleteArticle() {
	$A($$('a.delete_art')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_art_');
			Event.observe($(e.id), "click", function() {
				if (confirm(sprintf(strings['js_confirm_delete_article'], $('article_name_' + id ).title) ) )  {
					var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_delete_article.php';
					var datas = $H({'id': id}).toQueryString();

					var myAjax = new Ajax.Request(url,
						{
							method: 'post',
							parameters: datas,
							onComplete: function(requester){
								switch (requester.status) {
									case 200: {
										document.location.href = '/' + getLang(window.location.href) + '/scripts/admin_home.php';
										break
									}
									case 500: {
										alert(requester.responseText);
										break
									}
									default: {
										alert(strings['js_internal_error']);
										break
									}
								}
							}
						}
					);
				}
			}, false);
		}
	);
}

function deleteArticle() {
	$A($$('a.delete_article')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_article_');
			Event.observe($(e.id), "click", function() {
				if (confirm(strings['js_confirm_action'])) {
					document.location.href = '/' + getLang(window.location.href) + '/scripts/admin_delete_article.php?id=' + id;
				}
			}, false);
		}
	);
}

/* Appel la méthode de régénération du mot de passe */
function regeneratePassword() {
	if( $('regenerate_password') ) {
		$A($$('img.regen_password')).each(
			function(e) {
				var id = getIdValue(e.id, 'regenerate_password_');
				var regenerate_message = $('regenerate_message');

				Event.observe($(e.id), "click", function() {
					if (confirm(strings['js_confirm_regenerate_password_member'])) {
						var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_regenerate_password.php';
						var datas = $H({'id': id}).toQueryString();
						var myAjax = new Ajax.Request(url,
							{
								method: 'post',
								parameters: datas,
								onComplete: function(requester){
									switch (requester.status) {
										case 200: {
											Element.show('regenerate_message');
											regenerate_message.innerHTML = requester.responseText;
											break
										}
										case 500: {
											alert(requester.responseText);
											break
										}
										default: {
											alert(strings['js_internal_error']);
											break
										}
									}
								}
							}
						);
					}
				}, false);
				//alert(id);
			}
		);
	}
}


/* Supprime une donnée technique */
function setDeleteTechnicalData() {
	$A($$('a.delete_tech_data')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_tech_data_');
			var tech_data_name = $('tech_data_name_'+id).innerHTML;
			Event.observe($(e.id), "click", function() {
				if (confirm(sprintf(strings['js_confirm_delete_tech_data'], tech_data_name) ) )  {
					var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_delete_technical_data.php';
					var datas = $H({'id': id}).toQueryString();

					var myAjax = new Ajax.Request(url,
						{
							method: 'post',
							parameters: datas,
							onComplete: function(requester){
								switch (requester.status) {
									case 200: {
										document.location.href = '/' + getLang(window.location.href) + '/scripts/admin_technical_data.php';
										break
									}
									case 500: {
										alert(requester.responseText);
										break
									}
									default: {
										alert(strings['js_internal_error']);
										break
									}
								}
							}
						}
					);
				}
			}, false);
		}
	);
}

/* Supprime un utilisateur */
function setDeleteUser() {
	$A($$('a.delete_user')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_user_');
			var title = $(e.id).title;

			Event.observe($(e.id), "click", function() {
				if( confirm(sprintf(strings['js_confirm_delete_user'], title)) )  {
					var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_delete_user.php';
					var datas = $H({'id': id}).toQueryString();

					var myAjax = new Ajax.Request(url,
						{
							method: 'post',
							parameters: datas,
							onComplete: function(requester){
								switch (requester.status) {
									case 200: {
										document.location.href = '/' + getLang(window.location.href) + '/scripts/admin_users.php';
										break
									}
									case 500: {
										alert(requester.responseText);
										break
									}
									default: {
										alert(strings['js_internal_error']);
										break
									}
								}
							}
						}
					);
				}
			}, false);
		}
	);
}

/* Supprime un abonné */
function setDeleteMember() {
	$A($$('a.delete_member')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_member_');
			var title = $(e.id).title;

			Event.observe($(e.id), "click", function() {
				if( confirm(sprintf(strings['js_confirm_delete_member'], title)) )  {
					var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_delete_member.php';
					var datas = $H({'id': id}).toQueryString();

					var myAjax = new Ajax.Request(url,
						{
							method: 'post',
							parameters: datas,
							onComplete: function(requester){
								switch (requester.status) {
									case 200: {
										document.location.href = '/' + getLang(window.location.href) + '/scripts/admin_members.php';
										break
									}
									case 500: {
										alert(requester.responseText);
										break
									}
									default: {
										alert(strings['js_internal_error']);
										break
									}
								}
							}
						}
					);
				}
			}, false);
		}
	);
}

function optionOverlay() {
	$('overlay_options').style.display = ($('overlay_options').style.display == 'block') ? 'hidden' : 'block';
	$('user').style.display = 'none';
}

function desactivateKeyEnter(e) {
	if (e.keyCode == 13 && $('overlay_options')) {
		if ($('overlay_options').style.visibility == 'visible') {
			Event.stop(e);
		}
	}
}


/* Active ou désactive un adhérent */
function setToggleMember() {
	$A($$('input.toggle_activate_member')).each(
		function(e) {
			var id = getIdValue(e.id, 'enable_member_');
			Event.observe($(e.id), "click", function() {
				var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_toggle_member.php';
				var datas = $H({'id': id}).toQueryString();

				var myAjax = new Ajax.Request(url,
					{
						method: 'post',
						parameters: datas,
						onComplete: function(requester){
							switch (requester.status) {
								case 200: {
									if( $('enable_member_'+id).checked == true ) {
										Element.removeClassName('member_'+id, 'disabled');
										Element.removeClassName('email_'+id, 'disabled');
										Element.removeClassName('areas_'+id, 'disabled');
									} else {
										Element.addClassName('member_'+id, 'disabled');
										Element.addClassName('email_'+id, 'disabled');
										Element.addClassName('areas_'+id, 'disabled');
									}

									break
								}
								case 500: {
									// Coche ou recoche la Checkbox
									if( $('enable_member_'+id).checked == true ) {
										$('enable_member_'+id).checked = false;
									} else {
										$('enable_member_'+id).checked = true;
									}
									alert(requester.responseText);
									break
								}
								default: {
									alert(strings['js_internal_error']);
									break
								}
							}
						}
					}
				);
			}, false);
		}
	);
}

function setDeleteNews() {
	$A($$('a.delete_news')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_news_');
			Event.observe($(e.id), "click", function() {
			if (confirm(sprintf(strings['js_confirm_delete_news'], $('news_name_' + id ).title) ) )  {
					var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_delete_news.php';
					var datas = $H({'id': id}).toQueryString();

					var myAjax = new Ajax.Request(url,
						{
							method: 'post',
							parameters: datas,
							onComplete: function(requester){
								switch (requester.status) {
									case 200: {
										document.location.href = '/' + getLang(window.location.href) + '/scripts/admin_news_home.php';
										break
									}
									case 500: {
										alert(requester.responseText);
										break
									}
									default: {
										alert(strings['js_internal_error']);
										break
									}
								}
							}
						}
					);
				}
			}, false);
		}
	);
}

function deleteNews() {
	$A($$('a.delete_news')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_news_');
			Event.observe($(e.id), "click", function() {
				if( confirm(strings['js_confirm_action']) ) {
					document.location.href = '/' + getLang(window.location.href) + '/scripts/admin_delete_news.php?id=' + id;
				}
			}, false);
		}
	);
}

function generateUserPassword() {
	var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_user_password.php';
	var myAjax = new Ajax.Request(url, {
			method: 'post',
			onComplete: function(requester){
				switch (requester.status) {
					case 200: {
						$('password').value 	= requester.responseText;
						$('password2').value 	= requester.responseText;
						break
					}
					case 500: {
						alert(requester.responseText);
						break
					}
					default: {
						alert(strings['js_internal_error']);
						break
					}
				}
			}
		}
	);
}

function generateUserAllPasswords() {
	if (confirm(strings['js_confirm_action'])) {
		$('img_loading').style.display = 'block';
		var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_regenerate_user_password.php';
		var myAjax = new Ajax.Request(url, {
				method: 'post',
				onComplete: function(requester){
					switch (requester.status) {
						case 200: {
							// Affichage d'un message de succés
							Element.show('success_message_users_new_password');
							$('success_message_users_new_password').innerHTML = requester.responseText;
							$('img_loading').style.display = 'none';
							break
						}
						case 500: {
							alert(requester.responseText);
							$('img_loading').style.display = 'none';
							break
						}
						default: {
							alert(strings['js_internal_error']);
							$('img_loading').style.display = 'none';
							break
						}
					}
				}
			}
		);
	}
}

/* Fonction qui rajoute un champ input file dans le formulaire d'édition d'un article */
function addInputFiles() {
	var html_input = '';
	html_input += '<p class="document">';
	html_input += '		<input type="file" name="file[]" class="input_file" />';
	html_input += '		<span>'+strings['cms_article_description_file']+'</span>';
	html_input += '		<textarea name="description[]"></textarea>';
	html_input += '	</p>';
	$('files_input').insert(html_input);
}

function setDeleteArticlesDocument() {
	$A($$('img.delete_document')).each(
		function(e) {
			var id = getIdValue(e.id, 'delete_document_');

			// Nom du fichier

			var file_name = $('filename_'+id).rel;
			Event.observe($(e.id), "click", function() {
				if (confirm(sprintf(strings['js_confirm_delete_document'], file_name ) ) )  {
					var url = '/' + getLang(window.location.href) + '/scripts/admin_ajax_delete_articles_documents.php';
					var datas = $H({'id': id}).toQueryString();

					var myAjax = new Ajax.Request(url, {
							method: 'post',
							parameters: datas,
							onComplete: function(requester){
								switch (requester.status) {
									case 200: {
										// Affichage d'un message de succés
										$('documents_area').innerHTML = requester.responseText;
										setDeleteArticlesDocument();
										if( $('files_input') ) {
											Event.observe($('new_file'), "click", addInputFiles, false);
										}
										break
									}
									case 500: {
										alert(requester.responseText);
										break
									}
									default: {
										alert(strings['js_internal_error']);
										break
									}
								}
							}
						}
					);
				}
			}, false);
		}
	);
}

/**
 * Met à jour la zone d'affichage de l'agence sélectionnée en fonction de l'id reçu
 */
function load_and_display_agency(agency_id, portal_key) {
	new Ajax.Updater(
		$('selected_agency_frame'),
		'/' + getLang(window.location.href) + "/scripts/ajax_load_and_display_agency.php",
		{
			method: 'get',
			parameters: $({"agency_id":agency_id, 'portal_key':portal_key})
		}
	);
}

function toggle_agency_tab(id){

	oid = (1 + 2) - id;

	$('agency_' + oid).style.display = "none";
	$('agency_' + id).style.display = "block";

	$('agency_tab_' + oid).className = "agency_name inactive_agency_tab";
	$('agency_tab_' + id).className = "agency_name active_agency_tab";

}
/*
/**
*Menu en JQuery - Superfish.js nécessaire à son fonctionnement
*/
$j(document).ready(function(){

    $j('ul.sf-menu').supersubs({
        minWidth:    14,
        maxWidth:    900,
        extraWidth:  0
    }).superfish();

    if($j.browser.msie && $j.browser.version == '8.0') {
        $j('.sf-menu > li').each(function() {
            $j(this).children('.menu_child:lt(1)').addClass('p_ie8');
        });


    }
});
