/**
 * @author iPrior
 */
var Bookmark = {
    type: false,
    id: false,
	link:false,
    comment: false,
    Confirm: function(type, id, link){
		this.link = link;
        this.type = new xmlrpcval(type, 'i4');
        this.id = new xmlrpcval(id, 'i4');
        var templ = new Template('<h3>Добавить #{type} в закладки?</h3><div><label for="bm_comment">Комментарий к закладке:</label><br /><textarea name="bm_comment" id="bm_comment" rows="5" style="width: 99%"></textarea></div><div><input onclick="javascript:Bookmark.Send();" type="button" name="button" id="OK" value="OK" /></div>');
        switch (type) {
            case 1:
                var show = {
                    type: 'пользователя'
                };
                break;
            case 2:
                var show = {
                    type: 'работу'
                };
                break;
            case 3:
                var show = {
                    type: 'проект'
                };
                break;
        }
        previewHTML(templ.evaluate(show));
		setTimeout("$('bm_comment').focus()", 1000);
    },
    Send: function(){
        this.comment = new xmlrpcval($F('bm_comment'), 'string');
        var param = new xmlrpcval();
        if (param.addStruct({
            type: this.type,
            id: this.id,
            comment: this.comment
        }) == 0) 
            throw 'Cannot add struct to params';
        var client = new xmlrpc_client('/xmlrpc/', window.location.host);
        var msg = new xmlrpcmsg('bookmark');
        msg.addParam(param);
        closePreviewHTML();
        var w = XMLRPC_Loading("Пожалуйста, подождите");
        var ret = client.send(msg);
        if (ret.faultCode()) 
            throw ret.faultString() + ' (' + ret.faultCode() + ')';
        
        if (ret.value().kindOf() != 'scalar') 
            throw 'Invalid kind of return value (' + ret.value().kindOf() + ')';
        
        if (ret.value().scalarTyp() != 'string') 
            throw 'Invalid type of return value (' + ret.value().scalarTyp() + ')';
        
        if (ret.value().scalarVal() != 'done') 
            throw ret.value().scalarVal();
        
        XMLRPC_Timeout();
		this.link.update('В закладках');
		this.link.removeClassName('bookmark_no');
		this.link.addClassName('bookmark_yes');
		this.link.onclick = 0;
		this.link.href = "/setup/?cmd=bookmarks";
		this.type = false;
		this.id = false;
		this.comment = false;
		this.link = false;
    }
}
