/**
* Javascript for Ajax-Chat module
* @version		1.0
* @package		mod_Ajax-Chat
* @copyright	Copyright (C) 2008 - 2009 Goran Usljebrka. All rights reserved.
* @license		GNU/GPL
* mod_Ajax-Chat is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

var lastMessage = 0;
var interval = '';
var ultimate_times = '';
var ampm = '';
var mTimer;
var zone = '';
var time_diff = '';
var show_time = '';



function stripslashes( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +      fixed by: Mick@el
    // +   improved by: marrtins
    // +   bugfixed by: Onno Marsman
    // +   improved by: rezna
    // *     example 1: stripslashes('Kevin\'s code');
    // *     returns 1: "Kevin's code"
    // *     example 2: stripslashes('Kevin\\\'s code');
    // *     returns 2: "Kevin\'s code"

    return (str+'').replace(/\0/g, '0').replace(/\\([\\'"])/g, '$1');
}


// XML
//
// load xml doc
function loadXMLDoc(dname) 
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {
  alert(e.message)
  }
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load(dname);
  return(xmlDoc);
  }
catch(e) {//alert(e.message)
}
return(null);
}

function SearchIntro(oEvent, value, url, date, ip, ime, id){
if ((oEvent.keyCode && oEvent.keyCode==13)
|| (oEvent.which && oEvent.which==13)) {
if(value.value.length >= 2){
    clearTimeout( interval );
new_line(value, url, date, ip, ime, id);
//alert( value.value + url + date + ip + ime + id);
}
}
}

function takeName(oEvent, value, url){
if ((oEvent.keyCode && oEvent.keyCode==13)
|| (oEvent.which && oEvent.which==13)) {
unesi_ovo_ime(value);
//alert( value + url + date + ip + ime + id);
}
}

function return_cookie(srch){
var result = '';
var cookie = document.getElementById('temporary_field1').value;
        var spl_cookie = cookie.split('||||');
        for(i=0; i <= spl_cookie.length-1; i++)
        {
            var fnl = spl_cookie[i].split('----');
            if(fnl[0] == srch){result = fnl[1];}
        }
    return result;
}

function replace_cookie(toReplace, forReplace){
var replacement = '';
var cookie = document.getElementById('temporary_field1').value;
        var spl_cookie = cookie.split('||||');
        for(i=0; i <= spl_cookie.length-1; i++)
        {
            var fnl = spl_cookie[i].split('----');
            if(toReplace != null){
                if(fnl[0] == toReplace){fnl[1] = forReplace;}
                replacement += fnl[0] + '----' + fnl[1];
            if(i <= spl_cookie.length -2){
                replacement += '||||';
            }
            document.getElementById('temporary_field1').value = replacement;
            }
        }
}

function unesi_ovo_ime(value){
        tst = return_cookie('name');
        var input_fields = document.getElementById( 'Ajax_input_fields' );
        var input_fields1 = document.getElementById( 'Ajax_input_fields1' );
    if (tst  == 'guest')
    {
        replace_cookie('name', value.value);
        input_fields.style.display='none';
        input_fields1.style.display='';
        document.getElementById('valja_se').focus();
    }
    else
    {
        input_fields.style.display='';
        input_fields1.style.display='none';        
    }
}

function get_file_size(url, old){
new Ajax.Request(url + 'ajax.php?task=check_file_size&url='+url+'&old_data='+old, {
  method: 'get',
  onSuccess: function(transport) {
    //var notice = $('notice');
    onSuccess: 
    var bottom_bar = return_cookie('bottom_bar');
    if(bottom_bar == "1"){
        var p = document.getElementById('slider_value');
        var p_vrednost = p.value * 1;
        var slider_part1 = '<img width="120px" heigth="20px" src="' + url + '/images/';
        var slider_part3 = '.png">';
    }else{
        var p_vrednost = 'disabled';
    }
var r = document.getElementById('debuggger');
var show_time = return_cookie('show_timer');
if(show_time == 1){
var vreme = new Date();
var tst = vreme.getHours() + ':' + vreme.getMinutes() + ':' +vreme.getSeconds();
document.getElementById('Ajax_time_of_call').innerHTML = tst;
}
var ajax_speed = return_cookie('ajax_speed');

        if (transport.status==200){
            var rx = transport.responseText;
            state = rx.split('||');
            //alert(state[0] + state[1]);
            var status = state[0].split('=');
            var size = state[1].split('=');
            //document.getElementById('file_size').innerHTML = 'filesize: ' + size[1];
            //alert('velicina:' + size + '|status: ' + status);
            if(status[1] == 'true')
                {
                if(p_vrednost >= '7' && p_vrednost != 'disabled'){
                r.innerHTML=slider_part1 + '1' + slider_part3;
                p.value = 1;
            }else if(p_vrednost != 'disabled'){
                p_vrednost += 1;
                r.innerHTML=slider_part1 + p_vrednost + slider_part3;
				p.value = p_vrednost;
            }
            clearTimeout( interval );
            interval = setTimeout('activate_Ajax_listener()', ajax_speed);
//          alert('same all');
            }
            else if(status[1] == 'false')
            {
                if(p_vrednost >= '7' && p_vrednost != 'disabled'){
                    r.innerHTML = slider_part1 + '1' + slider_part3;
                    p.value = 1;
                }
                else if(p_vrednost != 'disabled')
                {
                p_vrednost += 1;
                r.innerHTML = slider_part1 + p_vrednost + slider_part3;
				p.value = p_vrednost;
                }
            replace_cookie('num_of_msgs', size[1]);
            //alert('Change!!');
            clearTimeout( interval );
            //alert(url);
            change_chat_text(url);
            }else
            {if(p_vrednost >= 7 && p_vrednost != 'disabled')
                {
                r.innerHTML=slider_part1 + '1' + slider_part3;
                p.value = 1;
            }else if(p_vrednost != 'disabled')
            {
                p_vrednost += 1;
                r.innerHTML = slider_part1 + p_vrednost + slider_part3;
				p.value = p_vrednost;
            }
            //alert(': status[1]' + status[1]);
            //alert(url);
            clearTimeout( interval );
            interval = setTimeout('activate_Ajax_listener()', ajax_speed);
            }
        }
        else
        {
            clearTimeout( interval );
            interval = setTimeout('activate_Ajax_listener()', ajax_speed);
            document.getElementById('Ajax_chat_error').innerHTML = 'ajax_call_error';
            //alert("an error acured while trying");
        }
    }});
}
    function notice_difference(){

}
//Monitor chat changes, and updates field as neccesery!
function activate_Ajax_listener(){
    var msgs = return_cookie('num_of_msgs');
    var url1 = return_cookie('path_to_folder');
    get_file_size(url1, msgs);
    //xmldata = loadXMLDoc(url);
}
function change_chat_text(url){
    var tamo = return_cookie('filepath');
    xmldata = loadXMLDoc(tamo);
    //alert(xmldata);
    izlistaj_promene(xmldata, url);
}
    function izlistaj_promene(xmldata, url){
        var a = document.getElementById('Ajax_tekst_field');
        var sign = return_cookie('znak');
        var time_diff = return_cookie('time_diff');
        var ajax_speed = return_cookie('ajax_speed');
        var max_num_of_msgs = return_cookie('max_num_of_msgs');
        max_num_of_msgs = max_num_of_msgs * 1;
        var html = '';
        var name = xmldata.getElementsByTagName("message");
        //if(error[0].firstChild.nodeValue == 'no' || error[0].firstChild.nodeValue != null || error[0].firstChild.nodeValue != '' || error[0].firstChild.nodeValue != NaN){
        //}
                if(name.length >= max_num_of_msgs + 5 ){
                    max_length = name.length - max_num_of_msgs;
                }
                else
                {
                    max_length = 0;
                }
                for(i = name.length - 1; i >= max_length; i--){
                //alert(name.length-1);
                //alert(i);
                var id = name[i].getElementsByTagName('id');
                var ime = name[i].getElementsByTagName('name');
                var msg = name[i].getElementsByTagName('msg');
                var date = name[i].getElementsByTagName('ndate');
                //alert(date[0].firstChild.nodeValue);
                var time = new Date();
                time.setSeconds('0');
                time.setMinutes('0');
                time.setHours('0');
                time.setSeconds(date[0].firstChild.nodeValue);
                if(sign == 'plus'){
                    time.setSeconds( + time_diff);
                }else if(sign == 'minus'){
                    time.setSeconds( - time_diff);
                }
                if(time.getHours() > 11){
                    ultimate_times = 0 + (time.getHours() - 12);
                    ampm = 'pm';
                }else{ultimate_times = time.getHours();
                    ampm = 'am';}
                if(time.getMinutes() < 10){
                    ultimate_times += ':' + 0 + time.getMinutes();
                }else{
                    ultimate_times += ':' + time.getMinutes();
                }
                ultimate_times += ampm + ':';
                if(i == name.length-1){
                    var main_div = document.getElementById('Ajax_new_message_holder');
                    var child_div = document.getElementById('Ajax_new_message');
                    htmlFm = '<div class="name">' + ime[0].firstChild.nodeValue.replace(/<([^>]+)>/g,'_') + '</div>';
                    htmlFm += '<div class="time">' + ultimate_times + '</div>';
                    htmlFm += '<div class="msg">' + msg[0].firstChild.nodeValue.replace(/<([^>]+)>/g,'_') + '</div>';
                    //var arar = main_div.innerHTML;
                    main_div.removeChild(child_div);
                    var new_div = document.createElement('div');
                    new_div.setAttribute('id', 'Ajax_new_message');
                    main_div.appendChild(new_div);
                    new_div.innerHTML = htmlFm;
                }
                else
                {
                html += '<div class="name">' + ime[0].firstChild.nodeValue.replace(/<([^>]+)>/g,'_') + '</div>';
                html += '<div class="time">' + ultimate_times + '</div>';
                html += '<div class="msg">' + msg[0].firstChild.nodeValue.replace(/<([^>]+)>/g,'_') + '</div>';
                html += '<div class="liner"></div>';
                }
        }
        //alert(html);
        a.innerHTML = html;
        document.getElementById('work_submit_msg').style.display='none';
                //alert('ovde ne?');
                //alert(html);
                //document.getElementById('change_cookie_name_field').style.display='';
                //html = strip_tags(html);
//                br = browserIs();
//                if(br == 'ie'){
                //alert('prosao sam ovuda');
                //alert(html);
                interval = setTimeout('activate_Ajax_listener()', ajax_speed);
//                }else{
//                setTimeout('visual_aids(\''+ ajax_speed +'\')',1550);
//                }
    }
function strip_tags($text){
 return $text.replace(/<\/?[^>]+>/gi, '');
}
    
function browserIs()
{
var browserName=navigator.appName;
if (browserName=="Microsoft Internet Explorer")
{
var br = 'ie';
}else{br = 'ff';}
return br;
}    
    function visual_aids(ajax_speed){
                Effect.Pulsate('Ajax_new_message', { pulses: 2, duration: 2.0 });
                //Effect.Pulsate('Ajax_new_message');
                setTimeout('document.getElementById(\'Ajax_new_message\').style.background="#fff"',600);
                interval = setTimeout('activate_Ajax_listener()', ajax_speed);
    }

function replace_cookie_ajax(name, url){
    var parameters = 'task=destroy_cookie';
    if (rep_cook_Req.readyState == 4 || rep_cook_Req.readyState == 0) {
        rep_cook_Req.open("GET", url + 'modules/mod_AjaxChat/ajax.php?task=destroy_cookie', true);
        rep_cook_Req.setRequestHeader("Content-type", "application/x-www-form-urlencoded")        
        rep_cook_Req.onreadystatechange = echo_response; 
        rep_cook_Req.send(null);
    }
}
function change_cookie_name(name, url){
new Ajax.Request(url + 'modules/mod_AjaxChat/ajax.php?task=change_cookie_name&name='+name, {
  method: 'get',
  onSuccess: function(transport) {
    //var notice = $('notice');
    onSuccess: 
    var status = rep_cook_Req.status;
        if (transport.status==200){
        var rx = transport.responseText;
            if(rx== 'reload')
            {
                window.location.reload();
            }else
            {
                return rx;
                document.getElementById('Ajax_chat_error').innerHTML = 'there was error while trying to access file';
            }
                }
                else
                {
                document.getElementById('Ajax_chat_error').innerHTML = 'ajax_call_error';
                }
            }
        });
    }
//inputs into database username and/or chat text
function new_line(value, url, date, ip, ime, id){
seconds = return_cookie('time_diff');
znak = return_cookie('znak');
var ultimate_time = new Date();
                var time = new Date();
                if(znak == 'plus'){
                time.setSeconds(-seconds);
                }else{
                time.setSeconds(+seconds);
                }
                if(time.getHours() > 11){
                ultimate_time = 0 + (time.getHours() - 12);
                    ampm = 'pm';
                }else{ultimate_time = time.getHours(); 
                    ampm = 'am';}
                if(time.getMinutes() < 10){
                ultimate_time += ':' + 0 + time.getMinutes();
                }else{
                ultimate_time += ':' + time.getMinutes();}
                ultimate_time += ampm;
                date = ultimate_time;
                var old_cookie = return_cookie('name');
                if (old_cookie  != null)
                {var ime = old_cookie;}
                //alert(value.value);
                value.value = value.value.stripScripts().stripTags();
                //replace(/[^a-zA-Z 0-9]+/g,'');
                var rs = value.value.replace(/[?]+/g, '--qmark--');
                //alert(rs);
var parameters = 'msg='+rs+'&date='+date+'&ip='+ip+'&name='+ime+'&id='+id+'&task=new_line';
//alert(parameters);
new Ajax.Request(url + 'modules/mod_AjaxChat/ajax.php', {
  method: 'post',
  parameters: parameters,
  onSuccess: function(transport) {
    //var notice = $('notice');
    onSuccess: 
        if (transport.status==200){
        //alert(transport.responseText);
        obradi_podatke(transport);
    }
}
});
}

function obradi_podatke(transport){
        if (transport.status==200){
            var ajax_speed = return_cookie('ajax_speed');
            interval = setTimeout('activate_Ajax_listener()', ajax_speed);
        //alert(transport.responseText);
        //alert(transport.responseXML);
        var error = transport.responseXML.getElementsByTagName("error");
        if((error[0].firstChild.nodeValue != 'no') && (error[0].firstChild.nodeValue != null) && (error[0].firstChild.nodeValue != NaN)){
            document.getElementById('Ajax_chat_error').innerHTML = error[0].firstChild.nodeValue;
        }
        //alert(error[0].firstChild.nodeValue);
        document.getElementById('valja_se').value='';
        document.getElementById('valja_se').focus();
        //document.getElementById('change_cookie_name_field').style.display='none';
        document.getElementById('work_submit_msg').style.display='';        
        //alert('odje?');
        //document.getElementById('Ajax_chat_error').innerHTML = '';
                }
                else{
                            document.getElementById('Ajax_chat_error').innerHTML = 'ajax_call_error';
                }
}
