File "permissions.js"

Full Path: /home/analogde/www/Code03/inc/permissions.js
File size: 3.01 KB
MIME-type: text/plain
Charset: utf-8

function get_chmod_value ( permissions ) {
 var chmod = 0;
 if (permissions.substr (1, 1) != '-') {
  chmod += 400;
 }
 if (permissions.substr (2, 1) != '-') {
  chmod += 200;
 }
 if (permissions.substr (3, 1) != '-') {
  chmod += 100;
 }
 if (permissions.substr (4, 1) != '-') {
  chmod += 40;
 }
 if (permissions.substr (5, 1) != '-') {
  chmod += 20;
 }
 if (permissions.substr (6, 1) != '-') {
  chmod += 10;
 }
 if (permissions.substr (7, 1) != '-') {
  chmod += 4;
 }
 if (permissions.substr (8, 1) != '-') {
  chmod += 2;
 }
 if (permissions.substr (9, 1) != '-') {
  chmod += 1;
 }
 if (chmod < 100 && chmod >= 10) {
  chmod = '0' + chmod;
 }
 if (chmod < 10) {
  chmod = '00' + chmod;
 }
 return chmod;
}

function get_permissions_string ( first_letter, chmod_value ) {
 var permissions = first_letter;
 var temp_string = '';

 if (chmod_value >= 100) {
  temp_string += chmod_value;
 }
 if (chmod_value < 100 && chmod_value >= 10) {
  temp_string = '0' + chmod_value;
 }
 if (chmod_value < 10) {
  temp_string = '00' + chmod_value;
 }

 var own = temp_string.substr (0, 1);
 var grp = temp_string.substr (1, 1);
 var pub = temp_string.substr (2, 1);

 permissions += own & 4 ? 'r' : '-';
 permissions += own & 2 ? 'w' : '-';
 permissions += own & 1 ? 'x' : '-';
 permissions += grp & 4 ? 'r' : '-';
 permissions += grp & 2 ? 'w' : '-';
 permissions += grp & 1 ? 'x' : '-';
 permissions += pub & 4 ? 'r' : '-';
 permissions += pub & 2 ? 'w' : '-';
 permissions += pub & 1 ? 'x' : '-';

 return permissions;
}

function set_vars ( permissions ) {
 octal = document.getElementById ('octal');
 octal.value = get_chmod_value (new String (permissions));

 own_r = document.getElementById ('own_r');
 own_w = document.getElementById ('own_w');
 own_x = document.getElementById ('own_x');
 grp_r = document.getElementById ('grp_r');
 grp_w = document.getElementById ('grp_w');
 grp_x = document.getElementById ('grp_x');
 pub_r = document.getElementById ('pub_r');
 pub_w = document.getElementById ('pub_w');
 pub_x = document.getElementById ('pub_x');
}

function update_checkboxes ( ) {
 octal.value  = octal.value >= 0 && octal.value <= 777 ? octal.value : 0;
 owner_props  = octal.value.substr (0, 1);
 group_props  = octal.value.substr (1, 1);
 public_props = octal.value.substr (2, 1);

 own_r.checked = owner_props  & 4 ? true : false;
 own_w.checked = owner_props  & 2 ? true : false;
 own_x.checked = owner_props  & 1 ? true : false;
 grp_r.checked = group_props  & 4 ? true : false;
 grp_w.checked = group_props  & 2 ? true : false;
 grp_x.checked = group_props  & 1 ? true : false;
 pub_r.checked = public_props & 4 ? true : false;
 pub_w.checked = public_props & 2 ? true : false;
 pub_x.checked = public_props & 1 ? true : false;
}

function update_octal ( ) {
 var i = 0;
 i += own_r.checked ? 400 : 0;
 i += own_w.checked ? 200 : 0;
 i += own_x.checked ? 100 : 0;
 i += grp_r.checked ? 40  : 0;
 i += grp_w.checked ? 20  : 0;
 i += grp_x.checked ? 10  : 0;
 i += pub_r.checked ? 4   : 0;
 i += pub_w.checked ? 2   : 0;
 i += pub_x.checked ? 1   : 0;
 octal.value = i;
}