﻿function createRequestMessage(id, command){
    var m = new Message();
    m.id = id;
    m.command = command;
    return m;
}

function createConnectMessage(id, uuid, autoLat, autoLong){
    var m = new Message();
    m.id = id;
    m.command = "connect";
    if (isSet(uuid)) {
        m.attributes.set("uuid", uuid);
    }
    m.attributes.set("autoLat", autoLat.toString());
    m.attributes.set("autoLong", autoLong.toString());
    return m;
}


function createLoginMessage(id, email, password, keepLogin){
    var m = new Message();
    m.id = id;
    m.command = "login";
    m.attributes.set("email", email);
    m.attributes.set("password", password);
    m.attributes.set("keeplogin", "" + keepLogin);
    return m;
}

function createLogoutMessage(id){
    var m = new Message();
    m.id = id;
    m.command = "logout";
    return m;
}

function createSignupMessage(id, email, password){
    var m = new Message();
    m.id = id;
    m.command = "signup";
    m.attributes.set("email", email);
    m.attributes.set("password", password);
    return m;
}

function createNewChatMessage(id, topic, place){
    var m = new Message();
    m.id = id;
    m.command = "newchat";
    if(typeof (topic) != "undefined"){
        m.attributes.set("topic", topic);
    }
    
    if(typeof (place) != "undefined"){
        m.attributes.set("place", place);
    }
    
    return m;

}

function createAliveMessage(){
    var m = new Message();
    m.command = "keepalive";
    return m;
}

function createChatMessage(id, discussionid, text){
    var m = new Message();
    m.id = id;
    m.command = "chat";
    m.attributes.set("discussionid", discussionid);
    m.text = text; 
    return m;
}

function createStopChatMessage(id, discussionid){
    var m = new Message();
    m.id = id;
    m.command = "chatend";
    m.attributes.set("discussionid", discussionid);
    return m;
}

function createStopSearchMessage(id){
    var m = new Message();
    m.id = id;
    m.command = "stopsearch";
    return m;
}

function createStartGameMessage(id, gameSchema){
    var m = new Message();
    m.id = id;
    m.schema = "http://www.SimpleConnexion.com/games/1.0";
    m.command = "start";
    m.attributes.set("game", gameSchema);
    return m;
}

function createEndGameMessage(id, gameSchema, gameSessionId){
    var m = new Message();
    m.id = id;
    m.schema = "http://www.SimpleConnexion.com/games/1.0";
    m.command = "end";
    m.attributes.set("game", gameSchema);
    m.attributes.set("gamesessionid", gameSessionId);
    return m;
}


function createAcceptStartGameMessage(id, gameSchema, gameSessionId, accepted){
    var m = new Message();
    m.id = id;
    m.schema = "http://www.SimpleConnexion.com/games/1.0";
    m.command = "acceptstart";
    m.attributes.set("game", gameSchema);
    m.attributes.set("gamesessionid", gameSessionId);
    m.attributes.set("accepted", accepted);
    return m;
}

function createSaveProfileMessage(id, nickname, gender, age, profession, location_lat, location_lng, location_text){
    var m = new Message();
    m.id = id;
    m.command = "saveprofile";
    m.attributes.set("nickname", nickname);
    m.attributes.set("gender", gender);
    m.attributes.set("age", age);
    m.attributes.set("profession", profession);
    m.attributes.set("loc_lat", location_lat);
    m.attributes.set("loc_lng", location_lng);
    m.attributes.set("loc_text", location_text);
      
    return m;
}


function createSearchCriteriaMessage(id, ageCriteria, genderCriteria, professionCriteria, countryCriteria, minDistCriteria, maxDistCriteria) {
    var m = new Message();
    m.id = id;
    m.command = "searchcriteria";

    if (ageCriteria != null)
        m.attributes.set("age", ageCriteria);

    if (genderCriteria != null)
        m.attributes.set("gender", genderCriteria);

    if (professionCriteria != null)
        m.attributes.set("profession", professionCriteria);

    if (countryCriteria != null)
        m.attributes.set("country", countryCriteria);

    if (minDistCriteria != null)
        m.attributes.set("mindist", minDistCriteria);

    if (maxDistCriteria != null)
        m.attributes.set("maxdist", maxDistCriteria);

    return m;
}

function createQuitMessage(id) {
    var m = new Message();
    m.id = id;
    m.command = "quit";
    return m;
}


function createContactActionMessage(id, action, ids){
    var m = new Message();
    m.id = id;
    m.command = "contactAction";
    m.attributes.set("action", action);

    
    if(typeof (ids) != "undefined"){
        m.attributes.set("ids", ids.toString());
    }
    
    return m;

}

function createLoadContactsMessage(id){
    var m = new Message();
    m.id = id;
    m.command = "contactList";
  
    return m;

}

function createMailMessage(id, action, discussionid, targetuuid, time, text){
    var m = new Message();
    m.id = id;
    m.command = "mail";
    m.attributes.set("action", action);
    if(isSet(discussionid)){
        m.attributes.set("discussionid", discussionid);
    }else if(isSet(targetuuid)){
        m.attributes.set("targetuuid", targetuuid);
    }
    
    if(isSet(time)){
        m.attributes.set("time", time);
    }
    
    if(isSet(text)){
        var melem = m.subElements.add("text");
        melem.text = text;
    }
    return m;

}






