//**************************** code for send message form ******************************
//**************************************************************************************
$('.send_group_message').live('click', function(){
	if (typeof(popup_fb)=='undefined') var popup_fb = new popUp();

	var group_id = $(this).attr('rel');
        popup_fb.onclose = function(){
            popup_fb.clearMe();
            adv_settings_showed = 0;
        }
	title = $(this).html();
	popup_fb.load('/user/message/send/group/'+group_id,{
		width: '600px',
		title: title,
		buttons:[
		{
			value:'Send',
			clickFunction:function(){
                                if ($("#message_form").validate({
                                    errorElement: "li",
                                    wrapper: "ul",
                                    highlight: function(){},
                                    rules: {
                                      message_email:{
                                         customMessage: true 
                                      },
                                      message_sms:{
                                         customMessage: true,
                                         maxlength: 160
                                      },
                                      message_im:{
                                         customMessage: true,
                                         maxlength: 600
                                      }
                                    },
                                    messages: {
                                        required: "Value is required and can't be empty"
                                    }
                                }).form() == true) {
                                    $('#message_form').ajaxSubmit({
                                        type: "POST",
                                        target: $('.message_container'),
                                        replaceTarget: true,
                                        success: function (data) {
                                            if(data == 'SUCCESS')
                                                popup_fb.load('<div class="message_container" style="color:#333333; font-size: 11px; max-height: 350px;"><div class="info"><div class="info-content">Message sent</div></div></div>',{title: 'Message sent', width: '300px', buttons: [{value: 'Ok', clickFunction: function(){popup_fb.hide()}}]})    
                                        }
                                    }); 
                                }

			}
		},
		{
			value:'Cancel',
			clickFunction:function(){
				popup_fb.hide();
                                popup_fb.clearMe();
			}
		}
		]
	});

	return false;
});
//create custom validator for send message form
jQuery.validator.addMethod("customMessage", function(value, element) {
    var textid = $(element).attr('id');
    var toogleid = 'custom_'+textid;
    var toogle = $('#'+toogleid);
    if(value.length == 0 && !toogle.is(':checked')){
        return false;
    }else{
        return true;
    }
}, "No custom message provided");


var adv_settings_showed = 0;
//toogle advanced settings form for messages
$('.toogle_send_message_adv').live('click', function(){
    if($('.send_message_advanced').css('display') == 'none'){
        $(this).html('Basic settings');
        $('.send_message_advanced').css('display', '');
        adv_settings_showed = 1;
    } else{
        $(this).html('Advanced settings');
        $('.send_message_advanced').css('display', 'none');
        adv_settings_showed = 0;
    }
});
//toogle send time selection for messages
/*$('input[name="send_now"]').live('click', function(){
    if($(this).val() == 'select_time'){
        $('input[name="send_date"]').show();
    }else{
        $('input[name="send_date"]').hide();
    }
});*/
$('input[name="send_now"]').live('click', function(){
    if($(this).is(':checked')){
        $('input[name="send_date"]').hide();
    }else{
        $('input[name="send_date"]').show();
    }
});
//toogle custom messages for different message types
$('#custom_message_email').live('click', function(){
    if($(this).is(':checked')){
        $('#message_email_holder').hide();
    }else{
        $('#message_email_holder').show();
    }
});
$('#custom_message_im').live('click', function(){
    if($(this).is(':checked')){
        $('#message_im_holder').hide();
    }else{
        $('#message_im_holder').show();
    }
});
$('#custom_message_sms').live('click', function(){
    if($(this).is(':checked')){
        $('#message_sms_holder').hide();
    }else{
        $('#message_sms_holder').show();
    }
});

function copyMainMEssage(type){
    var message = $('#message').val();
    switch (type) {
    case 'sms':
        if(message.length > max_sms_size){
            message = message.slice(0, 160);
        }
        $('#message_sms').val(message);
        break;
    case 'email':
        $('#message_email').val(message);
        break;
    case 'im':
        if(message.length > max_im_size){
            message = message.slice(0, 600);
        }
        $('#message_im').val(message);
        break;
    default:
        break;
}

}
//toogle recipients selection for message
$('.msg_user_select').live('click', function(){
    var group_id = $('select[id="group"]').val();
    if($('.msg_user_select:checked').attr('id') == 'users_select-1'){
        showUsersListPopup(group_id, '-1', setUsers, unsetUsers);
    }else if($('.msg_user_select:checked').attr('id') == 'users_select-2'){
        showUsersListPopup(group_id, 0, setUsers, unsetUsers);
    }else{
        setUsers(0);
    }
});

$('.msg_user_select').live('change', function(){
    if(typeof(arrUsers) !== 'undefined'){
        arrUsers = [];
    }
    if($('.msg_user_select:checked').attr('id') == 'users_select-1'){
        setUsers(-1);
    }else if($('.msg_user_select:checked').attr('id') == 'users_select-2'){
        setUsers('');
    }else{
        setUsers(0);
    }
})

//save user ids
function setUsers(data){
    $('.msg_user_select').parent().children('span.usr_count').html('');
    $('input[name="users"]').val(data);
    if(typeof(arrUsers) !== 'undefined' && arrUsers.length > 0){
        $('.msg_user_select').parent().children('span.usr_count').html('');
        $('.msg_user_select:checked').parent().children('span.usr_count').html('('+arrUsers.length+')');
    }
}
//clear saved data
function unsetUsers(){
    $('input[name="users"]').val('');
    $('.msg_user_select').parent().children('span.usr_count').html('');
}

//******************************** USER selection POPUP function *************************
//calls popup window with users list of the specified group
function showUsersListPopup(group_id, mode, callback, cancel_callback){
    var width_popup = '650px';
    var ok_clicked = 0;
    if (typeof(popup_usr)=='undefined') 
        var popup_usr = new popUp();
    popup_usr.load('/user/message/recipientselect/group/'+group_id+'/type/'+mode, {
        width: width_popup,
        title: 'Select group members',
        onclose:function(){
            popup_usr.clearMe();
            if(!ok_clicked){
                if(typeof(arrUsers) !== 'undefined'){
                    arrUsers = [];
                }
                cancel_callback();
            }
        },
        buttons:[
        {
            value:'Ok',
            clickFunction:function(){
                data = $('#user_popup_selected_ids').val();
                ok_clicked = 1;
                callback(data);
                popup_usr.hide();
                popup_usr.clearMe();
            }
        },
        {
            value:'Cancel',
            clickFunction:function(){
                popup_usr.hide();
                popup_usr.clearMe();
                cancel_callback();
            }
        }
        ]
    });
    return false;
}
//******************************** end of USER selection POPUP function *************************
//******************************** VOICE message preview *********************************
$('#voice_preview_link').live('click', function(){
    if (typeof(popup_preview)=='undefined') 
        var popup_preview = new popUp();
    popup_preview.load('/user/message/voicepreview', {
        type: 'POST',
        params: {message: $('#message').val(), subject: $('#subject').val()},
        width: '580px',
        title: 'Preview Voice Message',
        onclose:function(){
            popup_preview.clearMe();
        },
        buttons:[
        {
            value:'Close',
            clickFunction:function(){
                popup_preview.hide();
                popup_preview.clearMe();
            }
        }
        ]
    });
});
//**************************** end of code for send message form ******************************
//*********************************************************************************************
//**************************** Messages list code *********************************************
var messagelist_start = 10;
$(function(){
    $('#pager_messages').live('click', function(){
        showWaitingDiv();
        $.post('/fb/messages/getmessages',{'start':messagelist_start},function(data){
            $('#pager_messages').replaceWith(data);
            $('#pager_messages').show();
            messagelist_start += 10;
            hideWaitingDiv();
        });
    });
});
//*********************************************************************************************
    //indicates loading of ajax content
    function showWaitingDiv(){
        if($('#loading_div').length == 0){
            $('body').append('<div id="loading_div" style="display:none"></div>');
        }
        //get window dimensions
        var wrapper_width =  $(window).width();
        var wrapper_height =  $(window).height();
        //create div
        $('#loading_div').html('<img src="' + 'data:image/gif;base64,R0lGODlhQAAQAJkCAJ6ens3Nzf///AAAACH5BAUKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAQAAQAKAAAAD///wCMYSPqcvtD6OctNqLs16h+w8G2wiEpkdu55lqq9lmbxhjM1hf95dbO9oLCofEovG4KQAAIfkEBQoAAgAsBAAEACQACACh/v//zc3NAAAAAAAAAiOMjxnCAg+jBKqe5qZ+1uK9ddUHTqJCltGZpCrHXs27xob7FgAh+QQFCgADACwEAAQAOAAIAKGenp7+///Nzc0AAAACOoSPCcMjD6MUbYSLsw6qnzqFULWVmOeBYkiaJdqpq9S6GqzI89jYG57Q7Sg9XwaIEO5qRg7SoJwxjQUAIfkEBQoAAgAsGAAEACQACAChnp6ezc3NAAAAAAAAAiOEjwnCEg+jDKqe5qZ+1uK9ddUHTqJCltGZpCrHXs27xob7FgAh+QQJHgAAACwAAAAAQAAQAKAAAACenp4CMISPqcvtD6OctNqLs948+A+GAdeJpkdu55lqq9lmrxhjc1hfN5hb+9cLCofEolFTAAA7' +'"/>');
        $('#loading_div').css({'display': '',
                                'z-index': 555,
                                'position':'fixed',
                                'left' : wrapper_width/2,
                                'top' : wrapper_height/2,
                                'width':'160px',
                                'height':'40px',
                                'background-color':'#000',
                                'opacity':'0.5',
                                'textAlign': 'center',
                                'padding-top': '20px',
                                'border-radius': '5px',
                                'box-shadow':'0 0 10px #fff'});
    }
    //hides loading/waiting div
    function hideWaitingDiv(){
        if($('#loading_div').length){
            $('#loading_div').hide();
        }
    }
//-------------MoxMe! General functions----------------------------------------//
function showValidationAlert(text) {
    if (typeof(popup_alert)=='undefined') var popup_alert = new popUp();
    
    var inner_text = '<div class="popup_errors_content">You have errors in some values:<br/>'+text+'</div>';
    
    popup_alert.containerStyle = {
        display: 'none',
        zIndex:'4',
        top:'0px',
        left: '0px',
        position:'fixed',
        margin: '0px',
        boxShadow:'0 0 1px #fff',
        borderRadius:'8px',
        opacity: 1,
        backgroundColor:'#fff',
        overflow: 'hidden',
        border: '10px solid rgba(82, 82, 82, 0.7)'        
    };
    popup_alert.load(inner_text, {
            postClear: true,
            title: "Errors!",
            buttons:[
            {
                value:'Ok',
                clickFunction:function(){
                    popup_alert.hide();
                }
            }]
        }
    );
}

function validatorInvalidHandler(form, validator) {
    var errors = validator.errorMap;
    if (!errors) {
        return false;
    }
    var label = '';
    var text = '<ul>';
    $.each(errors, function(a, b) { 
        label = $( "label[for='"+a+"']", $(form.target)).html(); 
        if (label.charAt(label.length-1) == ':') {
            label = label.slice(0, label.length-1);
        }
        text += "<li>" + label + " - " + b + "</li>";
    });
    text += '</ul>';
    showValidationAlert(text);
}

//-------------jQuery extensions-----------------------------------------------//
(function($)
{
	$.fn.blink = function(options)
	{
		var defaults = {delay:500, count:-1, blink_style: 'visibility'};
		var options = $.extend(defaults, options);
        var obj = $(this);
        		
		return this.each(function()
		{
			var iBlink = setInterval(function()
			{
				if (typeof(obj.lighted) == 'undefined' || obj.lighted == false){
				    blinkin();
                }else{
                    blinkout();
                }

                if ( options.count == 0) {
            		clearInterval(iBlink);
                    blinkout();
            	} 
                
			}, options.delay);
		});
        
        function blinkin() {
            if (options.blink_style == 'visibility' ) {
                $(obj).css('visibility','hidden');
			    
            } else if ( options.blink_style == 'color' ) {
                $(obj).css({backgroundColor:'rgba(10, 70, 200, 0.2)'});
            }
            obj.lighted = true;
            options.count--;
        }
        function blinkout() {
            if (options.blink_style == 'visibility' ) {
			    $(obj).css('visibility','visible');
            } else if ( options.blink_style == 'color' ) {
                $(obj).css({backgroundColor:'rgba(255, 255, 255, 1)'});
        	}
            obj.lighted = false;
        }
        
	}
}(jQuery))

//-------------MoxMe API--------------------------------------------------------//
function moxmeApiRequest(moxmedata) {
    $.ajax({
        url: "/index/moxmeapi",
        data: {
            _module : moxmedata.module,
            _action : moxmedata.action,
            _params: moxmedata.params,
            _pr: moxmedata.pr
        },
		dataType: "xml",
		success: function(response){
            if ( typeof moxmedata.success == 'function' )
                moxmedata.success.call(null, response);
		},
        error: function(jqXHR, textStatus, errorThrown) {
            
        }
	});
}

//-------------Live Video-------------------------------------------------------//

var stream_id = 0;
var _streamCheckTimer = null;

function startCheckStream(sid) {
    stream_id = sid;
	checkStream();
	_streamCheckTimer = setInterval('checkStream()', 30000);
}

function stopCheckStream() {
    clearInterval(_streamCheckTimer);
}

function checkStream() {
    moxmeApiRequest({
        module: "video",
        action: "streaminfo",
        params: {stream: stream_id},
        success: function(data){
			if ( $('extend_time', data).text() == "1" ) {
				$('#div-extend-time').show();
				$('#div-extend-time').blink({delay:100, count:5, blink_style: 'color'});
			} else {
				$('#div-extend-time').hide();
			}
		}
    });
}

function extendTime() {
    moxmeApiRequest({
        module: "video",
        action: "streamcontrol",
        params: {stream: stream_id, action: 'timeextend'},
        success: function(data){
			checkStream();
		}
    });
}

function startLoggingStream(stream_id, period){
    startlogstream(stream_id);
    window._streamLogTimer = setInterval('endlogstream()', period);
}

function startlogstream(stream_id) {
    $.ajax({
        url: "/fb/livevideos/videologstart",
        datatype: 'json',
        type: 'POST',
        data: {stream_id:stream_id},
        success: function(resText) {
            result = $.parseJSON(resText);
            if (result.log_id != undefined) {
                window.log_id = result.log_id;
                //console.log(_streamLogTimer);
            }
        }
    });
}

function endlogstream() {
    $.ajax({
        url: "/fb/livevideos/videologend",
        datatype: 'json',
        type: 'POST',
        data: {log_id:window.log_id},
        success: function(resText) {
            //console.log(resText);
        }
    });
}

function endLoggingStream() {
    clearInterval(window._streamLogTimer);
    endlogstream();
}
