// find an Object
timeout =0;
function displayImage(URL, NAME) {
	var WIDTH = 600;
	var HEIGHT = 400;
	windowprops = "location=no,toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes,left=50,top=50,width=" + (WIDTH+50) + ",height=" + (HEIGHT+50);
	text = "<html><head><title>Preview of "+NAME+" </title></head><body bgcolor='white'";
	if (timeout != 0) text +=" onLoad=\"setTimeout('window.close()', " + timeout*1000 + ");\"";
	text += "><center><img src='" + URL + "' />";
	if (timeout != 0) text +="<br /><font face='arial, helvetica' size='-1'>Preview closes after " + timeout + " seconds.</font>";
	text += "</center></body></html>";
	preview = window.open("", "preview", windowprops);
	preview.document.open();
	preview.document.write(text);
	preview.document.close();
}

function checkPwordReqd(theElement) {
	if(theElement.checked) {
		if(document.getElementById('pword_warning1')) { document.getElementById('pword_warning1').innerHTML = '**'; }
		if(document.getElementById('pword_warning2')) { document.getElementById('pword_warning2').innerHTML = '*'; }
		if(document.getElementById('pword_warning3')) { document.getElementById('pword_warning3').innerHTML = '*'; }
	} else {
		if(document.getElementById('pword_warning1')) { document.getElementById('pword_warning1').innerHTML = '&nbsp;'; }
		if(document.getElementById('pword_warning2')) { document.getElementById('pword_warning2').innerHTML = '&nbsp;'; }
		if(document.getElementById('pword_warning3')) { document.getElementById('pword_warning3').innerHTML = '&nbsp;'; }
	}
}

function findObj(objname) {
	var Obj = null;
	if (document.getElementById) { Obj = document.getElementById(objname); }
	else if (document.all) { Obj = document.all[objname]; }
	return Obj;
}

function passGenerator(pwdLen, id) {
	var chars  = new Array();
	var passwd = '';
// Generate the password to the length required

	for(i=48;i<=57;i++) { chars.push(String.fromCharCode(i)); }
	for(i=65;i<=90;i++) { chars.push(String.fromCharCode(i)); }
	for(i=97;i<=122;i++) { chars.push(String.fromCharCode(i)); }
	var j = chars.length - 1;

	for(i=0;i<pwdLen;i++) {
		var temp=chars[Math.round(Math.random()*j)];
		passwd += temp;
	}
	var el = findObj(id);
	el.value = passwd;
}

/**
 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s) {
	if(isNaN(s)) return false;
	else return true;
}

function stripCharsInBag(s, bag) {
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++) {
		// Check that current character is not a whitespace.
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

function checkInternationalPhone(strPhone){
	s = stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function checkPhoneNo(id){
	var Phone = document.getElementById(id);

	if (checkInternationalPhone(Phone.value)==false){
		alert("Please Enter a Valid Phone Number")
		Phone.value=""
		Phone.focus()
		return false
	}
	return true
}

function isNumber(id) {
	var identity = document.getElementById(id);
	var s = identity.value;

	if(isNaN(s)) {
		alert("Please Enter a Valid Number");
		identity.value="";
		return false;
	}
	else return true;
}

function check_strongPassword(id){
	var testresults;
	var identity = document.getElementById(id);
	var str = identity.value;

	var filter=/(?=^.{6,10}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+}{":;'?/>.<,])(?!.*\s).*$/;

	if (filter.test(str))
		testresults=true;
	else{
		alert("Please input a valid strong password! It must be between 6 & 10 characters in length and contain at least:-\n\n1 uppercase character\n1 lowercase character\n1 digit\n1 special character\n\neg. N1tW_o@t");
		identity.value = "";
		identity.focus();
		testresults=false;
	}
	return (testresults)
}

function showInfo(engine) {
	var engineInfo;
	switch (engine) {
		case "JavaScript":
			engineInfo = ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion() + "." + ScriptEngineBuildVersion();
			break;
		case "VBScript":
			engineInfo = getVBSEngineInfo();
			break;
		case "PerlScript":
			if ( SelectedPSSupport(frm) ) { //frm.ClientTester_PS_SUPPORT.value == "true") {
				engineInfo = SelectedPSVersion(frm) // frm.ClientTester_PS_VERSION.value;
			} else {
				//engineInfo = "The PerlScript ActiveX engine is not available on your machine. \nYou can download ActivePerl (includes PerlScript) from ActiveState.com";
				engineInfo = "To use this feature you'll need to download and run this script directly from your machine.\n"
				engineInfo += "You will also require ActivePerl, which you can download from ActiveState.com"
				alert(engineInfo);
				return;
			}
	}

	alert(engine + " version " + engineInfo);
}

function jsMakehash(pw,mult) {
	var alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ_-@. ";

  pass=pw.toUpperCase();
  hash=0;
  for (i=0;i<pass.length;i++) {
   letter=pass.substring(i,i+1);
   c=alpha.indexOf(letter,0)+1;
   hash=hash*mult+c;
  }
  return(hash);
}

function userCheck(id) {
  identity=document.getElementById(id);
  a = jsMakehash(identity.value,3);
  if(!users[a]) { return true; }
  else { alert("This user email has already been used by another account"); identity.value=""; return false; }
}

//Advanced Email Check credit-
//By JavaScript Kit (http://www.javascriptkit.com)
//Over 200+ free scripts here!

function check_email(id){
	var testresults;
	var identity = document.getElementById(id);
	var str = identity.value;

	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

	if (filter.test(str))
		testresults=true;
	else{
		alert("Please input a valid email address!");
		identity.focus();
		testresults=false;
	}
	return (testresults)
}

function update_vat_period_end(id, targetid, selectedVal){
  var html = '';
  var pVal = '';
  var identity = '';
  var target = '';

	VatPeriodEnd_months = new Array(13);
	VatPeriodEnd_months[0]  = '';
	VatPeriodEnd_months[1]  = 'January';
	VatPeriodEnd_months[2]  = 'February';
	VatPeriodEnd_months[3]  = 'March';
	VatPeriodEnd_months[4]  = 'April';
	VatPeriodEnd_months[5]  = 'May';
	VatPeriodEnd_months[6]  = 'June';
	VatPeriodEnd_months[7]  = 'July';
	VatPeriodEnd_months[8]  = 'August';
	VatPeriodEnd_months[9]  = 'September';
	VatPeriodEnd_months[10] = 'October';
	VatPeriodEnd_months[11] = 'November';
	VatPeriodEnd_months[12] = 'December';

	VatPeriodEnd_quarters = new Array(4);
	VatPeriodEnd_quarters[0]  = '';
	VatPeriodEnd_quarters[1]  = 'Jan,Apr,Jul,Oct';
	VatPeriodEnd_quarters[2]  = 'Feb,May,Aug,Nov';
	VatPeriodEnd_quarters[3]  = 'Mar,Jun,Sep,Dec';

	identity = document.getElementById(id);
	target 	 = document.getElementById(targetid);
	pVal		 = identity.options[identity.selectedIndex].value;


	switch(pVal) {
		case '':
		case 'Month':
			//blank and disable the period end field
		  target.options.length = 1;
 	    target.options[0].value = '';
	    target.options[0].text  = '           ';
			break;

		case 'Quarter':
		  target.options.length = 4;
		  for(var i=0; i<4; i++) {
		   target.options[i].value = VatPeriodEnd_quarters[i];
		   target.options[i].text  = VatPeriodEnd_quarters[i];
		   if(selectedVal == VatPeriodEnd_quarters[i]) {
		    target.options[i].selected = true;
		   }
		  }
			break;

		case 'Year':
		  target.options.length = 13;
		  for(var i=0; i<13; i++) {
		   target.options[i].value = VatPeriodEnd_months[i];
		   target.options[i].text  = VatPeriodEnd_months[i];
		   if(selectedVal == VatPeriodEnd_months[i]) {
		    target.options[i].selected = true;
		   }
		  }
			break;
	}
}

function __updateDays (dateField, month, year) {
  var days = month != 1 ? DateSelector.defaults.months[month].days : (__isLeapYear(year) ? 29 : 28);
  dateField.options.length = days;
  for (var d = 29; d < days + 1; d++)
    dateField.options[d - 1] = new Option(d, d);
}

function DateSelector (args) {
  this.id = DateSelector.cnt;
  DateSelector.elements[DateSelector.cnt++] = this;
  if (!args)
    args = new Object();
  for (var p in DateSelector.defaults)
    this[p] = typeof args[p] != 'undefined' ? args[p] : DateSelector.defaults[p];

  this.days = this.selectedMonth != 1 ? DateSelector.defaults.months[this.selectedMonth].days : (__isLeapYear(this.selectedYear) ? 29 : 28);

	if(this.displayDate) {
		this.monthOnChange =
			'var yearField = this.form[\'' + this.yearFieldName + '\'];'
			+ 'var year = yearField.options[yearField.selectedIndex].value;'
			+ '__updateDays(this.form[\'' + this.dateFieldName
			+ '\'], this.selectedIndex, '
			+ 'year); '
			+ this.monthOnChange;

		this.yearOnChange =
			'var monthField = this.form[\'' + this.monthFieldName + '\'];'
			+ 'var month = monthField.options[monthField.selectedIndex].value;'
			+ '__updateDays(this.form[\'' + this.dateFieldName
			+ '\'], month, '
			+ 'this.options[this.selectedIndex].value); '
			+ this.yearOnChange;
  }
  this.writeHTML();
}

function DateSelector_writeHTML () {
  var html = '';
  if(this.displayDate) {
  	html += '<SELECT NAME="' + this.dateFieldName + '"';
  	html += this.dateOnChange ? ' ONCHANGE="' + this.dateOnChange + '"' : '';
  	if(this.disabled)
			html += ' disabled';
  	html += '>';
  	for (var d = 1; d <= this.days; d++) {
  	  html += '<OPTION VALUE="' + d + '"';
  	  if(this.selected)
		    html += d == this.selectedDate ? ' SELECTED' : '';
  	  html += '>' + d;
  	}
		if(!this.selected) html += '<OPTION selected></OPTION>';
  	html += '<\/SELECT>';
  }
  if(this.displayMonth) {
		html += '<SELECT NAME="' + this.monthFieldName + '"';
		html += this.monthOnChange ? ' ONCHANGE="' + this.monthOnChange + '"' : '';
		if(this.disabled)
			html += ' disabled';
		html += '>';
		for (var m = 0; m < 12; m++) {
			html += '<OPTION VALUE="' + m + '"';
			if(this.selected)
				html += m == this.selectedMonth ? ' SELECTED' : '';
			html += '>';
			html += this.format == 'short' ? DateSelector.defaults.months[m].shortName : DateSelector.defaults.months[m].longName;
		}
		if(!this.selected) html += '<OPTION selected></OPTION>';
		html += '<\/SELECT>';
	}
  if(this.displayYear) {
		html += '<SELECT NAME="' + this.yearFieldName + '"';
		html += this.yearOnChange ? ' ONCHANGE="' + this.yearOnChange + '"' : '';
		if(this.disabled)
			html += ' disabled';
		html += '>';
		for (var year = this.startYear; year <= this.endYear; year++) {
			html += '<OPTION VALUE="' + year + '"';
			if(this.selected)
				html += year == this.selectedYear ? ' SELECTED' : '';
			html += '>' + year;
		}
		if(!this.selected) html += '<OPTION selected></OPTION>';
		html += '<\/SELECT>';
	}
  document.write(html);
}

DateSelector.prototype.writeHTML = DateSelector_writeHTML;

function __isLeapYear (year) {
  return (year % 4 == 0) &&
         ((year % 100 != 0) || (year % 400 == 0));
}

DateSelector.cnt = 0;
DateSelector.elements = new Array();
DateSelector.defaults = new Object();
DateSelector.defaults.months = new Array(12);
DateSelector.defaults.months[0] = new Object();
DateSelector.defaults.months[0].shortName = 'Jan';
DateSelector.defaults.months[0].longName = 'January';
DateSelector.defaults.months[0].days = 31;
DateSelector.defaults.months[1] = new Object();
DateSelector.defaults.months[1].shortName = 'Feb';
DateSelector.defaults.months[1].longName = 'February';
DateSelector.defaults.months[1].days = 28
DateSelector.defaults.months[2] = new Object();
DateSelector.defaults.months[2].shortName = 'Mar';
DateSelector.defaults.months[2].longName = 'March';
DateSelector.defaults.months[2].days = 31;
DateSelector.defaults.months[3] = new Object();
DateSelector.defaults.months[3].shortName = 'Apr';
DateSelector.defaults.months[3].longName = 'April';
DateSelector.defaults.months[3].days = 30;
DateSelector.defaults.months[4] = new Object();
DateSelector.defaults.months[4].shortName = 'May';
DateSelector.defaults.months[4].longName = 'May';
DateSelector.defaults.months[4].days = 31;
DateSelector.defaults.months[5] = new Object();
DateSelector.defaults.months[5].shortName = 'Jun';
DateSelector.defaults.months[5].longName = 'June';
DateSelector.defaults.months[5].days = 30;
DateSelector.defaults.months[6] = new Object();
DateSelector.defaults.months[6].shortName = 'Jul';
DateSelector.defaults.months[6].longName = 'July';
DateSelector.defaults.months[6].days = 31;
DateSelector.defaults.months[7] = new Object();
DateSelector.defaults.months[7].shortName = 'Aug';
DateSelector.defaults.months[7].longName = 'August';
DateSelector.defaults.months[7].days = 31;
DateSelector.defaults.months[8] = new Object();
DateSelector.defaults.months[8].shortName = 'Sep';
DateSelector.defaults.months[8].longName = 'September';
DateSelector.defaults.months[8].days = 30;
DateSelector.defaults.months[9] = new Object();
DateSelector.defaults.months[9].shortName = 'Oct';
DateSelector.defaults.months[9].longName = 'October';
DateSelector.defaults.months[9].days = 31;
DateSelector.defaults.months[10] = new Object();
DateSelector.defaults.months[10].shortName = 'Nov';
DateSelector.defaults.months[10].longName = 'November';
DateSelector.defaults.months[10].days = 30;
DateSelector.defaults.months[11] = new Object();
DateSelector.defaults.months[11].shortName = 'Dec';
DateSelector.defaults.months[11].longName = 'December';
DateSelector.defaults.months[11].days = 31;
DateSelector.defaults.format = 'short';

var now = new Date();
var year = now.getFullYear ?
  now.getFullYear() : now.getYear();
if (year >= 0 && year <= 99)
  year += 1900;

DateSelector.defaults.selected = 0;
DateSelector.defaults.disabled = 0;
DateSelector.defaults.displayDate = 1;
DateSelector.defaults.displayMonth = 1;
DateSelector.defaults.displayYear = 1;
DateSelector.defaults.startYear = year;
DateSelector.defaults.selectedYear = year;
DateSelector.defaults.endYear = DateSelector.defaults.startYear + 20;
DateSelector.defaults.selectedMonth = now.getMonth();
DateSelector.defaults.selectedDate = now.getDate();
DateSelector.defaults.legend = '';
DateSelector.defaults.dateFieldName = 'date';
DateSelector.defaults.monthFieldName = 'month';
DateSelector.defaults.yearFieldName = 'year';
DateSelector.defaults.dateOnChange = '';
DateSelector.defaults.monthOnChange = '';
DateSelector.defaults.yearOnChange = '';

function checkUncheckAll(theElement) {
	var theForm = theElement.form;
	for(z=0; z < theForm.elements.length; z++) {
		if(theForm.elements[z].type == 'checkbox' && theForm.elements[z].name != 'checkall') {
			theForm.elements[z].checked = theElement.checked;
		}
	}
}


