// This is neccessary to allow multiple load events 
// since ie requires a second load event to make the 
// css menus work properly
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}
// Alert user on page change script
var changed = 0;

function recordChange() {
 changed = 1;
}

function recordChangeIfChangeKey(myevent) {
 if (myevent.which && !myevent.ctrlKey && !myevent.ctrlKey)
  recordChange(myevent);
}

function ignoreChange() {
 changed = 0;
}

function lookForChanges() {
 var origfunc;
  for (j = 0; j < document.forms[0].elements.length; j++) {   
   var formField = document.forms[0].elements[j];
	if (!formField || !formField.type) {
		continue;
	}
   var formFieldType = formField.type.toLowerCase();
   if (formFieldType == 'checkbox' || formFieldType == 'radio') {
    addHandler(formField, 'click', recordChange);
   } 
   else if (formFieldType == 'text' || formFieldType == 'textarea') {
    if (formField.attachEvent) {
     addHandler(formField, 'keypress', recordChange);
    } else {
     addHandler(formField, 'keypress', recordChangeIfChangeKey);
    }
   } else if (formFieldType == 'select-multiple' || formFieldType == 'select-one') {
    addHandler(formField, 'change', recordChange);
   }
  }
  addHandler(document.forms[0], 'submit', ignoreChange);
}

function warnOfUnsavedChanges() {
 if (changed) {
  if ("event" in window) //ie
   event.returnValue = 'You have unsaved changes on this page, which will be discarded if you leave now. Click "Cancel" in order to save them first.';
  else //netscape
   return false;
 }
}

function addHandler(target, eventName, handler) {
 if (target.attachEvent) {
  target.attachEvent('on'+eventName, handler);
 } else {
  target.addEventListener(eventName, handler, false);
 }
}
			
function confirmDelete() {
	return confirm( "Are you sure you want to delete this item?" );
}

function IsDate(DateToCheck){
  if (DateToCheck==""){return true;}
  var date_array = DateToCheck.split('/');
  var month = date_array[0] - 1;
  var day = date_array[1];
  var year = date_array[2];
  source_date = new Date(year, month, day);
  if (year != source_date.getFullYear()) {
      return false;
  }
  if (month != source_date.getMonth()) {
      return false;
  }
  if (day != source_date.getDate()) {
      return false;
  }
  return true;
}

// From Apriori Library
function IsNumeric(VALUE){
	for(var ivA = 0; ivA < VALUE.length;ivA ++){
		if(VALUE.charCodeAt(ivA) < 48 || VALUE.charCodeAt(ivA) > 57){
			if(VALUE.charCodeAt(ivA) != 46 && VALUE.charCodeAt(ivA) != 32 && VALUE.charAt(ivA) != ","){
			return false;
			}
		}																					
	}
	return true;
}

function IsNumeric(VALUE){
	for(var ivA = 0; ivA < VALUE.length;ivA ++){
		if(VALUE.charCodeAt(ivA) < 48 || VALUE.charCodeAt(ivA) > 57){
			if(VALUE.charCodeAt(ivA) != 46 && VALUE.charCodeAt(ivA) != 32 && VALUE.charAt(ivA) != ","){
			return false;
			}
		}																					
	}
	return true;
}

	function getSrcElement(e) {
		if ( typeof( window.event ) != "undefined" ) {
			return window.event.srcElement;
		}
		if ( e != null && typeof( e.target ) != "undefined" ) {
			return e.target;
		}
		if (e != null && e != undefined) {
			return e;
		}
		return null;
	}

	function countLeft(e) {
		var sender = getSrcElement(e);
		if (!sender) return;
		var parent = sender.parentNode;
		if (!parent) return;
		var counter;
		var inputs = parent.getElementsByTagName('INPUT');
		
		// Find the counter input
		for (i = 0; i < inputs.length; i++) {
			var element = inputs[i];
			if (element.className == 'counter') {
				counter = element;
			}
		}
		
		var max = maxLens[sender.id];
		//field, count, max
		
		if (sender.value.length > max)
			sender.value = sender.value.substring(0, max);
		else {
			counter.value = max - sender.value.length;
		}
	}

	function initCounters() {
		maxLens = {};
		var controls = document.getElementsByTagName('TEXTAREA');
		var additionalControls = document.getElementsByTagName('INPUT');

		for (i = 0; i < additionalControls.length; i++) {
			controls[controls.length] = additionalControls[i];
		}
		
		var x = 0;
		for (i = 0; i < controls.length; i++) {
			var control = controls[i];
			if (control.className.indexOf('counter_enabled') > -1) {
				var parent = control.parentNode;
				var spans = parent.getElementsByTagName('SPAN');
				// Find the counter total span
				for (x = 0; x < spans.length; x++) {
					var element = spans[x];
					if (element.className == 'counter_total') {
						total = Number(element.innerHTML);
						break;
					}
				}

				control.onkeydown = countLeft;
				control.onkeyup = countLeft;
				maxLens[control.id] = total;
				countLeft(control);
			}
		}
	}


addLoadEvent( lookForChanges );