/**
 * Common events
 */
var toggleOnclicks = function(off)
{
	var els = document.body.getElementsByTagName('*');
	for (var i = 0; els[i]; i++)
	{
		if (off && els[i].onclick)
		{
			els[i].oldOnClick = els[i].onclick;
			els[i].onclick = function() {return false;};
		}
		else if (!off && els[i].oldOnClick)
		{
			els[i].onclick = els[i].oldOnClick;
			els[i].oldOnClick = null;
		}
	}
}
var addOnclickEvent = function(node)
{
	if (!node)
	{
		node = document.body;
	}
	// Onclick on link containers (dt, dd)
	var list = YAHOO.util.Dom.getElementsByClassName(
		'list',
		null,
		node
	);
	for (var l = 0; list[l]; l++)
	{
		var dts = list[l].getElementsByTagName('dt');
		for (var i = 0; dts[i]; i++)
		{
			dts[i].onclick = function()
			{
				var link = this.getElementsByTagName('a')[0];
				try
				{
					link.onclick();
				}
				catch (e)
				{
					window,location = link.href;
				}
			}
		}
		var dds = list[l].getElementsByTagName('dd');
		for (i = 0; dds[i]; i++)
		{
			dds[i].onclick = function()
			{
				var link = this.previousSibling.previousSibling.getElementsByTagName('a')[0];
				try
				{
					link.onclick();
				}
				catch (e)
				{
					window,location = link.href;
				}
			}
		}
		var lis = list[l].getElementsByTagName('li');
		for (i = 0; lis[i]; i++)
		{
			lis[i].onclick = function()
			{
				var link = this.getElementsByTagName('a')[0];
				if (link)
				{
					try
					{
						link.onclick();
					}
					catch (e)
					{
						window,location = link.href;
					}
				}
			}
		}
	}
};
// add switch event
var addSwitchEvent = function(node)
{
	if (!node)
	{
		node = document.body;
	}
	var links = YAHOO.util.Dom.getElementsByClassName(
		'switch',
		'a',
		node
	);
	for (var i = 0; links[i]; i++)
	{
		// Internal Link
		if (links[i].className.indexOf('internal') != -1)
		{
			links[i].onclick = function()
			{
				toggleOnclicks(true);
				if (this.parentNode.nodeName.toLowerCase() == 'li')
				{
					this.container = this.parentNode;
				}
				else
				{
					this.container = this.parentNode.nextSibling.nextSibling;
				}
				YAHOO.util.Dom.addClass(
					this.container,
					'wait'
				);

				YAHOO.util.Connect.asyncRequest(
					'get',
					this.href + '?ajax=1',
					{
						success: function(o)
						{
							toggleOnclicks();
							YAHOO.util.Dom.removeClass(
								this.container,
								'wait'
							);
							var newDiv = document.createElement('div');
							newDiv.className = 'switchPanel white';
							if (o.responseText.match(/<html/))
							{
								newDiv.innerHTML =
									/<body.*?>(.*?)<\/body>/gi.exec(
										o.responseText.replace(/\n/gi, '')
									)[1].replace(//gi, '\n');
							}
							else
							{
								newDiv.innerHTML = o.responseText;
							}

							// Positionnement
							var top = document.getElementById(
								'sections'
							);
							if (!top)
							{
								top = YAHOO.util.Dom.getElementsByClassName(
									'header',
									'div'
								)[0];
							}
							var reg = YAHOO.util.Dom.getRegion(
								top
							);
							newDiv.style.top = reg.bottom + 'px';
							newDiv.style.height = 'auto';

							setTimeout(
								function(last)
								{
									// Hide parent list
									var lists = YAHOO.util.Dom.getElementsByClassName(
										'list'
									);
									for (var j = 0; lists[j]; j++)
									{
										if (lists[j] != last &&
											lists[j].parentNode != last &&
											lists[j].parentNode.parentNode != last &&
											lists[j].parentNode.parentNode.parentNode != last)
										{
											lists[j].style.display = 'none';
										}
									}
								},
								1000,
								newDiv
							);

							document.body.appendChild(newDiv);
							newDiv.style.left = 0;
							newDiv.style.width = '100%';

							window.location.hash = this.href;
							addOnclickEvent();
							addSwitchEvent();
							window.scrollTo(0, 1);
						},
						scope: this,
						timeout: 15000,
						failure: function()
						{
							YAHOO.util.Dom.removeClass(
								this.dd,
								'wait'
							);
							toggleOnclicks();
							addOnclickEvent();
							addSwitchEvent();
						}
					}
				);

				this.onclick = new Function();
				return false;
			}
		}
		// Go back Link
		else if (links[i].className.indexOf('goback') != -1)
		{
			if (YAHOO.util.Dom.getElementsByClassName(
					'switchPanel'
				).length > 1)
			{
				links[i].onclick = function()
				{
					var switchPanels = YAHOO.util.Dom.getElementsByClassName(
						'switchPanel'
					);
					for (var j = 0; switchPanels[j]; j++)
					{
						switchPanels[j].style.left = '100%';
					}
					var lists = YAHOO.util.Dom.getElementsByClassName(
						'list'
					);
					if (lists.length == 0)
					{
						return true;
					}
					for (var j = 0; lists[j]; j++)
					{
						lists[j].style.display = '';
					}

					window.scrollTo(0, 1);

					addOnclickEvent();
					addSwitchEvent();

					setTimeout(
						function(list)
						{
							for (var j = 0; list[j]; j++)
							{
								if (list[j].id != 'optionspanel')
								{
									list[j].parentNode.removeChild(
										list[j]
									);
								}
							}
						},
						500,
						switchPanels
					);

					return false;
				}
			}
		}
		// External link, wait panel
		else
		{
			links[i].onclick = function()
			{
				setTimeout(
					function()
					{
						window.scrollTo(0,1);
					},
					1
				);
				var newDiv = document.createElement('div');
				newDiv.className = 'switchPanel';
				newDiv.style.height = YAHOO.util.Dom.getDocumentHeight() + 'px';
				newDiv.img = new Image();
				newDiv.img.src = imgUrl + 'mobile/common/page_wait.gif';
				newDiv.img.className = 'wait';
				newDiv.appendChild(newDiv.img);
				document.body.appendChild(newDiv);
				newDiv.style.left = 0;
				newDiv.style.width = '100%';

				setTimeout(
					function(link)
					{
						window.location = link;
					},
					500,
					this.href
				);
			}
		}
	}
};
YAHOO.util.Event.onDOMReady(
	function()
	{
		addOnclickEvent();
		addSwitchEvent();

		if (window.location.hash.match(/^(#http.*?)&nlc/))
		{
			var as = document.getElementsByTagName('a');
			for (var i = 0; as[i]; i++)
			{
				if (('#' + as[i].href).indexOf(window.location.hash.match(/^#http.*?&nlc/)) == 0)
				{
					try
					{
						as[i].onclick();
					}
					catch (e)
					{

					}
				}
			}
		}
		window.onorientationchange();
		setTimeout(
			function()
			{
				window.scrollTo(0, 1);
			},
			100
		);
		if (YAHOO.env.ua.webkit > 500)
		{
			YAHOO.util.Dom.addClass(
				document.body,
				'iphone'
			);
		}
	}
);

// Orientation
window.onorientationchange = function()
{
	document.body.setAttribute(
		"orient",
		window.orientation == 0 ?
		'profile' :
		'landscape'
	);
};



/**
 * Pagination
 */
var displayMore = function(
	caller,
	baseOffset,
	baseMax,
	baseLimit)
{
	if (!baseOffset)
	{
		baseOffset = 8;
	}
	if (!baseMax)
	{
		baseMax = 100;
	}
	if (!baseLimit)
	{
		baseLimit = 8;
	}

	// Setting values
	if (!caller.offset)
	{
		caller.offset = baseOffset;
	}
	if (!caller.limit)
	{
		caller.limit = baseLimit;
	}
	if (!caller.max)
	{
		caller.max = baseMax;
	}

	caller.className = 'wait';
	YAHOO.util.Connect.asyncRequest(
		'get',
		caller.href + '&text=1&offset=' + caller.offset,
		{
			success: function(o)
			{
				var newList = document.createElement('div');
				newList.innerHTML = o.responseText;
				this.parentNode.parentNode.insertBefore(
					newList,
					this.parentNode
				);
				if (this.offset > this.max)
				{
					this.parentNode.parentNode.removeChild(
						this.parentNode
					);
				}
				this.className = '';

				addOnclickEvent(newList);
				addSwitchEvent(newList);
			},
			scope: caller
		}
	);
	caller.offset = caller.offset + caller.limit;
	return false;
};
var paginEvent = function() {};

/**
 * Add event on new comment submit form
 */
// Add comments form
YAHOO.util.Event.onDOMReady(
	function()
	{
		var form = document.getElementById('addComment');

		if (form)
		{
			YAHOO.util.Event.on(
				form,
				'submit',
				function(e)
				{
					YAHOO.util.Event.preventDefault(e);
					var inputs;
					eval ('inputs = ' + form.ajaxkeys.value);

					try
					{
						var a = YAHOO.util.Connect.setForm(
							this
						);

						YAHOO.util.Connect.asyncRequest(
							'post',
							this.getAttribute('action') + '?ajax=1',
							{
								success: function(o)
								{

									YAHOO.util.Dom.removeClass(
										this,
										'send'
									);

									eval('var output = ' + o.responseText);

									if (output &&
										output.title)
									{
										this.innerHTML = '';
										var noComment = YAHOO.util.Dom.getElementsByClassName(
											'nocomment',
											'li'
										);
										if (noComment[0])
										{
											noComment[0].parentNode.removeChild(
												noComment[0]
											);
										}
										var list = this.parentNode.getElementsByTagName('ul')[0];
										var li = document.createElement('li');
										li.innerHTML = output.title + '<div class="bubble">' + output.text + '</div>';
										if (list)
										{
											list.insertBefore(
												li,
												list.firstChild
											);
										}
										else
										{
											list = document.createElement('ul');
											this.parentNode.appendChild(list);
											list.appendChild(li);
										}
									}
									else
									{
										// Error
										this.innerHTML = this.oldInnerHTML;


										var _inputs = new Array(
											'name',
											'mail',
											'site',
											'spamKey',
											'comment'
										);

										for (i in _inputs)
										{
											if (output.errors[_inputs[i]])
											{
												YAHOO.util.Dom.addClass(
													this[inputs['_' + _inputs[i]]],
													'error'
												);
											}
											else
											{
												YAHOO.util.Dom.removeClass(
													this[inputs['_' + _inputs[i]]],
													'error'
												);
											}
											if (_inputs[i] != 'spamKey')
											{
												if (output.values[_inputs[i]])
												{
													this[inputs['_' + _inputs[i]]].value =
														output.values[_inputs[i]];
												}

												if (this[inputs['_' + _inputs[i]]].value.toLowerCase() !=
														this[inputs['_' + _inputs[i]]].defaultValue.toLowerCase())
												{
													YAHOO.util.Dom.removeClass(
														this[inputs['_' + _inputs[i]]],
														'defaultValue'
													)
												}
												else
												{
													this[inputs['_' + _inputs[i]]].value = this[inputs['_' + _inputs[i]]].defaultValue;
												}
											}
										}
									}
								},
								timeout: 15000,
								failure: function()
								{

								},
								scope: this
							}
						);
					}
					catch (e)
					{
						alert(e);
						// Premiums
						this.submit();
						return true;
					}
					YAHOO.util.Dom.removeClass(
						new Array(
							this.name,
							this.email,
							this.site,
							this.spamKey
						),
						'error'
					);
					this.oldInnerHTML = this.innerHTML;
					this.innerHTML = '';
					YAHOO.util.Dom.addClass(
						this,
						'send'
					);

					window.scrollTo(0, 1);
					return false;
				}
			);
		}
	}
);