/*
 * Smallbox CMS http://www.smallboxsoftware.com
 *
 * Copyright (C) 2000-2008 Smallbox Software Inc.
 * Author: Kenneth Spencer
 *
 * This file is intended only for use withing Smallbox CMS.
 * Unauthorized use is strictly prohibited.
 *
 */

function sb_textarea_max(thisId, Max, evt) {
 var codes = Array();
 codes[8] = 1;
 codes[37] = 1;
 codes[38] = 1;
 codes[39] = 1;
 codes[40] = 1;
 codes[46] = 1;

 if(codes[evt.keyCode] == 1 || thisId.value.length <= Max)
  return true;
 else
  return false;
}

function sb_phone(thisId, Event) {
 var valid = 0;
 var Key;

 if(Event.keyCode)
  Key = Event.keyCode;
 else
  Key = Event.charCode;

 var length = thisId.value.length;
 var character = String.fromCharCode(Key)

 Valid = new Array();
 Valid[37] = 1;
 Valid[38] = 1;
 Valid[39] = 1;
 Valid[40] = 1;
 Valid[41] = 1;
 Valid[8] = 1;
 Valid[9] = 1;
 Valid[46] = 1;


if(thisId.value.length == 14 && !Valid[Event.keyCode])
  thisId.value+=' ';
 if(thisId.value.length >= 15)
  return true;

 if((Key >=48 && Key <= 57) || Valid[Key]) {
  valid = 1;
  if(thisId.value.length == 0 && Key != 40) {
   thisId.value = '(';
  }
  if(thisId.value.length > 0 && thisId.value.substr(0,1)!='(') {
   thisId.value = '(' + thisId.value;
  }

  if(thisId.value.length == 3 && !Valid[Event.keyCode]) {
   thisId.value += String.fromCharCode(Key);
   thisId.value+= ') ';
   return false;
  }
  if(thisId.value.length == 4 && !thisId.value.substr(5,1)!=')' && !Valid[Event.keyCode]) {
   thisId.value+= ')';
  }
  if(thisId.value.length == 5 && !thisId.value.substr(5,1)!=' ' && !Valid[Event.keyCode]) {
   thisId.value+= ' ';
  }
 if(thisId.value.length == 8 && !Valid[Event.keyCode]) {
   thisId.value += String.fromCharCode(Key);
   thisId.value+= '-';
   return false;
  }
  if(thisId.value.length==9 && !thisId.value.match(/-$/) && !Valid[Event.keyCode])
   thisId.value+= '-';
 }
 if(valid) {
  return true;
 }
 else {
  return false;
 }
}

function sb_textarea_crop(thisId, max) {
 if(thisId.value.length > max) {
  alert("Warning: Text entered exceeds the maximum allowable length and will be shortened.");
  thisId.value = thisId.value.substr(0, max);
 }
}



function errorObj(Form, Field, Test, Message, Arg, tab) {
 this.form    = Form;
 this.field   = Field;
 this.test    = Test;
 this.message = Message;
 this.trip    = 0;
 this.arg     = Arg;
 this.tab     = tab;
 errorArray[errorArray.length] = this;
}

function match_passwords(error) {

 var field1 = document[error.form][error.field];
 var field2 = document[error.form]["re_"+error.field];

 field2["onblur"] = field1["onblur"];
 if(field1.value == '******')
  return true;
 if(field1.value == field2.value)
  return true;
 else
  return false;
}


function error_fixed() {
 if(currentError) {
  currentError.focus();
 }
}

function sb_error_close() {
 var div;
 if(div  = document.getElementById('errorBubble')) {
  div.style.display = 'none';
 }
}

function error_length(error) {
 var value = document[error.form][error.field].value;
 if(value.length == 0 || value.length >= error.arg)
  return true;
 else
  return false;
}

function error_maxlength(error) {
 var value = document[error.form][error.field].value;
 if(value.length == 0 || value.length <= error.arg)
  return true;
 else
  return false;
}

function errorFocus(Field, Form) {
 var Form  = document[Form];
 try {
  Form[Field].focus();
 }
 catch(e) {
  Form[Field][0].focus();
 }
}

function enable_errors() {
 enableErrors = true;
}

function disable_errors() {
 enableErrors = false;
}

function clear_error(thisId) {
 Form =  thisId.form.name
 Name = thisId.name;

 var flag = false;
 for(var i = 0; i < errorArray.length; i++) {
  error = errorArray[i];
  tmp_field = document.forms[error.form][error.field];
  if(tmp_field == thisId) {
   if(sb_has_error(error)) {
    flag = true;
    break;
   }
  }
 }

 if(flag == false) {
  thisId.className = thisId.className.replace(/ sb_error/g, '');
  error.trip = 0;
  if(div  = document.getElementById('errorBubble')) {
   div.style.display = 'none';
  }
 }
 else {
  thisId.className += ' sb_error';
 }
}

function sb_has_error(error) {
 if(errorArray.length == 0 || errorCheckingActivated == 0) {
  return false;
 }

 if(error) {
  var field = document.forms[error.form][error.field];
  /** Client side error checking doesn't work with checkbox or radio) */
  if(field[0] && field[0].nodeName == "INPUT" && field[0].type == "radio") {
   return false;
  }
  else if(field.nodeName == "INPUT" && field.type == "checkbox") {
   return false;
  }
  else if(sb_is_display(field) == false) {
   return false;
  }
  else {
   if(typeof(error.test) == 'function') {
    return (error.test(error) == false);
   }
   else {
    var form = document.forms[error.form];
    return (field.value.match(error.test) == null);
   }
  }
 }
}

function sb_display_error(field, error) {
 if(!error) {
  for(var i = 0; i < errorArray.length; i++) {
   tmp = errorArray[i];
   tmp_field = document.forms[tmp.form][tmp.field];
   if(tmp_field == field) {
    if(sb_has_error(tmp)) {
     error = tmp;
     break;
    }
   }
  }
 }

 if(sb_has_error(error)) {
  field.className += ' sb_error';

  currentError = field;
  firstError = 1;
  pos  = getPos(field);
  div  = document.getElementById('errorBubble');
  msg  = document.getElementById('errorBubbleMessage');
  divs = div.style;
  divs.top= pos.top + field.offsetHeight + "px";
  divs.left = pos.left +"px";
  msg.innerHTML = error.message;
  divs.display = 'block';
 }
}

function error_action(error, i, Submit) {
 var field = document.forms[error.form][error.field];

 field.className += ' sb_error';


 if(firstError == 0) {
  if(errorAlert == false) {
   alert("The form contains errors");
   errorAlert = true;
  }
  if(Submit == true) {
   field.focus();
  }
 }
}

function sb_check_errors(Form, Submit) {
 var error;
 var field;
 var fail = false;
 firstError = 0;
 if(errorArray.length == 0 || errorCheckingActivated == 0) {
  return true;
 }

 for(var i = 0; i < errorArray.length; i++) {
  error = errorArray[i];
  if(error.form != Form) {
   continue;
  }
  field = document.forms[error.form][error.field];


  if(sb_is_display(field) == false) {
   continue;
  }

  if(sb_has_error(error)) {
   fail = true;
   error.trip = 1;
   error_action(error, i, Submit);
  }
 }
 if(fail == false) {
  div  = document.getElementById('errorBubble');
  div.style.display = 'none';
  return true;
 }
}

function formEnter(evt, Func) {
 E = evt ? evt : event;
 if(E && E.keyCode==13) {
  eval(Func);
 }
}

function sb_clear_form(Name) {
 if(div  = document.getElementById('errorBubble')) {
  div.style.display = 'none';
 }
 Form = document[Name];
 for(i = 0; i < Form.elements.length; i++) {
  element = Form.elements[i];
  switch(element.tagName) {
   case "INPUT":
    switch(element.type.toLowerCase()) {
     case "text":
      element.value = null;
     break;
     case "password":
      element.value = null;
     break;
     case "file":
      element.value = null;
     break;
     case "checkbox":
      element.checked = false;
     break;
     case "radio":
     break;
    }
   break;
   case "TEXTAREA":
    element.innerHTML = null;
   break;
  }
 }
}


function sb_blank_form(Name) {
 Form = document[Name];
 for(i = 0; i < Form.elements.length; i++) {
  element = Form.elements[i];
  var type = element.type.toLowerCase();
  if(element.tagName == "INPUT")  {
   if((type == "text" || type == "password" || type == "file") && element.value != element.defaultValue) {
    return true;
   }
   else if((type == "checkbox" || type == "radio") && element.checked != element.defaultChecked) {
    return true
   }
  }
  else if(element.tagName == "TEXTAREA" && element.value != element.defaultValue) {
   return true;
  }
  else if(element.tagName == "SELECT") {
   for(var j = 0; j < element.options.length; j++) {
    var option = element.options[j];
    if(option.value && option.selected != option.defaultSelected) {
     return true;
    }
   }
  }
 }
}


function sb_set_checkbox(key, form_name, field_name, minus) {
 if(key != null)
  var img   = document.getElementById("sb_checkbox_"+field_name+"_"+key);
 else
  var img   = document.getElementById("sb_checkbox_"+field_name);
 var field = document[form_name][field_name];
 var base  = "/smallbox4/images5";

 if(img.src.match(base+"/checkbox_blank.png")) {
  img.src = base+"/checkbox_plus.png";
 }
 else if(minus && img.src.match(base+"/checkbox_plus.png")) {
  img.src = base+"/checkbox_minus.png";
 }
 else {
  img.src = base+"/checkbox_blank.png";
 }
 field.value = sb_checkbox_value(field_name);
}

function sb_checkbox_value(field_name) {
 var img;
 var key = 0;
 var array = new Array();
 var base  = "/smallbox4/images5";

 if(img = document.getElementById("sb_checkbox_"+field_name)) {
  if(img.src.match(base+"/checkbox_plus.png")) {
   return  img.alt;
  }
  else if(img.src.match(base+"/checkbox_minus.png")) {
   return "sbminus-"+img.alt;
  }
 }
 while(img = document.getElementById("sb_checkbox_"+field_name+"_"+key)) {

  if(img.src.match(base+"/checkbox_plus.png")) {
   array[array.length] = img.alt;
  }
  else if(img.src.match(base+"/checkbox_minus.png")) {
   array[array.length] = "sbminus-"+img.alt;
  }
  key++;
 }
 return array.join(":");
}


function sb_inline_focus(id, form_name, field_name) {
 var titleField = document.getElementById("inline_title_"+id);
 var field = document[form_name][field_name];
 titleField.style.display = 'none';
 field.style.display = '';
 field.focus();
}

function sb_inline_blur(id, form_name, field_name) {
 var titleField = document.getElementById("inline_title_"+id);
 var field = document[form_name][field_name];
 if(field.value == '') {
  field.style.display = 'none';
  titleField.style.display = '';
 }
}

function sb_cm_unset(name, id) {
 var li;
 if(li = document.getElementById(name+'_li_'+id)) {
  li.parentNode.removeChild(li);
 }

 var check = document.getElementById(name+"_checkboxes");
 var tags  = check.getElementsByTagName("input");
 var array = new Array();
 for(var i = 0; i < tags.length; i++) {
  tag = tags.item(i);
  if(tag.value == id) {
   tag.checked = false;
  }
  if(tag.checked == true) {
   array[array.length] = tag.value;
  }
 }

 var ul = document.getElementById(name+"_listing");
 if(array.length == 0 && ul.childNodes.length == 0) {
  var li = sb_node(ul, "li", "None Selected");
  li.className = "none_selected";
 }
 document.getElementById(name+"_hidden").value = array.join(','); 
}

function sb_cm_set(thisId, name, text) {
 if(thisId.checked == false) {
  sb_cm_unset(name, thisId.value);
  return;
 }
 else {
  var ul = document.getElementById(name+"_listing");
  if(ul.firstChild && !ul.firstChild.getElementsByTagName("img").length) {
   sb_node_delete(ul.firstChild);
  }
  var li = document.createElement("li");
  li.textContent = text;
  li.id = name+"_li_"+thisId.value;
  var img = sb_node(li, "img");
  img.src = "/smallbox4/images/delete_inline.gif";
  img.alt = img.title = "Delete";
  img.onclick = new Function("sb_cm_unset(\""+name+"\", \""+thisId.value+"\")");
  
  ul.appendChild(li);
 }

 var check = document.getElementById(name+"_checkboxes");
 var tags  = check.getElementsByTagName("input");
 var array = new Array();
 for(var i = 0; i < tags.length; i++) {
  tag = tags.item(i);
  if(tag.checked == true) {
   array[array.length] = tag.value;
  }
 }
 document.getElementById(name+"_hidden").value = array.join(','); 
}

var lock_permalink = false;
function sb_permalink_gen(force) {
 if (force == true || lock_permalink == false) {
  var field = document.edit_form.permalink;
  var text = document.edit_form.title.value;
  text = text.toLowerCase();
  text = text.replace(/[ ]+/g, '_');
  text = text.replace(/[^0-9a-z_-]/g, '');
  text = text.replace(/[__]+/g, '_');

  field.value = text;
 }
}


function sb_permalink_check(force) {
 lock_permalink = true;

 var field = document.edit_form.permalink;
 var text = field.value;
 text = text.toLowerCase();
 text = text.replace(/[ ]+/g, '_');
 text = text.replace(/[^0-9a-z_-]/g, '');
 text = text.replace(/[__]+/g, '_');
 field.value = text;
}

function sb_permalink_unlock() {
 if (confirm("Warning, changing this information could result in broken links.\n\nAre you sure you wish to proceed?")) {
  document.edit_form.permalink.style.display = '';
  document.getElementById('permalink_lock').style.display = 'none';
  document.getElementById('permalink_alternative').style.display = 'none';
  document.getElementById('permalink_generate').style.display = '';
 }
}

