//////////////////////////////////////////////
// добавление/удаление из списка друзей по нажатию на линк в сообщении
// с обновлением дива с аватарами и с сообщениями
function ma_u_friendin(userid, username){
    data = {id: userid};
    if ($defined(username)) data.username = username;

    query('friends', 'makefriend', {
    	data: data,
        postComplete: function(resp){
            if (resp.status == 'ok') {
                fr_updateall(userid);
                var el = $('friend-in');
                if ($defined(el)) 
                    el.setStyle('display', 'none');
                var el = $('friend-out');
                if ($defined(el)) 
                    el.setStyle('display', '');
            }
        }
    });
}

function ma_u_friendout(userid){
    query('friends', 'removefriend', {
        data: {
            id: userid
        },
        postComplete: function(resp){
            if (resp.status == 'ok') {
                fr_updateall(userid);
                var el = $('friend-out');
                if ($defined(el)) 
                    el.setStyle('display', 'none');
                var el = $('friend-in');
                if ($defined(el)) 
                    el.setStyle('display', '');
            }
        }
    });
    
}

function fr_updateall(uid){
    var frdiv = $('friends'); // обновление списка френдов в /blogger и на странице френдования
    if ($defined(frdiv)) {
        set_ajaxloading(frdiv.id, true);
        query('friends', 'items', {
        	data: {act: 'update'},
            update: frdiv,
            onComplete: function(){
                set_ajaxloading(frdiv.id, false);
            }
        });
    }
    if ($defined($('messages'))) { // обновление списка сообщений
        if (typeof mq_update == "function") 
            mq_update();
    }
}

WYGEditor = {
	insertTagText: function (anchor, tagName){
		var tagStart = '<' + tagName + '>';
		var tagEnd = '</' + tagName + '>';
		this.insertTag(anchor, tagStart, tagEnd);
		return false;
	},

	insertImage: function(anchor){
		var link = prompt('Введите адрес картинки', 'http://');
		if(link){
			this.insertTag(anchor, '<img src="' + link + '">', '');
		}
		return false;
	},

	insertAnchor: function(anchor){
		var anch = prompt('Введите ссылку', 'http://');
		if(anch){
			this.insertTag(anchor, '<a href="' + anch + '">', '</a>');
		}
		return false;
	},

	insertNick: function(anchor){
		var nick = prompt('Введите ник', '');
		if(nick){
			this.insertTag(anchor, '<a href="http://' + nick + '.blogoda.ru">' + nick, '</a>');
		}
		return false;
	},
	
	insertTag: function(anchor, tagStart, tagEnd, repObj){
			//var textarea = $(anchor).getParent('.wygeditor');
			var textareaParent = $(anchor).getParent().getParent();
			var textarea = textareaParent.getElementsByTagName('textarea')[0];
			textarea.focus();

			var scrtop = textarea.scrollTop;

			var cursorPos = this.getCursor(textarea);
			var txt_pre = textarea.value.substring(0, cursorPos.start);
			var txt_sel = textarea.value.substring(cursorPos.start, cursorPos.end);
			var txt_aft = textarea.value.substring(cursorPos.end);

			if(repObj){
				txt_sel = txt_sel.replace(/\r/g, '');
				txt_sel = txt_sel != '' ? txt_sel : ' ';
				txt_sel = txt_sel.replace(new RegExp(repObj.findStr, 'gm'), repObj.repStr);
			}

			if (cursorPos.start == cursorPos.end){
				var nuCursorPos = cursorPos.start + tagStart.length;
			}else{
				var nuCursorPos=String(txt_pre + tagStart + txt_sel + tagEnd).length;
			}

			textarea.value = txt_pre + tagStart + txt_sel + tagEnd + txt_aft;

			
			/*
			if(textarea.setSelectionRange) {
				textarea.setSelectionRange(nuCursorPos - 5, nuCursorPos);
			}
			*/
			this.setCursor(textarea, nuCursorPos, nuCursorPos);

			if (scrtop) textarea.scrollTop = scrtop;

			return false;
	},

	insertList: function(anchor){

			var tagStart = '<ul>\n';
			var tagEnd = '\n</ul>';
			
			var repObj = {
				findStr: '^(.+)',
				repStr: '\t<li>$1</li>' 
			}

			this.insertTag(anchor, tagStart, tagEnd, repObj);
	},

	getCursor: function(input){
			var result = {start: 0, end: 0};
			if (input.setSelectionRange){
				result.start= input.selectionStart;
				result.end = input.selectionEnd;
			} else if (!document.selection) {
				return false;
			} else if (document.selection && document.selection.createRange) {
				var range = document.selection.createRange();
				var stored_range = range.duplicate();
				stored_range.moveToElementText(input);
				stored_range.setEndPoint('EndToEnd', range);
				result.start = stored_range.text.length - range.text.length;
				result.end = result.start + range.text.length;
			}
			return result;
	},

	setCursor: function(textarea, start, end){
			if(textarea.createTextRange) {
				var range = textarea.createTextRange();
				range.move("character", start);
				range.select();
			} else if(textarea.selectionStart) {
				textarea.setSelectionRange(start, end);
			}
	}

}



/* comments */

if (!$defined(v_pagecount)) var v_pagecount = 1;
if (!$defined(v_pagenum)) var v_pagenum = 1;
if (!$defined(v_type)) var v_type = '';
var v_parent = 0;
var v_userid = 0;
var c_defaults = {'commessage': 'ваше мнение', 'comname': 'OpenID'}

function cm_switchpage(page)
{
    var page = $defined(page) && page>=1 && page<=v_pagecount?page:v_pagenum;
    var type = $defined(type)?type:v_type;
    var place = 'pcomments';
    set_ajaxloading(place);
    query('comments', 'pcomments', {
            data: {type: type, page: page, parent: v_parent, userid: v_userid},
            postComplete: function(resp){
                if (resp.status == 'ok') {
                  $('pcomments').setHTML(resp.html);                                                               
                }
                set_ajaxloading(place, false); 
            }
    });       
}

function cm_updatepage()
{       
    var type = $defined(type)?type:v_type;
    var place = 'pcomments';
    set_ajaxloading(place);
    query('comments', 'pcomments', {
            data: {type: type, page: _vnav['pcomments']['page'], parent: v_parent, userid: v_userid},
            onComplete: function(){
                set_ajaxloading(place, false); 
            },
            update: place // для скрипта навигации необходим evalscripts            
    });       
}

function cm_keyup(e)
{         
    if (window.event) {
       keycode = window.event.keyCode;       
       ctrl = window.event.ctrlKey;
    } else if (e) {
       keycode = e.which;
       ctrl = e.ctrlKey;
    }      
    if (ctrl && keycode==13) { comment_submit(); return false; }
    if (keycode==27) { com_newcomment(); return false; }
    return true;
}

function comment_preview() {
	inputOnFocus('commessage');
	if ($('commessage').value == '') {
		inputOnBlur('commessage');
		return false;
	}
    sf = $('postForm');
    if (!$defined(sf)) return false;    
    var place = 'commentSubmitForm';
    set_ajaxloading(place);
    $('commentPreview').setText('');
	$('commentPreview').setStyle('display', 'none');
    $('cmformto').value = "previewcomment";
    submitform('postForm', 'comments', {            
      onSuccess: function (resp) {
       if ($defined(resp.text)) {
        $('commentPreview').setHTML(resp.text);
		$('commentPreview').setStyle('display', '');
		return true;
       }
      },
      postComplete: function() {
        set_ajaxloading(place, false);
		inputOnBlur('commessage');
	  }
    });         
}

function comment_submit() {
	inputOnFocus('comname');
	inputOnFocus('commessage');
	if ($('commessage').value == '') {
		inputOnBlur('commessage');
		inputOnBlur('comname');
		return false;
	}	
    sf = $('postForm');
    if (!$defined(sf)) return false;    
    var place = 'commentSubmitForm';
    set_ajaxloading(place);
    $('cmformto').value = "checkcomment";
    if (!sf.comname) { // не указан openid
      submitform('postForm', 'comments', {  
         onSuccess: function(resp) {                               
           $('postForm').commessage.value = "";
           cm_updatepage(0);
           return true;
         },
         postComplete: function(resp) {           
           set_ajaxloading(place, false);
	       inputOnBlur('comname');
		   inputOnBlur('commessage');           
         }
      });
    } else {      
        submitform('postForm', 'comments', {  //m=checkcomment            
            onSuccess: function (resp) { 
              if (resp.openid) { // сабмитим по openid:
                $('postForm').action = '/openidc/verify.html';
                $('postForm').submit();
              } else {              
                 // сабмитим не по openid
              }                                              
              cm_updatepage(0);
              $('comname').value = '';
              $('commessage').value='';
              $('commentPreview').setStyle('display', 'none');
              $('commentPreview').setText('');
              return true;                                
            },
	        postComplete: function() {
	          set_ajaxloading(place, false);
	          inputOnBlur('comname');
			  inputOnBlur('commessage');
	        }
        })     
    }         
}
//var mq_onSuccessCreate;

function mq_create(options) {
	var method = '';
	var q = {'method': ''};
	var info = '';
	if ($defined(options.id)) {
		q = {'id': options.id, 'method': 'reply'};
		info = 'Ответ на сообщение';
	} else if ($defined(options.uid)) {
		q = {'id': options.uid, 'method': 'create'};
		info = 'Создать сообщение';
	}
	if (q.method != '') {
		popbox('messages', 'popupcreate', '500 200', info, q);
		return true;
	}
	return false;
}

function mq_createresponse(resp) {
	if (resp.status == 'ok' && window.mq_onSuccessCreate) {
		mq_onSuccessCreate(resp);
	}
}

var mq_filter = {};
var mq_page = 1;

function mq_update(page, filter) {
	if (!$defined(page))
		var page = mq_page;
	if (!$defined(filter)) 
		var filter = mq_filter;
		var place = 'messages';
		set_ajaxloading(place);
		query('messages', 'bitems', {
		data: {
				'page': 	page,
				'filter': 	$defined(filter['filter'])?filter['filter']:'',
				'text': 	$defined(filter['text'])?filter['text']:''
			  },
		update: $('messages'),
		onComplete: function() {
		    var switchers = ['offers', 'messages', 'friends', 'clubs', 'blogs', 'all'];
			mq_filter = filter; mq_page = page;
			filterq = filter['filter'] ==''?'all':filter['filter'];
            for (var i = 0; i < switchers.length; i++) {
           		var el = $('mlink-'+switchers[i]);
                if ($defined(el)) {
                	el.setProperty('class', filterq == switchers[i]?'orange':'');
                 }
            } 			
			set_ajaxloading(place, false);
			return false;
		}
	});
}

function mq_filter_run() {
	var filter = '';

	el = $('mq-filter-offers');
	if ($defined(el) && $(el).checked) filter+= 'offers';
	
	el = $('mq-filter-blogs');
	if ($defined(el) && $(el).checked) filter+= (filter == ''?'':',')+'blogs';

	el = $('mq-filter-friends');
	if ($defined(el) && $(el).checked) filter+= (filter == ''?'':',')+'friends';

	el = $('mq-filter-misc');
	if ($defined(el) && $(el).checked) filter+= (filter == ''?'':',')+'misc';
	
	var text = '';
	el = $('mq-filter-text');
	if ($defined(el) && el.value != '') text = el.value;
	mq_update(mq_page, {'filter': filter, 'text': text});
}

// **************************** project blogs ********************************** /

function ma_p_accept(pb_id) {
    query('blogger', 'projectblog_setstatus', {
        data: {
            pb_id: pb_id,
            status: 'accept'
        },
        postComplete: function(resp){
          mq_filter_run();
        }
    });
}
           
function ma_p_decline(pb_id) {
    query('blogger', 'projectblog_setstatus', {
        data: {
            pb_id: pb_id,
            status: 'decline'            
        },
        postComplete: function(resp){
          mq_filter_run();
        }
    });
}

function ma_p_torgset(pb_id) {     
     var cost = $('torgtxt');
     if (cost) {
        cost = cost.value;
        if ($('torg')) $('torg').remove();        
                
        query('blogger', 'projectblog_torg', {
            data: {
                pb_id: pb_id,            
                newcost: cost
            },
            postComplete: function(resp){
              mq_filter_run();
            }
        });         
                
     }
}

function ma_p_torg(pb_id) {    
   var block = $('torg');
   var pblog = $('pblog-'+pb_id);
                 
   if (block) block.remove(); 
   
   var inp = "Ваша цена: <input type='text' class='inlineeditor' id='torgtxt'>"+
       "<a href='#' onclick='ma_p_torgset("+pb_id+"); return false;'> предложить</a>";   
   block = new Element('div', {'id': 'torg'}).injectAfter(pblog);
   block.setHTML(inp);      
   pblog.setStyle('display', 'none');   
}


function ma_pp_projinfo(p_id) {     
     popbox('project', 'projinfo', 500, 400, 'id='+p_id);
     return true;
}

