// We like ugly fixes.
is_ie = false;

function handle(e)
{
	switch (e.name)
	{
		//Is it our error? :)
		case "E_USER_ERROR":
		case "E_CORE_ERROR":
			message(e.message, true);			return;
		break;

		default:
		{

			tmp = 'JavaScript sorunu\nHata: ';
			tmp += e.message;
			if (e.lineNumber)
			{
				tmp += '\nSatır: ';
				tmp += e.lineNumber;
			}
			if (e.fileName)
			{
				tmp += '\nDosya: ';
				tmp += e.fileName;
			}
			message(tmp, true);			return;
		}
	}
}
function load_shout()
{
	try
	{
        var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
		if (display_shoutbox == false)
		{
			return;
		}
		
		if (document.getElementById('shoutbox') == null)
		{
		
			var ev = err_msg('Mesaj kutusu tablosu bulunamadı');	
	
			ev.name = 'E_CORE_ERROR';
			throw ev; 
			return;
		}
		else
		{
			div = document.getElementById('shoutbox');

			// Display message ;)
			message('Yükleniyor');
			// HTTP vars, required to relead/post things.
			
			hin = http();
			
			if (!hin)
			{
				return;
			}
			hin2 = http();
			huit = http();	
			hsmilies = http();
			hnr = http();
						// Div exists in the html, write it.
			write_main();
		}
	}
	catch (e)
	{
			handle(e);
			return;
	}
}
function write_main()
{
	try
	{
		// Write the base.

		var base = ce('ul');
		base.className = 'topiclist forums';
		base.id = 'base_ul'
		// base.style.height = '210px';

		var li = ce('li');
		li.style.display = 'none';
		var dl = ce('dl');
		dl.style.width = '98%';
		var posting_form = ce('dt');
		posting_form.id = 'post_message';
		posting_form.className = 'row';
		posting_form.width = '98%';
		posting_form.style.display = 'none';
		posting_form.height = '20px';
		posting_form.style.width = '98%';

		var posting_box = ce('form');
		posting_box.id = 'chat_form';

				
		posting_form.appendChild(posting_box);
		dl.appendChild(posting_form);
		li.appendChild(dl);
		base.appendChild(li);
		
		var msg_txt = ce('div');
		
		msg_txt.id = 'msg_txt';
		msg_txt.height = '180px';
		msg_txt.appendChild(tn(' '));
		
		base.appendChild(msg_txt);

		var post = ce('div');//In this div, the chats will be placed ;)
		post.style.display = 'block';
		post.id = 'msg';
		
		post.style.width = '98%';
		post.style.height = '160px';
			post.style.overflow = 'auto';		post.appendChild(tn('Yükleniyor'));
		base.appendChild(post);

		// Nr div
		var nr_d = ce('div');
		nr_d.id = 'nr';

		base.appendChild(nr_d);
		 
		div.innerHTML = '';
		div.appendChild(base);
		// Everyting loaded, lets select posts :)
		reload_post();
		reload_page();

	}
	catch (e)
	{
		handle(e);
		return;
	}
}

function reload_page()
{
	if (hnr.readyState == 4 || hnr.readyState == 0)
	{

		// Lets got some nice things :D
		hnr.open('GET','./ajax.php?m=number&rand='+Math.floor(Math.random() * 1000000),true);

		hnr.onreadystatechange = function()
		{
			try
			{
				if (hnr.readyState == 4)
				{
					xml = hnr.responseXML;
					if (xml.getElementsByTagName('error') && xml.getElementsByTagName('error').length != 0)
					{
						err = xml.getElementsByTagName('error')[0].childNodes[0].nodeValue;
						message(err, true);
						clearTimeout(timer_in);

						setTimeout('reload_post();',500);
					}
					else
					{
						var nr = xml.getElementsByTagName('nr')[0].childNodes[0].nodeValue;
						var f = document.getElementById('nr');
						f.innerHTML = '';
						var d = ce('div');
						
						if (nr < 20)
						{
							return;
						}
						
						var per_page = 20;
						
						var total_pages = Math.ceil(nr / per_page);
						
						if (total_pages == 1 || !nr)
						{
							return;
						}				

						on_page = Math.floor(count / per_page) + 1;
						
						var p = ce('span');
						var a = ce('a');
						var b = ce('strong');
						
						if (on_page == 1)
						{
							b.appendChild(tn('1'));
							p.appendChild(b);
							b = ce('strong');
						}
						else
						{
							a.c = ((on_page - 2) * per_page);
							a.href = 'javascript:;';
							a.onclick = function()
							{
								count = this.c;
								last = 0; // Reset last, otherwise it will not be loaded.
								clearTimeout(timer_in);
								reload_post();
								reload_page();
							}
							
							a.appendChild(tn('Önceki'));
							
							p.appendChild(a);
							
							p.appendChild(tn(' '));
							
							a = ce('a');						
						
							a.c = 0;
							a.href = 'javascript:;';
							a.onclick = function()
							{
								count = this.c;
								last = 0; // Reset last, otherwise it will not be loaded.
								clearTimeout(timer_in);
								reload_post();
								reload_page();
							}
							
							a.appendChild(tn('1'));
							
							p.appendChild(a);
							a = ce('a');
						} 
						
						if (total_pages > 5)
						{
							var start_cnt = Math.min(Math.max(1, on_page - 4), total_pages - 5);
							var end_cnt = Math.max(Math.min(total_pages, on_page + 4), 6);
							
							p.appendChild((start_cnt > 1) ? tn(' ... ') : cp());
							
							for (var i = start_cnt + 1; i < end_cnt; i++)
							{
								if (i == on_page)
								{
									b.appendChild(tn(i));
									p.appendChild(b);
									b = ce('strong');	
								}
								else
								{
									a.c = (i - 1) * per_page;
									a.href = 'javascript:;';
									a.onclick = function()
									{
										count = this.c;
										last = 0; // Reset last, otherwise it will not be loaded.
										clearTimeout(timer_in);
										reload_post();
										reload_page();
									}
									
									a.appendChild(tn(i));
									
									p.appendChild(a);
									a = ce('a');			
								}
								if (i < end_cnt - 1)
								{
									p.appendChild(cp());
								}
							}
							
							p.appendChild((end_cnt < total_pages) ? tn(' ... ') : cp());							
						}
						else
						{
							p.appendChild(cp());
							for (var i = 2; i < total_pages; i++)
							{
								if (i == on_page)
								{
									b.appendChild(tn(i));
									p.appendChild(b);
									b = ce('strong');	
								}
								else
								{
									a.c = (i - 1) * per_page;
									a.href = 'javascript:;';
									a.onclick = function()
									{
										count = this.c;
										last = 0; // Reset last, otherwise it will not be loaded.
										clearTimeout(timer_in);
										reload_post();
										reload_page();
									}
									
									a.appendChild(tn(i));
									
									p.appendChild(a);
									a = ce('a');			
								}
								if (i < total_pages)
								{
									p.appendChild(cp());
								}
							}						
						}
						
						if (on_page == total_pages)
						{
							b.appendChild(tn(total_pages));
							p.appendChild(b);
							b = ce('strong');
						}
						else
						{
							
							a = ce('a');						
						
							a.c = ((total_pages - 1) * per_page);
							a.href = 'javascript:;';
							a.onclick = function()
							{
								count = this.c;
								last = 0; // Reset last, otherwise it will not be loaded.
								clearTimeout(timer_in);
								reload_post();
								reload_page();
							}
							
							a.appendChild(tn(total_pages));
							
							p.appendChild(a);
							a = ce('a');

							a.c = ((on_page) * per_page);
							a.href = 'javascript:;';
							a.onclick = function()
							{
								count = this.c;
								last = 0; // Reset last, otherwise it will not be loaded.
								clearTimeout(timer_in);
								reload_post();
								reload_page();
							}
							
							a.appendChild(tn('Sonraki'));
							
							p.appendChild(tn(' '));
							
							p.appendChild(a);
							a = ce('a');
						}						
						
						f.appendChild(p);
					}
				}
			}
			catch (e)
			{
				handle(e);
				return;
			}
		}
		hnr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

		hnr.send(null);
	}
}
function reload_post()
{
	// First check if there new posts.
	if (hin2.readyState == 4 || hin2.readyState == 0)
	{
		hin2.open('GET','./ajax.php?m=check&last=' + last + '&rand='+Math.floor(Math.random() * 1000000),true);
		hin2.onreadystatechange = function()
		{
			try
			{
				if (hin2.readyState == 4)
				{
					if (!hin2.responseXML)
					{
						throw err_msg('XML hatası');
					}
					var xml = hin2.responseXML;		
					if (xml.getElementsByTagName('error') && xml.getElementsByTagName('error').length != 0)
					{
						err = xml.getElementsByTagName('error')[0].childNodes[0].nodeValue;
						throw err_msg(err);
						return;
					}
					
					var t = xml.getElementsByTagName('time')[0].childNodes[0].nodeValue;
					if (t == '0')
					{
						// If start is true, we let notice that there are no messages
						if (start == true)
						{
													
							var posts = document.getElementById('msg');
							posts.innerHTML = '';
							posts.appendChild(tn('Mesaj yok.'));
						}
					}
					else
					{
						if (hin.readyState == 4 || hin.readyState == 0)
						{
							last = xml.getElementsByTagName('last')[0].childNodes[0].nodeValue;
							// Lets got some nice things :D
							hin.open('GET','./ajax.php?m=view&start=' + count + '&rand='+Math.floor(Math.random() * 1000000),true);
							hin.onreadystatechange = function()
							{
								try
								{
									if (hin.readyState == 4)
									{
										if (!hin.responseXML)
										{
											throw err_msg('XML hatası');
											return;
										}
										var xml = hin.responseXML;
										if (xml.getElementsByTagName('error') && xml.getElementsByTagName('error').length != 0)
										{
											var msg = xml.getElementsByTagName('error')[0].childNodes[0].nodeValue;
											throw err_msg(msg);
											return;
										}
										else
										{
											start = false;
											var tmp = xml.getElementsByTagName('posts');
											if (tmp.length == 0)
											{
																							
												var posts = document.getElementById('msg');
												posts.innerHTML = '';
												posts.appendChild(tn('Mesaj yok.'));
												setTimeout('reload_post();',5000);
												return;
											} 
											var posts = document.getElementById('msg');
											posts.innerHTML = '';
													
											var row = false;
											for (var i = 0; i < tmp.length ; i++)
											{
												var li = ce('li');
												li.className = (!row) ? 'row row1' : 'row row2';
												row = !row;
												
												var dl = ce('dl');
												var dd = ce('dd');
												var dt = ce('dt');
												var inh = tmp[i];
												dt.style.width = '15%';
												dt.style.styleFloat = dt.style.cssFloat = 'left';
												dd.style.styleFloat = dd.style.cssFloat = 'left';

											//	dd.style.paddingLeft = '3px';

												var s = ce('span');

												var msg = parse_xml_to_html(inh.getElementsByTagName('shout_text')[0]);
												
												                                                dt.appendChild(parse_xml_to_html(inh.getElementsByTagName('username')[0]));
                                                dt.appendChild(tn(' '));

												dt.appendChild(parse_xml_to_html(inh.getElementsByTagName('shout_time')[0]));

												dt.appendChild(tn(': '));

												dl.appendChild(dt);
												
												dd.appendChild(msg);
												dd.id = 'msgbody';

												dl.appendChild(dd);
												li.appendChild(dl);
												posts.appendChild(li);

											}

																					}
									}
								}
								catch (e)
								{
									timer_in = setTimeout('reload_post();',5000);
									handle(e);
									return;
								}
							}
							hin.send(null);
						}
					}
					timer_in = setTimeout('reload_post();',5000);
				}
			}
			catch (e)
			{
				handle(e);
				return;			
			}			
		}
		hin2.send(null);
	}
}

function no_ajax()
{
	return 'Ajax yok';
}

function cp()
{
	var sep = ce('span');
	sep.className = 'page-sep';
	sep.appendChild(tn(', '));
	return sep;
}