    var ajax = {
        chSettings: function(data) {
            data['query']='chSettings';
            ajaxQuery(data, function(data) {
                document.getElementById('chSetMessage').innerHTML = (data.status=='error') ? '<p class="error">' + data.html + '</p>' : '<p class="green">' + data.html + '</p>';
            });
        },


        chPassword: function(data) {
            data['query']='chPassword';
            ajaxQuery(data, function(data) {
                document.getElementById('chPassMessage').innerHTML = (data.status=='error') ? '<p class="error">' + data.html + '</p>' : '<p class="green">' + data.html + '</p>';
            });
        },


        chEmail: function(email) {
            ajaxQuery({query:'chEmail',email:email}, function(data) {
                document.getElementById('chEmailMessage').innerHTML = (data.status=='error') ? '<p class="error">' + data.html + '</p>' : '<p class="green">' + data.html + '</p>';
            });
        },

        baseInfo: function() {
            ajaxQuery({query:"baseInfo"}, function(data) {
                document.getElementById('baseInfo').innerHTML=data.html;
            });
        },


        reward: function(reward_alias) {
            ajaxQuery({query:'reward',alias:reward_alias}, function(data) {
                if (data.status == 'done') {
                    document.getElementById('skillPoint').innerHTML=data.skillPoint;
                    document.getElementById('awardImg_'+reward_alias).src=data.img;
                    document.getElementById('lvl_'+reward_alias).innerHTML=data.lvl;
                }
                document.getElementById('status_'+reward_alias).innerHTML=data.html;
            });
        },


        build: function(build_alias) {
            ajaxQuery({query:'build',alias:build_alias}, function(data) {
                document.getElementById('status_'+build_alias).innerHTML=data.html;
                ajax.baseInfo();
            });
        },


        cancelBuild: function(build_alias) {
            ajaxQuery({query:'cancelBuild',alias:build_alias}, function(data) {
                document.getElementById('status_'+build_alias).innerHTML=data.html;
                ajax.baseInfo();
            });
        },


        research: function(build_alias) {
            ajaxQuery({query:'research',alias:build_alias}, function(data) {
                document.getElementById('status_'+build_alias).innerHTML=data.html;
                ajax.baseInfo();
            });
        },


        cancelResearch: function(build_alias) {
            ajaxQuery({query:'cancelResearch',alias:build_alias}, function(data) {
                document.getElementById('status_'+build_alias).innerHTML=data.html;
                ajax.baseInfo();
            });
        },


        order: function(build_alias, onlyOne) {
            onlyOne = (onlyOne === undefined || onlyOne == false) ? 0 : 1;
            ajaxQuery({query:'order', alias:build_alias,num:document.getElementById('order_unit_'+build_alias).value, onlyOne:onlyOne}, function(data) {
                document.getElementById('status_'+build_alias).innerHTML=data.html;
                ajax.baseInfo();
            });
        },


        cancelOrder: function(build_alias) {
            ajaxQuery({query:'cancelOrder',alias:build_alias}, function(data) {
                document.getElementById('status_'+build_alias).innerHTML=data.html;
                ajax.baseInfo();
            });
        },


        build_order: function(alias) {
            ajaxQuery({query:"build_order",alias:alias}, function(data){
                document.getElementById('priority_buildings').innerHTML = data.html;
            });
        },


        cancel_build_order: function(build_order_id) {
            ajaxQuery({query:"cancel_build_order",build_order_id:build_order_id}, function(data){
                document.getElementById('priority_buildings').innerHTML = data.html;
            });
        },


        research_order: function(alias) {
            ajaxQuery({query:"research_order",alias:alias}, function(data){
                document.getElementById('priority_research').innerHTML = data.html;
            });
        },


        cancel_research_order: function(research_order_id) {
            ajaxQuery({query:"cancel_research_order",research_order_id:research_order_id}, function(data){
                document.getElementById('priority_research').innerHTML = data.html;
            });
        },


        autoConstruct: function(alias,value) {
            value = (value) ? 1 : 0;
            ajaxQuery({query:"autoConstruct",alias:alias,value:value});
            if (value) ajax.order(alias, true);
        },


        chBaseName: function() {
            ajaxQuery({query:'chBaseName',name:document.getElementById('basename').value}, function(data) {
                if (data.status=='error') jAlert(data.html, lang.other.error);
                else document.getElementById('basename').value=data.html;
            });
        },


        blowbase: function() {
            jConfirm(lang.other.confirm_blowBase, '', function(r) {if (r) {
                ajaxQuery({query:"blowbase"}, function(data) {
                    if (data.status=='error') jAlert(data.html, lang.other.error);
                    else refreshPage();
                });
            }});
        },


        delMessages: function(data) {
            jConfirm(lang.other.confirm_delMessages, '', function(r) {if (r) {
                data['query']='delMessages';
                ajaxQuery(data, function(data) {
                    if (data.status=='error') jAlert(data.html, lang.other.error);
                    else refreshPage();
                });
            }});
        },


        delAllMessages: function(type) {
            jConfirm(lang.other.confirm_delAllMessages, '', function(r) {if (r) {
                ajaxQuery({query:"delAllMessages", type:type}, function(data) {
                    if (data.status=='error') jAlert(data.html, lang.other.error);
                    else refreshPage();
                });
            }});
        },


        sendMessage: function(send) {
            send['query']='sendMessage';
            ajaxQuery(send, function(data) {
                if (data.status=='error') document.getElementById('message_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('message_message').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        ignor: function(login) {
            if (login=='') {
                document.getElementById('message_message').innerHTML='<p class="error">' + lang.other.have_not_select_player + '</p>';
                return false;
            }
            ajaxQuery({query:'ignor',login:login}, function(data) {
                document.getElementById('message_message').innerHTML = (data.status=='error') ? '<p class="error">' + data.html + '</p>' : '<p class="green">' + data.html + '</p>';
            });
        },


        newAl: function(alliance) {
            ajaxQuery({query:'newAl',alliance:alliance}, function(data) {
                if (data.status=='error') document.getElementById('al_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('al_message').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        dropAlliance: function() {
            jConfirm(lang.alliance.confirm_drop, '', function(r) {if (r) {
                ajaxQuery({query:'dropAlliance'}, function(data) {
                    refreshPage();
                });
            }});
        },


        joinToAl: function(alliance) {
            ajaxQuery({query:'joinToAl', alliance:alliance}, function(data) {
                if (data.status=='error') document.getElementById('al_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('al_message').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        cancelJoinToAl: function(alliance) {
            ajaxQuery({query:'cancelJoinToAl', alliance:alliance}, function(data) {
                if (data.status=='error') document.getElementById('al_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('al_message').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        refuseJoinToAl: function(player) {
            ajaxQuery({query:'refuseJoinToAl', player:player}, function(data) {
                if (data.status=='error') document.getElementById('al_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else refreshPage();
            });
        },


    //    addToAl: function(param) {
    //        param['query']='addToAl';
    //        ajaxQuery(param, function(data) {
        addToAl: function(player) {
            ajaxQuery({query:'addToAl', player:player}, function(data) {
                if (data.status=='error') document.getElementById('al_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('al_message').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        excludeAlliance: function(login) {
            jConfirm(lang.alliance.confirm_exclude, '', function(r) {if (r) {
                ajaxQuery({query:'excludeAlliance',login:login}, function(data) {
                    refreshPage();
                });
            }});
        },


        awayAlliance: function() {
            jConfirm(lang.alliance.confirm_away, '', function(r) {if (r) {
                ajaxQuery({query:'awayAlliance'}, function(data) {
                    if (data.status=='error') document.getElementById('al_message').innerHTML = '<p class="error">' + data.html + '</p>';
                    else refreshPage();
                });
            }});
        },


        spaceport: function(send) {
            send['query']='spaceport';
            ajaxQuery(send, function(data) {
                if (data.status=='error') document.getElementById('spaceport_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('spaceport_message').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        trade: function(send) {
            send['query']='trade';
            ajaxQuery(send, function(data) {
                if (data.status=='error') document.getElementById('trade_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('trade_message').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        spy: function(send) {
            send['query']='spy';
            ajaxQuery(send, function(data) {
                document.getElementById('spy_message').innerHTML = (data.status=='error') ? '<p class="error">' + data.html + '</p>' : data.html;
                ajax.baseInfo();
            });
        },


        death_hand: function(send) {
            send['query']='death_hand';
            ajaxQuery(send, function(data) {
                document.getElementById('death_hand_message').innerHTML = (data.status=='error') ? '<p class="error">' + data.html + '</p>' : data.html;
            });
        },


        saboteur: function(send) {
            send['query']='saboteur';
            ajaxQuery(send, function(data) {
                document.getElementById('saboteur_message').innerHTML = (data.status=='error') ? '<p class="error">' + data.html + '</p>' : data.html;
            });
        },


        createArmy: function(send) {
            send['query']='createArmy';
            ajaxQuery(send, function(data) {
                if (data.status=='error') document.getElementById('army_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else refreshPage();
            });
        },


        moveArmy: function(army_id,x,y,callback) {
            ajaxQuery({query:'moveArmy',army_id:army_id,x:x,y:y}, function(data) {
                if (callback == undefined) {
                    if (data.status=='error') jAlert(data.html, lang.other.error, function() {refreshPage();});
                    else refreshPage();
                }
                else callback();
            });
        },


        stopArmy: function(army_id, callback) {
            ajaxQuery({query:'stopArmy',army_id:army_id}, function(data) {
                if (callback == undefined) {
                    if (data.status=='error') jAlert(data.html, lang.other.error, function() {refreshPage();});
                    else refreshPage();
                }
                else callback();
            });
        },


        splitArmy: function(send) {
            send['query']='splitArmy';
            ajaxQuery(send, function(data) {
                if (data.status=='error') document.getElementById('army_message').innerHTML = '<p class="error">' + data.html + '</p>';
                else window.location.href="/game/army/";
            });
        },


        collect: function(army_id) {
            ajaxQuery({query:'collect',army_id:army_id}, function(data) {
                if (data.status=='error') jAlert(data.html, lang.other.error, function() {refreshPage();});
                else refreshPage();
            });
        },


        inBase: function(army_id) {
            ajaxQuery({query:'inBase',army_id:army_id}, function(data) {
                if (data.status=='error') jAlert(data.html, lang.other.error, function() {refreshPage();});
                else refreshPage();
            });
        },


        unloadCargo: function(army_id) {
            ajaxQuery({query:'unloadCargo',army_id:army_id}, function(data) {
                if (data.status=='error') jAlert(data.html, lang.other.error, function() {refreshPage();});
                else refreshPage();
            });
        },


        buildBase: function(army_id) {
            ajaxQuery({query:'buildBase',army_id:army_id}, function(data) {
                if (data.status=='error') jAlert(data.html, lang.other.error, function() {refreshPage();});
                else refreshPage();
            });
        },


        attack: function(army_id) {
            ajaxQuery({query:'attack',army_id:army_id}, function(data) {
                if (data.status=='error') jAlert(data.html, lang.other.war_result);
                else {
                    jConfirm(data.html, lang.other.war_result, function(r) {
                        if (r) window.location.href=data.href;
                        else refreshPage();
                    });
                }
            });
        },


        buildFirstBase: function(data) {
            data['query']='buildFirstBase';
            ajaxQuery(data, function(data) {
                if (data.status=='error') document.getElementById('message').innerHTML = '<p class="error">' + data.html + '</p>';
                else window.location.href=data.href;
            });
        },


        sendSysMessage: function(text) {
            ajaxQuery({query:'sendSysMessage', text:text}, function(data) {
                if (data.status=='error') document.getElementById('sendSysMessage').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('sendSysMessage').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        awarding: function(data) {
            data['query']='awarding';
            ajaxQuery(data, function(data) {
                if (data.status=='error') document.getElementById('medalMessage').innerHTML = '<p class="error">' + data.html + '</p>';
                else {
                    document.getElementById('medalMessage').innerHTML = '<p class="green">' + data.html + '</p>';
                    setTimeout('refreshPage()',2000);
                }
            });
        },


        obstacle: function(x,y,callback) {
            ajaxQuery({query:'obstacle',x:x,y:y},callback);
        }
    }
