﻿function nuc_textCounter(field, countfield, maxlimit)
 {
if (field.value.length > maxlimit) // if too long...trim it!
field.value = field.value.substring(0, maxlimit);
// otherwise, update 'characters left' counter
else 
countfield.value = maxlimit - field.value.length;
}

function nuc_validate(theInput, entry, mode){
var deleteChar=true;
var newValue="";
var validNum='0123456789';   // legal chars
var validUCLetters='ABCDEFGHIJKLMNOPQRSTUVWXYZ';   // legal chars
var validLCLetters='abcdefghijklmnopqrstuvwxyz';   // legal chars
var validSpace=" ";

if(mode=="number"){
var validChar=validNum + validSpace;   // legal chars
var msg="Invalid character - numbers only";
var correctCase=false;
}

if(mode=="alphaNum"){
var validChar=validNum + validLCLetters + validUCLetters + validSpace;
var msg="Invalid character - numbers and upper or lower case letters only";
var correctCase=false;
}

if(mode=="alphaNum_lc"){
var validChar=validNum + validLCLetters + validSpace;
var msg="Invalid character - numbers and lower case letters only";
var correctCase="lower";
}

if(mode=="alphaNum_uc"){
var validChar=validNum + validUCLetters + validSpace;
var msg="Invalid character - numbers and upper case letters only";
var correctCase="upper";
}

var strlen=entry.length;       // test string length

if(strlen<1){alert('Enter Something!');return false;}
//entry=entry.toUpperCase(); // case insensitive
// Now scan for illegal characters
for(idx=0;idx<strlen;idx++){
 if(validChar.indexOf(entry.charAt(idx))<0){

   if(correctCase){
   if(correctCase=="upper"  && validLCLetters.indexOf(entry.charAt(idx)) >0){
   newValue= newValue + entry.charAt(idx);
   newValue=newValue.toUpperCase();
   deleteChar=false;
    }
   if(correctCase=="lower"  && validUCLetters.indexOf(entry.charAt(idx)) >0){
    newValue= newValue + entry.charAt(idx);
   newValue=newValue.toLowerCase();
   deleteChar=false;
   }
}
if(deleteChar){
   alert(msg);
}   
   document.getElementById(theInput).value=newValue;
   //return false;
   }
if(deleteChar){
  newValue= newValue + entry.charAt(idx);
   }
  } // end scanning
//alert('ok!');
return true;
}



function submit_on_change(theform){
document.getElementById(theform).submit();
}


function submitform(pressbutton){
	document.adminForm.func.value=pressbutton;
	try {
		document.adminForm.onsubmit();
		}
	catch(e){}
	document.adminForm.submit();
}



function submitform_dir(pressbutton){
	document.adminForm.directory.value=pressbutton;
	try {
		document.adminForm.onsubmit();
		}
	catch(e){}
	document.adminForm.submit();
}

function checkBox(id){

var element=document.getElementById(id);

element.checked=true;

//document.adminForm.checked;
}

//public form validations
function validate_form(thisform,jsValidate)
{
var fieldId;
var valArray=new Array();
valArray=jsValidate.split(',');
for(var i=0;i<valArray.length;i++)
  {
   fieldId=valArray[i];
   apos=fieldId.indexOf("!");
   if(apos > 0){
   fieldId=fieldId.substr(0,apos);
   }
  //    alert(fieldId);
 var input=document.getElementById(fieldId);

  if (validate_required(input,input.title+" must be filled out!")==false)
  {input.focus();return false;}
 
  if (apos>0) 
  {
  if(fieldId=="email"){
   if (validate_email(input,"The email address is invalid!")==false)
   {input.focus();return false;}
  }
  if(fieldId=="postcode"){
   if (validate_postcode(input,"The postcode is invalid!")==false)
   {input.focus();return false;}
  }  
  
 }
}  
}


function validate_required(input,alerttxt)
{
if (input.value==null||input.value=="")
{alert(alerttxt);return false}
else {return true}
}

function validate_email(field,alerttxt)
{
apos=field.value.indexOf("@")
dotpos=field.value.lastIndexOf(".")
if (apos<1||dotpos-apos<2) 
  {alert(alerttxt);return false}
else {return true}
}


function validate_postcode(field,alerttxt){ //check postcode format is valid
 test = field.value; size = test.length
 test = test.toUpperCase(); //Change to uppercase
 while (test.slice(0,1) == " ") //Strip leading spaces
  {test = test.substr(1,size-1);size = test.length
  }
 while(test.slice(size-1,size)== " ") //Strip trailing spaces
  {test = test.substr(0,size-1);size = test.length
  }
 field.value = test; //write back to form field
 if (size < 6 || size > 8){ //Code length rule
  alert(test + " is not a valid postcode - wrong length");
 field.focus();
  return false;
  }
 if (!(isNaN(test.charAt(0)))){ //leftmost character must be alpha character rule
   alert(test + " is not a valid postcode - cannot start with a number");
 field.focus();
   return false;
  }
 if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
   alert(test + " is not a valid postcode - alpha character in wrong position");
   field.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
   alert(test + " is not a valid postcode - number in wrong position");
  field.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
   alert(test + " is not a valid postcode - number in wrong position");
 field.focus();
   return false;
  }
 if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
   alert(test + " is not a valid postcode - no space or space in wrong position");
  field.focus();
   return false;
   }
 count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
 if (count1 != count2){//only one space rule
   alert(test + " is not a valid postcode - only one space allowed");
  field.focus();
   return false;
  }
//alert("Postcode Format OK");
return true;
}

//onclick="postit()
//http://javascript.internet.com/forms/uk-postcode-validation.html


function printpage() {
window.print();  
}


//http://www.alistapart.com/articles/imagegallery
/*
function showPic (pic, caption) {


 if (document.getElementById) {
  document.getElementById('placeholder') .src = pic;
  if (caption) {
   document.getElementById('desc') .childNodes[0].nodeValue = caption;
  }

  if (!caption) {
  {
   document.getElementById('desc') .childNodes[0].nodeValue = null;
  }
 
  if (summary) {
   document.getElementById('summ') .childNodes[0].nodeValue = summary;
  } 
   if (!summary)
  {
   document.getElementById('summ') .childNodes[0].nodeValue =null;
  }

  return false;
 } 
 
 else {
 return true;
 }
}
*/

//image functions

//picture gallery - public
function showPic (pic, caption,summary) {
 if (document.getElementById) {
  document.getElementById('placeholder') .src = pic;
  if (caption) {
   document.getElementById('desc') .childNodes[0].nodeValue = caption;
  }
  
  /*
  causes failure if not caption
    if (!caption) {
   document.getElementById('desc') .childNodes[0].nodeValue = "";
  }
*/
    if (summary !="none") {
   document.getElementById('gallery_summary') .childNodes[0].nodeValue = summary;
  }

  return false;
 } else {
  return true;
 }
}


//create thumbnails of image selection in admin selects
function selectImage(sel, container, s) {
 var selectedArray = new Array();
 var selObj = document.getElementById(sel);
 
//get array of selected values
  for (var i=0; i<selObj.options.length; i++) {
    if (selObj.options[i].selected) {
      var img="<img src=../pictures/resize.php?image="+selObj.options[i].title +"&amp;nw="+s+"&amp;nh="+s+" />";
      selectedArray[i]= img;
     }
  }
   var string=selectedArray.join("");
  document.getElementById(container) .innerHTML=string;
}

function showDropDown (o){
 if (document.getElementById) {
 if(document.getElementById(o) .style.display=='block'){
  document.getElementById(o) .style.visibility='hidden';
 document.getElementById(o) .style.display='none';

 }
 else{
 document.getElementById(o) .style.visibility='visible';
 document.getElementById(o) .style.display='block';
 }
 
 
 
  return false;
 } 
 else {
  return true;
  }

}

//password generator
function getRandomNum(lbound, ubound) {
return (Math.floor(Math.random() * (ubound - lbound)) + lbound);
}
function getRandomChar(number, lower, upper, other, extra) {
//var numberChars = "0123456789";
var numberChars = "23456789";
//var lowerChars = "abcdefghijklmnopqrstuvwxyz";
var lowerChars = "abcdefghijkmnpqrstuvwxyz";
//var upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var upperChars = "ABCDEFGHJKLMNPQRSTUVWXYZ";
//var otherChars = "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/? ";
var otherChars = "!@#%^&*-_=+?";
var charSet = extra;
if (number == true)
charSet += numberChars;
if (lower == true)
charSet += lowerChars;
if (upper == true)
charSet += upperChars;
if (other == true)
charSet += otherChars;
return charSet.charAt(getRandomNum(0, charSet.length));
}
function getPassword(length, extraChars, firstNumber, firstLower, firstUpper, firstOther,
latterNumber, latterLower, latterUpper, latterOther) {
var rc = "";
if (length > 0)
rc = rc + getRandomChar(firstNumber, firstLower, firstUpper, firstOther, extraChars);
for (var idx = 1; idx < length; ++idx) {
rc = rc + getRandomChar(latterNumber, latterLower, latterUpper, latterOther, extraChars);
}
return rc;
}

//repopulates a form using $_POST data as jscript associative array.
function rePopulate_form(formVars, form){
for (var i=0 ; i < document.forms[form].elements.length ;i++){

var formField=document.forms[form].elements[i].name;
var fieldType=document.forms[form].elements[i].type;
var fieldVal=document.forms[form].elements[i].value;

if (formVars[formField] != undefined){
   if(fieldType=="text" || fieldType=="textarea"){
   document.forms[form].elements[i].value=formVars[formField];
   }
   if(fieldType=="checkbox" || fieldType=="radio" ){
     if(formVars[formField].match(fieldVal)){
     document.forms[form].elements[i].checked=true;
     }
   } 
 
  if(fieldType.match("select")){
  selOptions=document.forms[form].elements[i].options;
   for (var c=0 ;c < document.forms[form].elements[i].options.length ;c++){
  var optionVal=document.forms[form].elements[i].options[c].value;
   if(formVars[formField].match(optionVal)){
   document.forms[form].elements[i].options[c].selected=true;
   }
   }
  }  
 } 
}
}


