///////////////////////////////////////////////
///// Core Javascript Functions          //////
///////////////////////////////////////////////

///////////////////////////////////////////////
///// Twitter Stuff                        ////
///////////////////////////////////////////////

function twitterCallbackExcludeReplies(twitters) {
  var statusHTML = [];
  for (var i=0; i<twitters.length; i++){
    if (twitters[i].text.indexOf('@') != -1) { continue; }
    var username = twitters[i].user.screen_name;
    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
      return '<a href="'+url+'">'+url+'</a>';
    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
    });
    statusHTML.push('<li><span>'+status+'</span> <a style="font-size:85%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+relative_time(twitters[i].created_at)+'</a></li>');
    break;
  }
  document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}

function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'less than a minute ago';
  } else if(delta < 120) {
    return 'about a minute ago';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*60)) {
    return 'about an hour ago';
  } else if(delta < (24*60*60)) {
    return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
    return '1 day ago';
  } else {
    return (parseInt(delta / 86400)).toString() + ' days ago';
  }
}

///////////////////////////////////////////////
///// Account Number Configuration Helpers ////
///////////////////////////////////////////////

function fwdRulesActionChange(value) {
    if (value == 'forward') {
        document.getElementById('actionValueForward').style.visibility = 'visible';
        document.getElementById('actionValueForward').style.display = 'inline';
        document.getElementById('actionValueNone').style.visibility = 'hidden';
        document.getElementById('actionValueNone').style.display = 'none';
    } else {
        document.getElementById('actionValueForward').style.visibility = 'hidden';
        document.getElementById('actionValueForward').style.display = 'none';
        document.getElementById('actionValueNone').style.visibility = 'visible';
        document.getElementById('actionValueNone').style.display = 'inline';
    }
}

///////////////////////////////////////////////
///// Voicemail & Call Recording Helpers //////
///////////////////////////////////////////////

function renameclip(clipid, clipname) {
    document.getElementById('oldname').innerHTML = clipname;
    document.renameclipfrm.clip.value = clipid;
    return true;
}

function callNotesHandler(callid, callnote) {
    document.callNotesFrm.callid.value = callid;
    document.callNotesFrm.callnote.value = callnote;
    return true;
}

function relink_preview(feature, newclipid) {
    var linkid = 'preview' + feature;
    document.getElementById(linkid).href = '/ajaxPlayClip.php?clip=' + newclipid + '&height=45&width=340';
}

/**
 *  Enabled/Disables Voicemail to Email input
 */
function toggle_emailto(togglestat, emailfield, emaildiv) {
    document.getElementById(emailfield).disabled= (togglestat) ? false : true;
    document.getElementById(emaildiv).style.visibility = (togglestat) ? 'visible' : 'hidden';
    document.getElementById(emaildiv).style.display = (togglestat) ? 'block' : 'none';
}

/**
 *  Enabled/Disables Do Not Disturb form
 */
function toggle_rtime(togglestat) {
    document.getElementById('rtimestart').disabled= (togglestat) ? false : true;
    document.getElementById('rtimeend').disabled= (togglestat) ? false : true;
    document.getElementById('rtimetz').disabled= (togglestat) ? false : true;
    document.getElementById('intlNumSelect').disabled= (togglestat) ? false : true;
    document.getElementById('intlNumInput').disabled= (togglestat) ? false : true;
    document.getElementById('rtimecheckfwd').checked= (togglestat) ? false : true;
    document.getElementById('rtimecheckdnd').checked= (togglestat) ? false : true;
}

/**
 *  Toggles Voicemail Checkboxes for Deletion
 */
function vm_toggle_checkboxes(id) {
    if (!document.getElementById){ return; }
    if (!document.getElementsByTagName){ return; }
    var setter = document.getElementsByName('toggler')[0].checked;
    var inputs = document.getElementById(id).getElementsByTagName("input");
    for(var x=0; x < inputs.length; x++) {
        if (inputs[x].type == 'checkbox'){
            inputs[x].checked = setter;
        }
    }
}

function account_toggle_checkboxes(id) {
    if (!document.getElementById){ return; }
    if (!document.getElementsByTagName){ return; }
    var setter = document.getElementsByName('toggler')[0].checked;
    var inputs = document.getElementById(id).getElementsByTagName("input");
    for(var x=0; x < inputs.length; x++) {
        if (inputs[x].type == 'checkbox'){
            inputs[x].checked = setter;
        }
    }
}

/**
 * Toggle extensions when they are part of the group.
 */
function group_toggle_checkboxes(groupid) {
    if (!document.getElementById){ return; }
    if (!document.getElementsByTagName){ return; }
    $(".group_" + groupid).attr('checked', $('#grouptoggle_' + groupid).is(':checked'));
}

/**
 * Adds selected Virtual Numbers to a group, potentially adding a new group too.
 */
function bulkgroupadd() {
    var form = document.bulkactionform;
    $("#bulkgroupid").val($("#bulkgroupaddselect").val());
    $("#bulkgroupnewname").val($("#bulkgroupaddnew").val());
    if ($("#bulkgroupnewname").val() == '' && $("#bulkgroupid") == '') {
        alert("You must select a group or enter a name for a new group.");
        return false;
    }
    var ele = document.createElement('input');
    ele.setAttribute("name", "bulkgroupadd");
    ele.setAttribute("type", "hidden");
    ele.setAttribute("value", "addtogroup");
    form.appendChild(ele);
    form.submit();
    return true;
}

