/*
    FRONTEND AJAX FUNCTIONS
*/
/*
	function Element(smth)
    {
        return document.createElement(smth);
    }
  */  
function a(smth)
{
    alert(smth);
}

function getPage(page, action, params)
{
    if(params)
    {
        var url = '/'+action+'/page/'+page+'/params/'+params;
    }else {
        var url = '/'+action+'/page/'+page+'/';
    }
    
    new Ajax.Request(url);
}
    
var loginFormIsOpen = 0;
function toggleLoginForm()
{
    if (loginFormIsOpen) {
    	loginFormIsOpen = 0;
    	$('login-form-background').fade();
    	$('login-form-content').fade();
        $('login-form-a').appear();
    } else {
        loginFormIsOpen = 1;
        $('login-form-a').fade();
        $('login-form-background').appear();
        $('login-form-content').appear();
    }     
}
    
function showCarnet(idSuffix)
{
	for (c = 0; c < 4; c++) {
		if (c == idSuffix) {
			$('blueTabA_'+c).removeClassName('blueTab');
			$('blueTabA_'+c).addClassName('active');
			$('blueTabBox_'+c).appear();
		} else {
			$('blueTabA_'+c).removeClassName('active');
			$('blueTabA_'+c).addClassName('blueTab');
			$('blueTabBox_'+c).fade();
		}
	}
}


function toggleEditComment(open)
{
	if(open)
	{
		$('almost-published').fade();
		$('edit-comment-box').appear();
		$('votre-comment').appear();
		$('submit-btn').appear();
		$('edit-area').removeClassName('disabled');
		$('edit-area').removeAttribute('readonly', 'readonly');
		$('edit-area').removeAttribute('disabled', 'disabled');
	}else 
	{
		$('edit-comment-box').fade();
	}
}

function postComment()
{
	$('votre-comment').fade();
	$('edit-comment-box').fade();
	
	$('new-comment-content').innerHTML = ''; //($('edit-area').value);
	$('almost-published').appear();
	
	$('writeCommentForm').request({onSuccess: function(transport){ 
		var newResponse = '<div class="reply">';
		newResponse += transport.responseText;
		newResponse += '<div>'+$('edit-area').value+'</div>';
		newResponse += '</div><div class="down"/>';
		
		$('responses').insert({top:newResponse});
		//$('new-comment-content').insert({top:transport.responseText})
		$('edit-area').value = '';
	}});	
}

function postResponse()
{
	$('votre-comment').fade();
	$('edit-comment-box').fade();
	
	$('new-comment-content').innerHTML = ''; //($('edit-area').value);
	$('almost-published').appear();
	
	$('writeCommentForm').request({onSuccess: function(transport){ 
		var newResponse = '<li><div class="reply">';
		newResponse += transport.responseText;
		newResponse += '<div>'+$('edit-area').value+'</div>';
		newResponse += '</div><div class="down"></div><div class="clear"></div></li>';
		
		$('responses').insert({top:newResponse});
		//$('new-comment-content').insert({top:transport.responseText})
		$('edit-area').value = '';
	}});	
}

function showTip(element, content)
{
    new Tip(
	    element,
	    content,
	    {
	    	  style: 'darkgrey',
	    	  hook: { tip: 'bottomMiddle', mouse: true },
	    	  stem: { position: 'bottomMiddle', width: 22, height: 14 },
	    	  offset: { x: 0, y: -7 },
	    	  border: 0,
	    	  radius: 0,
	    	  hideOn: false,
	    	  hideAfter: 1
	    }
    );
}

function showTipVertical(element, content)
{
    new Tip(
    	    element,
    	    content,
    	    {
    	    	  style: 'darkgrey',
    	    	  hook: { tip: 'rightMiddle', mouse: true },
    	    	  stem: { position: 'rightMiddle', width: 22, height: 14 },
    	    	  offset: { x: -5, y: 0 },
    	    	  border: 0,
    	    	  radius: 0,
    	    	  hideOn: false,
    	    	  hideAfter: 1
    	    }
        );
}

/* search */

function toggleSearchOptions()
{
    $('search-options-content').toggle();
    $('search-options-background').toggle();
}

function initSearchOptions()
{
    $('search-list').childElements().each(
    	function(element)
    	{
    		$(element).observe(
    			'click',
    			function(event)
    			{
					
        			var elm = event.element();
        			
        			if (elm.nodeName == 'LI') li = elm;
        			else li = elm.parentNode;
        			
        			$(li).siblings().each(
                		function(sibling)
                		{
                    		$(sibling).removeClassName('search-option-checked');
                    		$(sibling).addClassName('search-option-unchecked');
                    		imgs = $(sibling).select('img');
                    		//$(sibling).select('img')[0].src = '/images/new-design/search/search-unchecked.png';
                    		if (imgs[0]) imgs[0].src = '/images/new-design/search/search-unchecked.png';
                    	}
        			);
        			$(li).removeClassName('search-option-unchecked');
        			$(li).addClassName('search-option-checked');
                    imgs = $(li).select('img');
        			//$(li).select('img')[0].src = '/images/new-design/search/search-checked.png';
        			//$(img).setAttribute('src','/images/new-design/search/search-checked.png');
        			//Element.writeAttribute($(img),'src','/images/new-design/search/search-checked.png');
        			if (imgs[0]) imgs[0].src = '/images/new-design/search/search-checked.png';
        			$('search-in').value = $(li).getAttribute('title');
    			}
    	    );
    	}
    );	
}

function initSearchFields()
{
    $('search-word-closed').observe(
    	'blur',
    	function(event)
    	{
        	$('search-word-open').value = $('search-word-closed').value;
        	$('search-word').value = $('search-word-closed').value;
    	}
    );	
    $('search-word-open').observe(
        'blur',
        function(event)
        {
        	$('search-word-closed').value = $('search-word-open').value;
        	$('search-word').value = $('search-word-open').value;
        }
    );  
}

function doSearch()
{
	if ($('search-in').value == 'community') {
		$('search-form').action = '/recherche_membre.html';
	}
	$('search-form').submit();
}

function fixPerso()
{
	if ($('logged')) {
		var loggedWidth = $('logged').getWidth()+1+'px';
		$('perso').setStyle({width: loggedWidth});
	}
}
Event.observe(window, 'load', fixPerso);

function setInputCharacterLimit(element, number)
{
	if (!$(element)) { return; }
	Event.observe(element, 'blur', function() {
		cutElementValue(element, number, '...');
	});
	
	Event.observe(element, 'keyup', function() {
		cutElementValue(element, number, '');
	});
}

function cutElementValue(element, number, dots)
{
	if($(element).value.length > number)
	{
		$(element).value = $(element).value.substring(0, number-dots.length) + dots;
	}
}

function toggleActiveLetter(element)
{
	if($(element).hasClassName('letterFully'))
	{
		$(element).addClassName('letterSelect');
		$(element).removeClassName('letterFully');
		updateMyFriendsList('add', element.id);
	}else if($(element).hasClassName('letterSelect'))
	{
		$(element).removeClassName('letterSelect');
		$(element).addClassName('letterFully');
		updateMyFriendsList('remove', element.id);
	}
}

var selectedLetters = new Array();

	function updateMyFriendsList(action, params, isLastItem)
	{
		var vars = params.split('_');
		var letterId = vars[0];
		var letter = vars[1];
		
		if(action == 'add')
		{
			selectedLetters[letterId] = letter;
		}else if(action == 'remove')
		{
			delete selectedLetters[letterId];
		}
		
		if(action == 'delete')
		{
			var letter = vars[0];
			var friendId = vars[1];
			var page = vars[2];
			
			if(isLastItem == 1)
			{
				selectedLetters = new Array();
			}
			
			new Ajax.Updater(
					'friends-list',
					'/member/updateMyFriendsList/',
					{
						parameters: { 'json': selectedLetters.toJSON(), 'friendId': friendId, 'page': page },
						evalJS: true,
						onSuccess: function()
						{
						    new Ajax.Updater(
						            'friends-letters',
						            '/member/updateMyFriendsLetters/',
						            {
						            	parameters: { 'json': selectedLetters.toJSON() },
						            	evalJS: true
						            }
						    );
						}
					}
					
			);
		}else if(action == 'paging') 
		{
			var page = params;
			new Ajax.Updater(
					'friends-list',
					'/member/updateMyFriendsList/',
					{
						parameters: { 'json': selectedLetters.toJSON(), 'page': page },
						evalJS: true
					}
			);
		}else 
		{
			new Ajax.Updater(
					'friends-list',
					'/member/updateMyFriendsList/',
					{
						parameters: { 'json': selectedLetters.toJSON() },
						evalJS: true
					}
			);
		}
	}
	
function toggleDeleteFriend(friendId)
{
	$('friendItem_'+friendId).toggle();
	$('friendConfirm_'+friendId).toggle();
}

function deleteQuestionsFavourite(questionFavouriteId, page) {	
		new Ajax.Updater(
			'questions-favourite',
			'/member/deleteQuestionsFavourite/',
			{
				parameters: { 'questionFavouriteId': questionFavouriteId, 'page': page }
				
			});
}

function deleteBilletFavourite(billetFavouriteId, page) {	
	new Ajax.Updater(
		'billet-favourite',
		'/member/deleteBilletFavourite/',
		{
			parameters: { 'billetFavouriteId': billetFavouriteId, 'page': page }
		});
}

function deleteParentsFavourite(parentsFavouriteId, page) {	
	new Ajax.Updater(
		'parents-favourite',
		'/member/deleteParentsFavourite/',
		{
			parameters: { 'parentsFavouriteId': parentsFavouriteId, 'page': page }
		});
}

function clickButton(button)
{
	$(button).click();
}

function toggleRow(chunk)
{
	$(chunk+'Link').toggle();
	$(chunk).toggle();
	$(chunk+'Actions').toggle();
}

function toggleDelete()
{
	$('deleteBtn').toggle();
	$('deleteActions').toggle();
}

function updateMyProfil(field)
{
	var value = $(field).value;
	
	if(field == 'birthday')
	{
		var day = $('day').value;
		var month = $('month').value;
		var year = $('year').value;
		
		value = year+'-'+month+'-'+day;
	}else 
	{
		if(!validator.validateElement($(field).name))
		{
			return;
		}
	}
	
	new Ajax.Updater(
			field+'Link',
			'/member/updateMyProfil/',
			{
				parameters: { 'field': field, 'value': value }
			}
	);
	toggleRow(field);
}

function toggleMyTeaserActions(action)
{
	if(action == 'show')
	{
		$('teaserActions').show();
	}else {
		$('teaserActions').hide();
		$('alert-field').hide();
	}
}

function toggleMyTeaserActionsPublic(action)
{
	if(action == 'show')
	{
		$('teaserActions').show();
	}else {
		$('teaserActions').hide();
		$('alert-field').hide();
		$('teaser').hide();
		$('teaserText').show();
	}
}

function modifierLink() {
	$('teaserText').hide();
	$('teaser').show();
}
 

function updateMyTeaser(field)
{
	var value = $(field).value;

	if(!validator.validateElement($(field).name))
	{
		return;
	}
	new Ajax.Updater(
			'alert-field',
			'/member/updateMyTeaser/',
			{
				parameters: { 'teaser': value }
			}
	);
	toggleMyTeaserActions('hide');
	$('alert-field').show();
}

function updateMyTeaserPublic()
{
	var value = $('teaser').value;
	if(!validator.validateElement($('teaser').name))
	{
		return;
	}
	new Ajax.Updater(
			'teaserText',
			'/member/updatePublicTeaser/',
			{
				parameters: { 'teaser': value }
			}
	);
	toggleMyTeaserActionsPublic('hide');
	//$('alert-field').show();
}

function setAvatar(element, key)
{
	$('avatar-selected').src = $(element).src;
	$('selected-avatar-id').value = key;
	$('system-avatar-btn').show();
}

function updateActiveClassNames(element)
{
	$(element).siblings().each (
			function(sibling)
			{
				$(sibling).removeClassName('active');
			}
	);
	$(element).addClassName('active');
	$('selected-avatar').show();
}

function updateAvatar()
{
	var newId = $('selected-avatar-id').value;

	new Ajax.Updater
	(
		'current-avatar',
		'/member/updateAvatar',
		{
			parameters: { 'newId': newId }
		}
	);
}

function saveAvatar() {
		new Ajax.Updater
	(
		'myAvatar',
		'/member/saveAvatar'
	);
}

function addChild()
{
	new Ajax.Updater
	(
		'editArea',
		'/member/editChildren',
		{
			parameters: { 'editMode': true },
			evalJS: true
		}
	);
	
	$('addBtn').hide();
}

function editChild(childId)
{
	new Ajax.Updater
	(
		'editArea',
		'/member/editChildren',
		{
			parameters: { 'editMode': true, 'kidId': childId },
			evalJS: true
		}
	);
	
	$('addBtn').hide();
}

function validateEnfant()
{
	var validator = new Validator('updateCildForm').setHighlightErrors(true);
	
	setEnfantDate();
	if(!validator.validate())
	{
		$('errorMessage').show();
		return;
	} else {
	$('errorMessage').hide();
	$('updateCildForm').submit();
	}
}

function setEnfantDate()
{
	if($('day').value != 0 && $('month').value != 0 && $('year').value != 0)
	{
		$('date').value = '1';
	}else 
	{
		$('date').value = '';
	}
}

function updateMessageStatus(messageId, status, newUrl)
{
	new Ajax.Updater(
			'alert-msg',
			'/message/updateMessageStatus/',
			{
				parameters: { 'id': messageId, 'status': status },
				evalJS: true,
				onSuccess: function()
				{
					location.href = newUrl; 
				}
			}
	);
}


function deleteInboxMessage(messageId, newUrl)
{
	new Ajax.Updater(
		'alert-msg',
		'/message/deleteInboxMessage',
		{
			parameters: { 'messageId': messageId},
			evalJS: true,
			onSuccess: function()
			{
				location.href = newUrl; 
			}
		}
	);
}

function toggleResponseArea()
{
	$('actions').toggle();
	$('response-area').toggle();
}

function validateSendMessage()
{
	var validator = new Validator('responseForm').setHighlightErrors(true);
	if(!validator.validate())
	{
		return;
	}

	var message = new Array();
	message[0] = $('topic').value;
	message[1] = $('body').value;
	message[2] = $('targetMemberId').value;
	        
	new Ajax.Updater(
		'alert-msg',
		'/message/sendMessage',
		{
			parameters: { 'json': message.toJSON() },
			evalJS: true
		}
	);
	
	$('topic').value = '';
	$('body').value = '';
	toggleResponseArea();
	
}

function validateQuestion() {
	var validator = new Validator('writeQuestionForm', ['content']).setHighlightErrors(true);
	if(!validator.validate())
	{
		$('errorMessage').show();
		return;
	}else 
	{
		$('errorMessage').hide();
		$('writeQuestionForm').submit();
	}
}

function deleteBillet(billetId)
{
	new Ajax.Updater(
		'billets-list',
		'/member/deleteBillet',
		{
			parameters : { 'billetId': billetId },
			evalJS: true
		}
	);
}

function toggleBillet(billetId)
{
	new Ajax.Updater(
		'billet_status_'+billetId,
		'/member/toggleBillet',
		{
			parameters : { 'billetId': billetId },
			evalJS: true,
			onSuccess: function() 
			{
				$('billet_masquer_'+billetId).toggle();
				$('billet_publier_'+billetId).toggle();
			}
		}
	);
}


function toggleDeleteBillet()
{
	$('almost-delete-btn').toggle();
	$('r-u-sure-delete').toggle();
}

function deleteThisBillet(billetId)
{
	new Ajax.Updater(
		'contenu',
		'/member/deleteThisBillet',
		{
			parameters : { 'billetId': billetId },
			evalJS: true
		}
	);
}

var to = new Hash();
var lisWidth = null;
var lastTimeout = null;
function validateNewMessage()
{
	var validator = new Validator('newMessageForm').setHighlightErrors(true);
	if(!validator.validate())
	{
		return;
	}else 
	{
		var newMessage = new Array();
		newMessage[0] = $('topic').value;
		newMessage[1] = $('content').value;
		newMessage[2] = $('toPerson').value;
		
		new Ajax.Updater(
			'alert-msg',
			'/message/newMessage',
			{
				parameters: { 'json': newMessage.toJSON(), 'to': to.toJSON() },
				evalJS: true,
				onSuccess: function()
				{
					$('toPerson').value = '';
					$('topic').value = '';
					$('content').value = '';
					$('toPersonAuto').hide();
					$('toPerson').up().siblings().each(
							function(sibling)
							{
								console.info(sibling);
								sibling.remove();
							}
					);
				}
			}
		);
	}
}

function showAutoFriend(value)
{
	clearTimeout(lastTimeout);
	
	$('toPersonEmpty').hide();
	$('toPersonAuto').update();
	$('toPersonAuto').show();
	
	excludeSelectedPersonsJSON = to.toJSON();
	
	new Ajax.Updater(
		'toPersonAuto',
		'/message/newMessageAuto',
		{
				parameters: { 'value': value, 'exclude': excludeSelectedPersonsJSON },
				evalJS: true,
				onSuccess: function()
				{
					$('toPersonAuto').show();
				}
		}
	);
	
}

function updateAutoTo(suggestion)
{
	var params = suggestion.split('.');
	
	var li = new Element('li', 
    { 
        'class': 'removable',
        'id': 'hidden_'+params[1],
        'onclick': 'removeLi(this);'
    }
    );
	
	li.update(params[0]+'<input type="hidden" id="to_'+params[1]+'" name="to[]'+'" value="'+params[1]+'" />');
	
	$('toList').insert({top:li});
	
	
	wholeWidth = $('toList').getWidth() -15;
	newLiWidth = li.getWidth();
	lisWidth = lisWidth + newLiWidth;
	
	newInputWidth = wholeWidth - lisWidth;
	$('toPerson').setStyle("width: "+newInputWidth+'px');
	
	to.set(params[1], params[1]);
	
	$('toPersonAuto').hide();
	$('toPerson').value = '';
	
	
}

function removeLi(element)
{
	$(element).remove();
	
	var params = element.id;
	params = params.split('_');
	var personId = params[1];
	
	to.unset(personId);
}


function personAutoHide()
{
	lastTimeout = setTimeout(
		function()
		{
			$('toPersonAuto').hide();
		},
		1000
	);
}

function validateBilletForm(is_edit)
{
	var validator = new Validator('writeBilletForm', ['content']).setHighlightErrors(true);
	if(!validator.validate())
	{
		$('errorMessage').show();
		return;
	}else 
	{
		$('writeBilletForm').is_edit.value = is_edit;
		$('errorMessage').hide();
		$('writeBilletForm').submit();
	}
	
}


function FCKeditor_OnComplete(editor)
{
	editor.Events.AttachEvent(
		'OnBlur',
		function(_editor)
		{
			editor.UpdateLinkedField();
		}
	);
} 