// 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 = 'Błąd JavaScript. \nError: ';
                        tmp += e.message;
                        if (e.lineNumber)
                        {
                                tmp += '\nLinia: ';
                                tmp += e.lineNumber;
                        }
                        if (e.fileName)
                        {
                                tmp += '\nPlik: ';
                                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('Nie można znaleźć diva shoutboxa.');        
        
                        ev.name = 'E_CORE_ERROR';
                        throw ev; 
                        return;
                }
                else
                {
                        div = document.getElementById('shoutbox');

                        // Display message ;)
                        message('Wczytywanie');
                        // 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 = '300px';
                        post.style.overflow = 'auto';                post.appendChild(tn('Wczytywanie'));
                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&sid=105e522741abd3d4f22f4bfddc40b8cc&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 < 25)
                                                {
                                                        return;
                                                }
                                                
                                                var per_page = 25;
                                                
                                                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('Poprzednia strona'));
                                                        
                                                        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('Następna strona'));
                                                        
                                                        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&sid=105e522741abd3d4f22f4bfddc40b8cc&last=' + last + '&rand='+Math.floor(Math.random() * 1000000),true);
                hin2.onreadystatechange = function()
                {
                        try
                        {
                                if (hin2.readyState == 4)
                                {
                                        if (!hin2.responseXML)
                                        {
                                                throw err_msg('Błąd XML.');
                                        }
                                        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('Nie ma żadnych wiadomości.'));
                                                }
                                        }
                                        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&sid=105e522741abd3d4f22f4bfddc40b8cc&start=' + count + '&rand='+Math.floor(Math.random() * 1000000),true);
                                                        hin.onreadystatechange = function()
                                                        {
                                                                try
                                                                {
                                                                        if (hin.readyState == 4)
                                                                        {
                                                                                if (!hin.responseXML)
                                                                                {
                                                                                        throw err_msg('Błąd XML.');
                                                                                        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('Nie ma żadnych wiadomości.'));
                                                                                                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 = '31%';
                                                                                                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('shout_time')[0]));
                                                                                                dt.appendChild(tn(' | '));

                                                                                                dt.appendChild(parse_xml_to_html(inh.getElementsByTagName('username')[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 'Brak ajaxa';
}

function cp()
{
	var sep = ce('span');
	sep.className = 'page-sep';
	sep.appendChild(tn(', '));
	return sep;
}
