// Language translation
function lib(code) {
    var lib = libs[code];
    var i, n, search;
    
    if (lib == '') {
	return '['+code+']';
    }
    if (arguments.length == 1) {
	return lib;
    }
    for (i=1; ; i++) {
	search = new RegExp("\\{"+i+"\\}","g");
	if (lib.match(search)) {
	    lib = lib.replace(search, arguments[i]);
	    if (!isNaN(arguments[i])) {
		n = parseInt(arguments[i]);
		search = new RegExp("\\{"+i+"([\\w\\d]*)\\}","g");
		if (lib.match(search)) {
		    if (n > 1) {
			lib = lib.replace(search, '$1');
		    } else {
			lib = lib.replace(search, '');
		    }
		}
	    }
	} else {
	    break;
	}
    }
    return lib;
}

function environmentDeletionWarning() {
  var deletedEnvironments = ""
  for (i =0; i < document.editForm.length; i++) {
    fieldName = document.editForm[i].name;
    fieldValue = document.editForm[i].value;

    // looking for empty text fields
    if (fieldName.indexOf("environment_") == 0) {
      if (fieldName != "environment_" + fieldValue) {
        if (fieldValue == "") {
          deletedEnvironments += ' '+lib('js_and')+' ' + fieldName.substr(12);
	      }
      }
    }

    // looking for checked checkboxes
    if (fieldName.indexOf("deletion_ids") == 0) {
      if (document.editForm[i].checked == true) {
        fieldName = document.editForm[i+1].name; // i+1 should be the text field for this checkbox
        deletedEnvironments += ' '+lib('js_and')+' ' + fieldName.substr(12);
      }
    }
      
  }


  if (deletedEnvironments != "") {
    // remove the leading ' and '
    deletedEnvironments = deletedEnvironments.substr(lib('js_and').length+2);
	var message = lib('js_warning_del_env', deletedEnvironments);

    if (!confirm(message)) {
      return false;
    }
  }

  return true;
}

function scriptDeletionWarning() {
  var message = lib('js_sure_del_script');

  if (!confirm(message)) {
    return false;
  }
  return true;
}

function checkAddScript() {

   var f = document.addForm

   if (f.name.value == "" || f.description.value == "") {
     alert(lib('js_name_desc_req'));
     return false
   }

   if (f.category_id.selectedIndex == 0 && f.new_category_name == "") {
     return confirm(lib('js_assign_category'));
   }

   if (f.type_id.selectedIndex == 0) {
     return confirm(lib('js_assign_type'));
   }

}

function checkAccountCreate() {
    var error_msg = '';
    var f = document.createForm;
    
    if (f.name.value == "") {
	error_msg += "- Real name was empty\n";
    }

    if (f.username.value == "") {
	error_msg += "- Username was empty\n";
    }

    if (f.email.value == '') {
	error_msg += "- Email address was empty\n";
    }

    if (f.password.value == '' || (f.password.value != f.password2.value)) {
	error_msg += "- Password was not entered correctly\n";
    }

    if (error_msg != '') {
	alert("Please correct the following problems:\n" + error_msg);
	return false;
    } else {
	return true;
    }
}

function checkAccountConfirm() {
    var error_msg = '';
    var f = document.confirmForm;
    
    if (f.email.value == '') {
	error_msg += "- Email address was empty\n";
    }

    if (f.password.value == '') {
	error_msg += "- Password was empty\n";
    }

    if (error_msg != '') {
	alert("Please correct the following errors:\n" + error_msg);
	return false;
    } else {
	return true;
    }
}

function checkPreferences(formObj) {
    var error_msg = '';
    if (formObj.name.value == '') {
	error_msg += "- Name may not be empty\n";
    }
    if (formObj.username.value == '') {
        error_msg += "- Username may not be empty\n";
    }
    if (formObj.email.value == '') {
        error_msg += "- Email may not be empty\n";
    }
    if (error_msg != '') {
	alert("Please correct the following errors:\n" + error_msg);
	return false;
    } else {
	return true;
    }
}

function toggleDependencies() {
  tP("dependencyGroup","style.display","block","none")
  //tP("dependencyLink","innerHTML","Hide","Dependencies");
}



function openSpellChecker(fieldObj) {
  var speller = new spellChecker(fieldObj);
  speller.openChecker();
}

function rewrap(field) {
  var re = /\r/g;
  field.value = field.value.replace(re,'');

  re = /\n([^\n])/g;
  field.value = field.value.replace(re,"$1");

  re = /[ ]+/g;
  field.value = field.value.replace(re," ");

  return false;
}


function toggleLineNumbers(init) {
    /*

    IE has a problem displaying GeSHi-formatted code. For some reason it kicks the LIs
    inside the <pre> tag far out to the left, but when you press the Toggle line numbers
    link and call this function, the LIs will snap back into place.

    The init parameter is a way of working around this bug. In view.php, there is a 
    script block at the bottom of the page which calls this function and forces it to 
    update the style of the OL as it does when switching from invisible to visible.

    This problem (and this function) are only used on view.php. 

    */

    pre_targets = document.getElementsByTagName('pre');

    for (i=0; i < pre_targets.length; i++) {
	target = pre_targets[i];
	if (target.className != undefined &&
	    target.firstChild.nodeName == 'OL') {
	    
	    // ok, this must be a block of GeSHi markup

	    if (target.firstChild.style.listStyleType == 'none' || init == 1) {
		
		with (target.firstChild.style) {
		    listStyleType = 'decimal';
		    paddingLeft = '3em';
		}
	    } else {
		with (target.firstChild.style) {
		    listStyleType = 'none';
		    paddingLeft = 0;
		}
	    }
	}
    }

    return;
}



function toggleFormatting(targetField,state) {
    eval("targetDiv = document.getElementById('" + targetField + "-main');");
    eval("altDiv = document.getElementById('" + targetField + "-alt');");


    if (state == 'off'){
	targetDiv.style.display = 'none';
	altDiv.style.display = 'block';
    } else {
	targetDiv.style.display = 'block';
	altDiv.style.display = 'none';
    }


}


