var idPage=null;
var sysTime=-1;
var Timer;
var TimeOut;
var User;

function AJAX(query,arg, obj) {
    obj=obj||false;
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            doAnime('normal');
            clearTimeout(TimeOut);
            ToDebug(req.responseText);
            if(req.responseJS){
                var container=null;
                if(req.responseJS.targets){
                    for(var target in req.responseJS.targets){
                        container=document.getElementById(target);
                        if(container){
                            container.innerHTML = req.responseJS.targets[target];
                        }else{
                            //ToDebug("Target `"+target+"` not found!");
                        }
                    }
                }
                if(req.responseJS.vars){
                    if(req.responseJS.vars['requestAft']==sysTime){
                        sysTime=req.responseJS.vars['syncTime'];
                        container=document.getElementById('chat_boar');
                        if(container && req.responseJS.vars['chatMsg']){
                            container.innerHTML = req.responseJS.vars['chatMsg']+ container.innerHTML;
                            soundManager.play("chatsound");
                        }
                    }
                }
                if(req.responseJS.evals){
                    for(var script in req.responseJS.evals){
                        eval(req.responseJS.evals[script]);
                    }
                }
            }
        }
    }
    req.caching=false;
    req.open(null, '/eva/server.php', true);
    req.send( {usr: User, aft: sysTime, q: query, a: arg , o: obj} );
    if(query=='start'){
        TimeOut = setTimeout( function(){req.abort(); ToDebug('Ошибка. Пробую ещё...'); AJAX('start')}, 30000);
        return;
    }
    if(query=='chatsay'){
        TimeOut = setTimeout( function(){req.abort(); doAnime('error') }, 10000);
    }else{
        TimeOut = setTimeout( function(){req.abort(); doAnime('error') }, 30000);
    }
    doAnime('load');
}

function ToDebug(data){
    if(data==false || data==null) return 0;
    var debug=document.getElementById('divDebug');
    if(debug) debug.innerHTML = data+'<br>'+debug.innerHTML;
}

function doAnime(status){
    var face=document.getElementById('divFace');
    if(face==null) return false;
    switch (status){
        case 'normal':
            face.className="hidden";
            break;
        case 'load':
            face.innerHTML="<img src=\"/eva/face01.gif\" border=0>";
            face.className="active";
            break;
        case 'error':
            face.innerHTML="<img src=\"/eva/face_err.gif\" border=0>";
            face.className="active";
            break;
    }
}

function loginMessage(msg){
    document.getElementById('loginMessage').innerHTML="<p class=\"orange\">"+msg+"</p>";
}

function defPosition(event) {
    var x = y = 0;
    if (document.attachEvent != null) { // Internet Explorer & Opera
        x = window.event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
        y = window.event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
    } else if (!document.attachEvent && document.addEventListener) { // Gecko
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    } else {
            // Do nothing
    }
return {x:x, y:y};
}

function ShowPage(id){
    var page=document.getElementById(id);
    if (page!=null){
        var content=document.getElementById('content');
        for (var i=0;i<content.childNodes.length;i++){
            if (content.childNodes[i].id==id){
                content.childNodes[i].className="page active";
            }else{
                content.childNodes[i].className="page hidden";
            }
        }
    }
}

function initService(id){
    var res= new AJAX('init',id);
    ShowPage(id);
}

function ChatSay(){
    var txtText=document.getElementById('txtChatText');
    if (txtText.value=='.silent'){
        clearTimeout(Timer);
        Timer=null;
    }else if(txtText.value=='.clear'){
        document.getElementById('chat_boar').innerHTML='';
    }else if(txtText.value=='.reload'){
        document.getElementById('chat_boar').innerHTML='';
        sysTime=-1;
    }else{
        var res= new AJAX('chatsay',txtText.value);
        clearTimeout(Timer);
        Timer=setTimeout("Reload()",10000);
    }
    txtText.value='';
    txtText.focus();
return false;
}

function BlogPost(){
    var txtText=document.getElementById('txtBlogText');
    if (txtText.value.length!= 0 ){
        AJAX('blogpost',null,document.getElementById('frmBlog'));
    }
    setTimeout("document.getElementById('frmBlog').reset();",1500);
return false;
}
function imgBload(id){AJAX('imgBload',id,document.getElementById('frmimgBload'+id));}

function APost(){
    if (document.getElementById('txtAText').value.length!= 0){
        AJAX('Apost',null,document.getElementById('frmA'));
        setTimeout("document.getElementById('frmA').reset();",1500);
    }
return false;
}


function AlbumPost(){
    AJAX('albumpost',null,document.getElementById('frmAlbum'));
    setTimeout("document.getElementById('frmAlbum').reset();",1500);
return false;
}

function Comment(service,target,event){
    var frmComment=document.getElementById('frmComment');
    frmComment.service.value=service;
    frmComment.target.value=target
    var divComment=document.getElementById('comment');
    var txtText=document.getElementById('txtCommentText');
    txtText.value="";
    var event = event || window.event;
    divComment.style.left=defPosition(event).x+"px";
    divComment.style.top=defPosition(event).y+"px";
    divComment.className="active";
return false;
}

function CommentPost(){
    var frmComment=document.getElementById('frmComment');
    var service=frmComment.service.value;
    var target=frmComment.target.value;
    var txtText=document.getElementById('txtCommentText');
    var res= new AJAX('commentpost',service+"||"+target,frmComment);
    CommentAbort();
return false;
}

function CommentAbort(){
    var divComment=document.getElementById('comment');
    divComment.className="hidden";
return false;
}

function ShowLog(service,target){
    var res=new AJAX('showlog',service + "||" + target);
return false;
}

function ShowComments(service,target){
    var Comments=document.getElementById(service+target);
    var res=new AJAX('showcomment',service+"||"+target);
    if (Comments!=null) Comments.className="active";
return false;
}

function HideComments(id){
    document.getElementById(id).className="hidden";
return false;
}

function Reload(){
    var res= new AJAX('chat');
    Timer=setTimeout("Reload()",10000);
return false;
}


function Login(){
    var txtLogin=document.getElementById('txtLogin');
    var txtPasswd=document.getElementById('txtPasswd');
    if((txtLogin && txtPasswd) !=null){
        var params=txtLogin.value+"||"+txtPasswd.value;
        var chkReg=document.getElementById('chkReg');
        if(chkReg.checked) params+="||regme";
        var res=new AJAX('login',params);
    }
return false
}

function doLogin(user){
    User=user;
    var mainframe=document.getElementById('mainframe');
    var loginframe=document.getElementById('loginframe');
    mainframe.className="active";
    loginframe.className="hidden";
return false
}

function Exit(){
    var res=new AJAX('exit');
}

function doExit() {window.location.reload();}

function RegMe(link){
    var chkReg=document.getElementById('chkReg');
    if (link>0) chkReg.checked=!chkReg.checked;
    var cmdReg=document.getElementById('btnLogin');
    if (chkReg.checked){
        cmdReg.value="Регистр."
    }else{
        cmdReg.value="Вход"
    }
}

function ShowServicePage(service,page){
    var res=new AJAX('showservicepage',service+"||"+page);
}
Loaded("ajax.js");

