// function by Josh Fraser (http://www.onlineaspect.com)
function GMT_offset() {
	var rightNow = new Date();
	var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);  // jan 1st
	var june1 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0); // june 1st
	var temp = jan1.toGMTString();
	var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	temp = june1.toGMTString();
	var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);
	var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
	var dst;
	if (std_time_offset == daylight_time_offset) {
		dst = 0; // daylight savings time is NOT observed
	} else {
		// positive is southern, negative is northern hemisphere
		var hemisphere = std_time_offset - daylight_time_offset;
		if (hemisphere >= 0)
			std_time_offset = daylight_time_offset;
		dst = 1; // daylight savings time is observed
	}
	
	return ( std_time_offset +  dst );
}

var gmtOffset = GMT_offset();
var waitingForComments = false;
var colorPicker;

function displayComments(id,start,shared)
{
	if( !waitingForComments )
	{
		waitingForComments = true;
		var overDiv = $('#overDiv');

		if( overDiv.css('visibility') == 'hidden' )
		{
			var firstCall = true;
			var maxHeight = ( window.ActiveXObject ? document.documentElement.clientHeight : window.innerHeight ) - 80;
		}
		else
		{
			var firstCall = false;
			var maxHeight = 0;
		}

		$.post( 'comments.php', { Action: 'display', Id: id, Start: start, FirstCall: firstCall, MaxHeight : maxHeight, GmtOffset: gmtOffset, Shared: shared }, function(data)
													{
														if( overDiv.css('visibility') == 'hidden' )
														{
															popupData( 'Commentaires', data );
															
															if( readCookie('arcId') )
															{
																setTimeout( "document.getElementById('comment').focus()", 500 );
																colorPicker = new jscolor.color(document.getElementById('colorPicker'), { hash: true, styleElement: null, pickerOnfocus: false })
															}
														}
														else
														{
															if( effets )
																$('#comments').fadeOut( (window.ActiveXObject?'fast':'normal'), function(){$(this).html(data).fadeIn( (window.ActiveXObject?'fast':'slow') );} );
															else
																$('#comments').html(data);
														}
														setTimeout( 'waitingForComments = false;', 1000 );
													}, 'html');
	}
}

function newComment(id,shared)
{
	$('#commentSend').attr('disabled','disabled').text('Envoi en cours...');
	var msg = $('#comment').val();
	var sendMail = document.getElementById("commentError").checked;
	
	if( msg )
	{
		$.post( 'comments.php', { Action: 'new', Id: id, Message: msg, SendMail: sendMail, GmtOffset: gmtOffset, Shared: shared }, function(data)
														{
															document.getElementById("commentError").checked = false;
															$('#comment').val('');
															$('#commentNone').remove();
															var obj = $('#comments').prepend(data).children().eq(0);
															
															if(effets) 
																obj.fadeIn(900);
															else
																obj.show();
																	
															$('#commentSend').text('5 secondes d\'attente');
															setTimeout( function(){ $('#commentSend').attr('disabled','').text('Envoyer le commentaire'); }, 5000 );
														}, 'html');
	}
}

function editComment(id,commentId,send,shared)
{
	if( !send )
	{
		$('#commentSend').attr('disabled','disabled').text('Merci de patienter...');
		$.post( 'comments.php', { Action: 'edit', Id: id, CommentId: commentId, Shared: shared }, function(data)
																{ 
																	$('#comment').val( data );
																	$('#commentSend').text('Editer le commentaire').attr('onclick','').unbind('click').bind('click',function(){ editComment(id,commentId,true,shared); } ).attr('disabled','');
																}, 'html' );	
	}
	else
	{
		$('#commentSend').attr('disabled','disabled').text('Envoi en cours...');
		var msg = $('#comment').val();
		var sendMail = document.getElementById("commentError").checked;
	
		if( msg )
		{
			$.post( 'comments.php', { Action: 'edit', Id: id, Message: msg, CommentId: commentId, SendMail: sendMail, GmtOffset: gmtOffset, Shared: shared }, function(data)
														{
															document.getElementById("commentError").checked = false;
															$('#comment').val('');
															$('#commentSend').unbind('click').bind('click',function(){ newComment(id); } );
															
															$('#comments > div[num='+commentId+']').replaceWith(data);
															var obj = $('#comments > div[num='+commentId+']');
															
															if(effets)
																obj.fadeIn(900);
															else
																obj.show();
																	
															$('#commentSend').attr('disabled','').text('Envoyer le commentaire');
														}, 'html');
		}
		
		bbcodeTranslated = null;
	}
}

function deleteComment(id,commentId,shared)
{
	$.post( 'comments.php', { Action: 'delete', Id: id, CommentId: commentId, Shared: shared }, function(data)
													{															
														if(effets)
														{
															var obj = $('#comments > div[num='+commentId+']');
															if( window.ActiveXObject )
																obj.find('> h3 > div').remove();
																
															obj.fadeOut(900,function(){ $(this).remove(); });
														}
														else
															$('#comments > div[num='+commentId+']').remove();
													} );
}

function bbcode(type,obj,smiley)
{
	var commentField = document.getElementById('comment');
	if( window.ActiveXObject )
	{
		if( !OLmEdit )
		{
			sel = commentField.createTextRange();
			sel.move('character', sel.text.length);
			sel.select();
		}
	}
	else
		commentField.focus();
	
	var valS = '', valE = '';
	switch( type )
	{
		case 0: valS = ' ' + smiley + ' '; break;
		case 1: valS = '[b]'; valE = '[/b]'; break;
		case 2: valS = '[i]'; valE = '[/i]'; break;
		case 3: valS = '[u]'; valE = '[/u]'; break;
		case 4: valS = '[url]'; valE = '[/url]'; break;
		case 6: valS = '[spoiler]'; valE = '[/spoiler]'; break;
		case 7: valS = '[img]'; valE = '[/img]'; break;
		case 50: saveSel(); colorPicker.showPicker(); return false; break;
		case 51: colorPicker.hidePicker(); valS = '[color=' + $('#colorPicker').val() + ']'; valE = '[/color]'; break;
	}

	if (commentField.selectionStart || commentField.selectionStart == '0')
	{
		var startPos, endPos;
		if( _startPos == -1 || _endPos == -1 )
		{
			startPos = commentField.selectionStart;
			endPos = commentField.selectionEnd;
		}
		else
		{
			startPos = _startPos;
			endPos = _endPos;
		}
		
		var selected = commentField.value.substring(startPos, endPos);
		commentField.value = commentField.value.substring(0, startPos) + valS + selected + valE + commentField.value.substring(endPos);
		
		var pos;
		if (selected.length == 0)
			pos = startPos + valS.length;
		else
			pos = startPos + valS.length + selected.length + valE.length;

		commentField.selectionStart = pos;
		commentField.selectionEnd = pos;
	}
	else if(document.selection)
	{
		var sel = null;
		if( !rangeCopy )
			sel = document.selection.createRange();
		else
			sel = rangeCopy;
		
		var toTag = sel.text; 
		sel.text = valS + toTag + valE;
		
		if (toTag.length == 0)
			sel.move('character', -valE.length);
			
		sel.select();
		rangeCopy = null;
	}
	else
		commentField.value += valS + valE;
		
	if( _startPos != -1 || _endPos != -1 )
	{
		_startPos = _endPos = -1;
		setTimeout( "$('#comment').focus()", 200 );
	}
}

var _startPos = -1;
var _endPos = -1;
var rangeCopy = null;

function saveSel() //pour '[color]'
{
	var commentField = document.getElementById('comment');
	
	if (commentField.selectionStart || commentField.selectionStart == '0')
	{
		_startPos = commentField.selectionStart;
		_endPos = commentField.selectionEnd;
	}
	else  if(document.selection)
	{	
		var range = document.selection.createRange();
		rangeCopy = range.duplicate();
	}
}

function showSpoiler(obj)
{
	var spoil = $(obj).next();
	$(obj).remove();
	
	if( window.ActiveXObject )
		spoil.fadeIn('fast');
	else
		spoil.fadeIn('slow');
}