var sms_log_page  = 1;
var sms_log_type  = 'OUT';
var sms_opened_contact_block = {};
var _open_contact = new Object();
var msgCharCount  = 0;
var msgMaxCharCount  = 160;
var _selectedTimestamp = -1;
var CalIsOpened = false;
var jsFunctionPrefix = 'sms';
var OpenEditContact_name;
var OpenEditContact_phone;

$(document).ready(function()
{
  // Open Contact
  if($('ul.ABC > li').length > 0){
    _open_contact = $('li#li_'+_first_open+' > a');
    showContact(_open_contact[0]);
  }

  smsDataHandler();

  // Show remainder tab
  if(strpos(window.location, '#remainder') > 0 && strpos(window.location, 'sender') > 0) { reloadpage('1', 'REM'); }

});


function smsDataHandler()
{
  var msgCharCount        = 0;
  var isSMSDialod         = ($('#dialog').length > 0) ? '#dialog ' : '';
  var smsContactInput     = $(isSMSDialod + "#contact_list");
  var smsContactText      = $(isSMSDialod + 'textarea#sms_text');
  var smsCharCountContent = $(isSMSDialod + '#MsgCharCount');

  if(smsContactInput.length > 0)
  {
    var isSMSDialod = ($('#dialog').length > 0) ? '#dialog ' : '';
    $(isSMSDialod+'input#contact_list').attr("autocomplete", "off");

		smsContactInput.autocomplete({
			minLength: 2,
			source: $.map(_a_contacts, function(item) {return { label: item.nick, value: item.phone }}),
			  select: function(item, v) {
					call_to(v.item.value, v.item.label); return false;
				}
		});

    smsContactInput.keypress(function (e){
      var impt_val = smsContactInput.val();
      if(e.which == 59 && impt_val.length >= 8){
        call_to(smsContactInput.val());
        smsContactInput.val("");
      }
    });
  }

  if(smsContactText.length > 0)
  {
    if(smsContactText) smsContactText.focus();
    if(smsContactInput) smsContactInput.focus();

    smsContactText.focus(function()
    {
      countSMSMsgChars(smsContactText, smsCharCountContent);
      smsContactText.keyup(function() {
        countSMSMsgChars(smsContactText, smsCharCountContent);
      });

      smsContactText.keypress(function(e) {
           var c = String.fromCharCode(e.which);
           //var allowed = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890+.&;!?#@$%=_*!?~/\\:()[]\r";
           //if (e.which != 8 && allowed.indexOf(c) < 0) return false;
           countSMSMsgChars(smsContactText, smsCharCountContent);
      });

    });
    smsCalendarDataHandler();
  }
}

function countSMSMsgChars(_input, _output)
{
  msgCharCount = _input.val().length;
  if (msgCharCount > msgMaxCharCount){
    var _input_val    = _input.val().substring(0, msgMaxCharCount);
        _input.val(_input_val);
  }
  msgCharCount = _input.val().length;
  _output.html(msgMaxCharCount - msgCharCount);
}


function reloadpage(page, log_type)
{
  sms_log_page = (log_type != sms_log_type) ? 1 : (page) ? page : sms_log_page;
  sms_log_type = (log_type) ? log_type : sms_log_type;

  $.ajax({
    type: "POST",
    url: "/sms/sender/?action=list", data: "page="+sms_log_page+"&type="+sms_log_type,
    success: function(msg){
      $("#SmsLogRezult").html(msg);
   }
  });
}

function deleteSingleSms(_obj)
{
  if (confirm("Vai tiešām vēlaties dzēst?"))
  {
    var sms_id = _obj.id;
    var params = {sms : sms_id, type : sms_log_type}
    $.postJSON("/sms/sender/?action=delete", params,
      function(json){
        if(json.STATUS == 'OK') reloadpage(sms_log_page, sms_log_type);
    });
  }
}

function deleteAllSms(_obj)
{
  if (confirm("Vai tiešām vēlaties dzēst visas?")){
    $.postJSON("/sms/sender/?action=deleteall", {type : sms_log_type},
      function(json){ reloadpage(1, sms_log_type);});}
}

function reloadSmsForm()
{
  var params  = {};
  $.postJSON("/sms/sender/?action=form", params,
    function(json){ $('#sms_form_result').html(json.HTML);});
}

function call_to(nr, name, _input_object)
{
  if(_input_object && _input_object.lenght){ alert(_input_object.val());} // Aizveram autocomplete un iztīram input lauku
  var isSMSDialod = ($('#dialog').length > 0) ? '#dialog ' : '';
  var contact_list;
  var contact_ph_id = 'pho_'+nr;
  if($('#'+contact_ph_id).lenght == 'undefined') return;
  if($(isSMSDialod + "input#contact_list")) $(isSMSDialod + "input#contact_list").val("");
  contact_list = $(isSMSDialod + '#contactBaloons').html();
  var newContactHTML  = "<div id=\""+contact_ph_id+"\" class=\"contact\">";
        newContactHTML += "<p>"+(name ? name : nr)+"<a href=\"javascript:void(0)\" title=\"dzēst!\" onclick=\"remove_call_to(this);\"></a></p>";
      newContactHTML += "</div>";
  $(isSMSDialod + '#contactBaloons').html(contact_list + newContactHTML);
}

function remove_call_to(_obj)
{
  $(_obj).parent().parent().remove();
}

var ContactEdt;
var ContactHasEdit;
var ContactHasOpened;

function newContactHTML(id, name, phone)
{
  var HTMLForm  = "<li id=\"_cont_"+id+"\" onmouseover=\"this.className='MouseOver'\" onmouseout=\"this.className=''\">";
        HTMLForm += "<a href=\"javascript:void(0)\" onclick=\"call_to('"+ escape_quote(phone)+"', '"+ escape_quote(name)+"')\">"+ escape_quote(name)+"<br />";
        HTMLForm += "<span class=\"Nr\">"+ escape_quote(phone)+"</span></a>";
        HTMLForm += "<div class=\"options\">";

          HTMLForm += "<a href=\"javascript:void(0)\" class=\"send\" title=\""+_LNG_send_sms+"\" onclick=\"call_to('"+ escape_quote(phone)+"', '"+ escape_quote(name)+"')\"></a> ";

          HTMLForm += "<a href=\"javascript:void(0)\" class=\"edit\" title=\""+_LNG_edit+"\" onclick=\"editContact('"+ escape_quote(id)+"')\"></a>";
          HTMLForm += "<a href=\"javascript:void(0)\" class=\"del\" title=\""+_LNG_delete+"\" onclick=\"deleteContact('"+ escape_quote(id)+"');\"></a>";
        HTMLForm += "</div>";
      HTMLForm += "</li>";

      HTMLForm += "<li class=\"EditContact\" style=\"display:none;\">";
        HTMLForm += "  <label>"+_LNG_name+":</label><input id=\"name_"+ escape_quote(id)+"\" value=\""+ escape_quote(name)+"\" name=\"name\" maxlength=\"\" />";
        HTMLForm += "  <label>"+_LNG_phone+":</label><input id=\"phone_"+ escape_quote(id)+"\" value=\""+ escape_quote(phone)+"\" name=\"phone\" />";
        HTMLForm += "  <input class=\"save\" type=\"submit\" value=\"\" onclick=\"saveContact('"+ escape_quote(id)+"');\" />";
	      HTMLForm += "  <a class=\"cancel\" href=\"javascript:void(0)\" onclick=\"closeEditContact();\">"+_LNG_cancel+"</a>";
      HTMLForm += "</li>";
  return HTMLForm;
}

/**
* Pievienojam kontaktu
*/
function OpenAddContactForm(phone, name)
{
  var contPhone = phone ? phone : '371';
  var contName = name ? name : '';

  var HTMLForm  = "<form action=\"javascript:void(0)\" method=\"post\" class=\"ProfileEdit\" style=\"width: auto;\" onsubmit=\"addContact\">";
        HTMLForm += "<fieldset>";
          HTMLForm += "<div id=\"contact_error\" class=\"AlertSmall\" style=\"display:none;\"></div>";
          HTMLForm += "<div class=\"row shortrow\">";
            HTMLForm += "<label><span class=\"req\">*</span> "+_LNG_name+":</label><input id=\"new_name\" value=\"\" name=\"new_name\" maxlength=\"30\" />";
          HTMLForm += "</div>";

          HTMLForm += "<div class=\"row shortrow\">";
            HTMLForm += "<label><span class=\"req\">*</span> "+_LNG_phone+":</label><input id=\"new_phone\" value=\""+contPhone+"\" name=\"new_phone\" maxlength=\"15\" />";
          HTMLForm += "</div>";
		  HTMLForm += "<div class=\"row shortrow\">";
            HTMLForm += "<span class=\"example\">Piemēram: 37112345678 vai 12345678</span>";
          HTMLForm += "</div>";
        HTMLForm += "</fieldset>";
        HTMLForm += "<div class=\"submit\"> ";
          HTMLForm += "<input class=\"add\" type=\"submit\" value=\"\" onclick=\"addContact();\" />";
        HTMLForm += "</div>";
      HTMLForm += "</form>";

  if($('#dialog')) $('#dialog').remove();
  $('#Wrap').append('<div id="dialog"">'+HTMLForm+'</div>');
  $("#dialog").dialog({
    beforeclose : function(){$('#dialog').remove();},
    title: "Pievienot jaunu kontaktu",
    modal: true,
    width: 270,
    closeOnEscape: true,
    resizable: false
  });
}

/**
* Atveram labošanu kotaktam
*/
function editContact(cont)
{
    if(ContactEdt){
      $(ContactHasOpened).hide();
      $(ContactHasEdit).show();
    }

    ContactEdt = cont;
    ContactHasEdit = $('li#_cont_'+ContactEdt);
    ContactHasOpened = $('li#_cont_'+ContactEdt).next();
    $(ContactHasOpened).show();
    $(ContactHasEdit).hide();
}

/**
* Aizveram Kontaktu labošanu
**/
function closeEditContact()
{
  $(ContactHasOpened).hide();
  $(ContactHasEdit).show();
  ContactEdt = null;
}

/**
* Pievienojam jaunu kontaktu
**/
function addContact()
{
  var params = {phone : $('#dialog input#new_phone').val(),
                name  : $('#dialog input#new_name').val()
               };
  $.postJSON("/sms/sender/?action=addcontact", params,
    function(json){
      if(json.STATUS == 'OK'){
        if($('#dialog')) $('#dialog').remove();
        if($('ul.Contacts')){
          var _cont_HTML = $('ul.Contacts').html();
          var _new_cont_HTML = newContactHTML(json.ID, params.name, params.phone);
          $('#name_'+json.ID).val(params.name);
          $('ul.Contacts').html(_new_cont_HTML + _cont_HTML);
        }
        window.location = window.location;
      }else{
        var error_msg = "";
        jQuery.each(json.MSG, function() {
            error_msg += this + "<br />";
        });
        $("#contact_error").html(error_msg);
        $("#contact_error").show();
      }
    }
  );
}

/**
* Saglabājam kontaktu
*/
function saveContact(cont_id)
{
    var params = {id    : cont_id,
                  phone : $(ContactHasOpened).children('input#phone_'+cont_id).val(),
                  nick  : $(ContactHasOpened).children('input#name_'+cont_id).val()
                 };
    $.postJSON("/sms/sender/?action=savecontact", params,
      function(json){
        if(json.STATUS == 'OK'){
          if(ContactEdt){
            var innHtml =  escape_quote($(ContactHasOpened).children('input#name_'+cont_id).val())+"<br><span class=\"Nr\">"+ escape_quote($(ContactHasOpened).children('input#phone_'+cont_id).val())+"</span>";
            $(ContactHasEdit).children('a').html(innHtml);
            closeEditContact();
            window.location = window.location;
           }
        }
      }
    );
}

/**
* Dzēšam kontaktu
*/
function deleteContact(cont_id)
{
    if (confirm("Vai tiešām vēlaties dzēst?")){
      var params = {id    : cont_id};
      $.postJSON("/sms/sender/?action=deletecontact", params,
        function(json){if(json.STATUS == 'OK') $('#_cont_'+cont_id).remove(); window.location = window.location;}
      );
    }
}

/**
* Parādam atticīgo kontaktu grubu
*/
function showContact(_obj)
{
  var _cont_HTML = "";
  var c_id = _obj.id.replace('c_', '');

  if(c_id == 'all')
  {
      sms_opened_contact_block = {};
      sms_opened_contact_block[c_id] = _u_contacts;

    if(_u_contacts){
      if($('li#li_'+ c_id).hasClass("selected") == false)
      {
        $('ul.ABC > li').removeClass("selected");
        $('li#li_'+ c_id).addClass("selected");
        delete sms_opened_contact_block[c_id];
        jQuery.each(_u_contacts, function(k){
          if(_u_contacts[k]){
            jQuery.each(_u_contacts[k], function(){
              if(this.id) _cont_HTML += newContactHTML(this.id, this.nick, this.phone);
            });
          }
        });

      }else {
        delete sms_opened_contact_block[c_id];
        $('li#li_'+ c_id).removeClass("selected");
      }
    }

  }else{

    if($('li#li_'+ c_id).hasClass("selected"))
    {
      $('li#li_'+ c_id).removeClass("selected");
       delete sms_opened_contact_block[c_id];

    }else{
      $('li#li_'+ c_id).addClass("selected");
      sms_opened_contact_block[c_id] = (_u_contacts[c_id]) ? _u_contacts[c_id] : {};

    }

    $('li#li_all').removeClass("selected");
    jQuery.each(sms_opened_contact_block, function(k){
      if(_u_contacts[k]){
        jQuery.each(_u_contacts[k], function(){
          _cont_HTML += newContactHTML(this.id, this.nick, this.phone);
        });
      }
    });

  }

  _cont_HTML += "<li class=\"options\"><input class=\"add "+_LNG_+"\" value=\"Pievienot\" type=\"submit\" onclick=\"OpenAddContactForm();\"/></li>";
  $('ul.Contacts').html(_cont_HTML);
}

function submitSendSms(_obj)
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
  var _call_to_ = $(isDialog+"input#contact_list").val() ? $(isDialog+"input#contact_list").val()+";" : "";

  if($(isDialog+"#contactBaloons div").length > 0){
    $(isDialog+"#contactBaloons div").each(function(i, val) {
      _call_to_ += val.id.replace('pho_', '') + ';';
    });
  }

  var params    = { date   : $(isDialog+'input#sms_send_date').val(),
                    hour   : $(isDialog+'select#sms_send_hour').val(),
                    min    : $(isDialog+'select#sms_send_min').val(),
                    to     : _call_to_,
                    msg    : $(isDialog+'textarea#sms_text').val(),
                    module : $(isDialog+'input#sms_module').val()
                  };

  $.postJSON(_obj.action, params, function(json)
  {
      if($('#dialog').length){
        if(json.STATUS == 'OK'){
          SuccessSMSSenderStatusText();
          resetSMSDendForm();
          setTimeout( function(){$('#dialog').remove()}, 2000);

        }else{
          var error_msg ="";
          jQuery.each(json.MSG, function(n, val) {
            error_msg += (n != "") ? n + ":<br />" :"";
            jQuery.each(val, function(){
               error_msg += "&nbsp;&nbsp;&nbsp;" + this + "<br />";
            });
          });

          $('#dialog #sent_error').html(error_msg);
          $('#dialog #sent_error').show();
          $('#dialog').dialog('option', 'position', 'center');
        }

      }else{
        if(json.STATUS == 'OK'){
          SuccessSMSSenderStatusText();
          resetSMSDendForm();
          setTimeout( function(){$('#sent_error').slideUp('slow')}, 3000);
          if(_selectedTimestamp > 0 || $(isDialog+'select#sms_send_hour').val() > 0 || $(isDialog+'select#sms_send_min').val() > 0){
            reloadpage(1, 'TMP');
          }else{
            reloadpage(1, 'OUT');
            setTimeout( function(){reloadpage(1, 'OUT');}, 5000);
          }

        }else{
          var error_msg ="";
          jQuery.each(json.MSG, function(n, val) {
             error_msg += (n != "") ? n + ":<br />" :"";
             jQuery.each(val, function(){
                error_msg += "&nbsp;&nbsp;&nbsp;" + this + "<br />";
             });
          });
          $('#sent_error').html(error_msg).show();
        }
      }
    }
  );
}

function OpenSendSmsForm(send_to, send_msg, send_datetime, module)
{
  var params  = {to     : (send_to) ? send_to : "",
                 msg    : (send_msg) ? send_msg : "",
                 date   : (send_datetime) ? send_datetime : "",
                 module : (module) ? module : ""};

  $.postJSON("/sms/sender/?action=form", params,
    function(json)
    {
      var title = (json.TYPE == 'LOGIN') ? 'Nepieciešama autorizācija' : (params.module == "") ? 'SMS Nosūtīšana' : 'Pievienot atgādinājuma SMS';

      if($('#dialog')) $('#dialog').remove();
      $('#Wrap').append('<div id="dialog"">'+json.HTML+'</div>');
      $("#dialog").dialog({
        beforeclose : function(){
          $('#dialog').remove();},
        title: title,
        modal: true,
        width: 500,
        closeOnEscape: true,
        resizable: false
      });

      if(json.TYPE != 'LOGIN'){
        $('#dialog #contact_list').attr('tabindex', 10);
        $('#dialog textarea#sms_text').attr('tabindex', 20);
        $(':input send').attr('tabindex', 30);
        smsDataHandler();
        countSMSMsgChars($('#dialog textarea#sms_text'), $('#dialog #MsgCharCount'));
      }
    }
  );
}

function sendToDay(_obj){
    var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
        $(_obj).parent().addClass("selected");
        $(isDialog+'#ChooseDate').parent().removeClass("selected");
        $(isDialog+'a#ChooseDate').html(_LNG_chose_date);
        hideDataCalendar();
        ConvSMSTStamp(false, true);
        CalIsOpened = false;
        return false;
}

function sendOthDay(_obj, getIncDate)
{
    var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
    if( CalIsOpened == false){
      smsLoadCalendar(_selectedTimestamp);
      showDataCalendar();
      $(isDialog+'li#today').removeClass("selected");
      $(_obj).parent().addClass("selected");
      CalIsOpened = true;
    }else{
      $(isDialog+'li#today').addClass("selected");
      hideDataCalendar();

      if(_selectedTimestamp == -1){
        $(isDialog+'li#today').addClass("selected");
        $(_obj).parent().removeClass("selected");
      }else{
        $(isDialog+'li#today').removeClass("selected");
        $(_obj).parent().addClass("selected");
      }
      CalIsOpened = false;
    }
    return false;
}

function resetSMSDendForm()
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
      $(isDialog+'input#contact_list').val("");
      $(isDialog+'textarea#sms_text').val("");
      $(isDialog+'div#contactBaloons').html("");
}

function SuccessSMSSenderStatusText()
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
  var sMSG;
  if(_selectedTimestamp > 0 || $(isDialog+'select#sms_send_hour').val() > 0 || $(isDialog+'select#sms_send_min').val() > 0){
      sMSG = _LNG_sm_save;
  }else{
      sMSG = _LNG_sms_send;
  }
  //-----------------------------------
  $('#sent_error').html(sMSG).show();
  return  sMSG;
}

function showRemainder()
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
      $(isDialog + "#sms_remainder").slideDown("slow");
      $(isDialog + "#ChooseDate").parent().removeClass("selected");
      $(isDialog + "li#today").addClass("selected");
      $(isDialog + "div.send input").removeClass("sendnow");
      $(isDialog + "div.send input").addClass("save");
      $('a.send_later').hide();
}

function closeRemainder()
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
      _selectedTimestamp = -1;
      $(isDialog+'select#sms_send_hour').val(-1);
      $(isDialog+'select#sms_send_min').val(-1);
      $(isDialog+'input#sms_send_date').val(-1);
      $(isDialog + "#sms_remainder").slideUp("slow");
      $(isDialog + "div.send input").removeClass("save");
      $(isDialog + "div.send input").addClass("sendnow");
      $('a.send_later').show();
      ConvSMSTStamp(false, true);
}

/* *** SMS Calendar *** */

function smsCalendarDataHandler(){

  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
  $(isDialog + 'li#today a').click( function(){sendToDay(this)});
  $(isDialog+'#ChooseDate').click( function(){sendOthDay(this)});

}

function showDataCalendar()
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
  $(isDialog+'.Cal').css('display','block');
  $(isDialog+'.Cal').hide();
  $(isDialog+'.Cal').fadeIn("fast");
  CalIsOpened = true;
}

function hideDataCalendar()
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
  $(isDialog+'.Cal').fadeOut("fast");
  $(isDialog+'.Cal').hide();
  CalIsOpened = false;
}

function smsLoadCalendar(timestamp)
{
  $.get("/calendar/?stamp="+timestamp, function(data){
    $((($('#dialog').length > 0) ? '#dialog ' : '')+'#CalendarContent').html(data);
  });
  return false;
}

function smsSetCalDate(elem, timestamp)
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';
  $(isDialog+'.Cal table tr td').removeClass("selected");
  elem.parentNode.className = "selected";
  ConvSMSTStamp(timestamp, true);
  hideDataCalendar();
  return false;
}

function ConvSMSTStamp(tstamp, toInput)
{
  var isDialog = ($('#dialog').length > 0) ? '#dialog ' : '';

  // Ja ir padots TIMESTAMP
  if(tstamp && tstamp > 0){
    _selectedTimestamp  = tstamp;

    var _selDate = new Date(tstamp * 1000);
    var _varGetSelDay   = _selDate.getDate();
    var _varSelDate     = (_varGetSelDay < 10) ? '0' + _varGetSelDay : _varGetSelDay;
    var _varGetSelMonth = _selDate.getMonth() + 1;
    var _varSelMonth    = (_varGetSelMonth < 10) ? '0' + _varGetSelMonth : _varGetSelMonth;
    var _varSelYear     = _selDate.getFullYear();
    var date = new Object();
    date  = {day   : _varSelDate,
             month : _varSelMonth,
             year  : _varSelYear
             }
    if(toInput != false){
      $(isDialog+'a#ChooseDate').html(date.day+'.'+date.month+'.'+date.year);
      $(isDialog+':input#sms_send_date').val(date.year+'-'+date.month+'-'+date.day /*+' '+date.hour+':'+date.min+':'+date.sec*/);
    }

  // Noresetojam Datumu
  }else{
    _selectedTimestamp  = -1;
    var date = new Object();
    if(toInput != false){
      $(isDialog+'a#ChooseDate').html(_LNG_chose_date);
      $(isDialog+':input#sms_send_date').val(-1);
    }
  }
  return date;
}

/* *** END OF --- SMS Calendar *** */