// JavaScript Document LeasPlan Occasions

function removeSpaces(string) {
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	tstring += splitstring[i];
	return tstring;
}

function replaceChar(_char, string) {
	var tstring = "";
	splitstring = string.split(_char);
	for(i = 0; i < splitstring.length; i++)
	tstring += splitstring[i];
	return tstring;
}

function customSplit(strvalue, separator, arrayName) {
  var n = 0;
  if (separator.length != 0) {
    while (strvalue.indexOf(separator) != -1) {
      eval("arr"+n+" = strvalue.substring(0, strvalue.indexOf(separator));");
      strvalue = strvalue.substring(strvalue.indexOf(separator)+separator.length,
          strvalue.length+1);
      n++;
    }
    eval("arr" + n + " = strvalue;");
    arraySize = n+1;
  }
  else {
    for (var x = 0; x < strvalue.length; x++) {
      eval("arr"+n+" = \"" + strvalue.substring(x, x+1) + "\";");
      n++;
    }
    arraySize = n;
  }
  eval(arrayName + " = new Array(arraySize);");
  for (var i = 0; i < arraySize; i++)
    eval(arrayName + "[" + i + "] = arr" + i + ";");
  return arraySize;
}

function isInteger(s) {
	var i;
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    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++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function isNumber(sText) {
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         IsNumber = false;
      }
   }
   return IsNumber;
}

function isString(textObj) {
   var newValue   = textObj;
   var newLength  = newValue.length;
   var extraChars =". -'";
   var txt_search;
   for(var i = 0; i != newLength; i++) {
      aChar = newValue.substring(i,i+1);
      aChar = aChar.toUpperCase();
      txt_search = extraChars.indexOf(aChar);
      if(txt_search == -1 && (aChar < "A" || aChar > "Z") ) {
         return false;
      }
   }
   return true;
}

function isAlfa(textObj) {
   var newValue   = textObj;
   var newLength  = newValue.length;
   for(var i = 0; i != newLength; i++) {
      aChar = newValue.substring(i,i+1);
      aChar = aChar.toUpperCase();
      if(aChar < "A" || aChar > "Z") {
         return false;
      }
   }
   return true;
}

function isEmail(argvalue) {
  var retSize = customSplit(argvalue, "@", "arrayString");
  if (argvalue.indexOf(" ") != -1) {
    return false;
  } else if (argvalue.indexOf("@") == -1) {
    return false;
  } else if (argvalue.indexOf(".") == 0) {
    return false;
  } else if (argvalue.indexOf("@") == (argvalue.length-1)) {
    return false;
  } else if (arrayString[1].indexOf(".") == -1) {
    return false;
  } else if (arrayString[1].indexOf(".") == 0) {
    return false;
  } else if (arrayString[1].charAt(arrayString[1].length-1) == ".") {
    return false;
  }
  return true;
}

function isWWW(argvalue) {
  var arr = new Array();
  arr     = argvalue.split(".");
  if (argvalue.indexOf(" ") != -1) {
    return false;
  } else if (arr.length < 3) {
    return false;
  } else if (argvalue.indexOf(".") == 0) {
    return false;
  } else if (arr[0] != "www") {
    return false;
  } else if (arr[2].toString().length < 2) {
    return false;
  }
  return true;
}


function isZIPCode(code) {
  var testStr    = removeSpaces(code);
  var codeLength = testStr.length;  
  var firstPart  = testStr.substring(0,4);
  var lastPart   = testStr.substring(4,6);
  if(codeLength != 6) {
  	return false;
  } else if(isNumber(firstPart) == false) {
	return false;
  } else if(isAlfa(lastPart) == false) {
	return false;
  } 
  return true;
} 

function isPhone(number) {
	var telNr    = removeSpaces(number);
	var telNr    = replaceChar("-", telNr);
	var telNr    = replaceChar("(", telNr);
	var telNr    = replaceChar(")", telNr);
	var nrLength = telNr.length;
	if(nrLength != 10) {
		return false;
	} else if(telNr.substring(0,1) != "0") {
		return false;
	} else if(isNumber(telNr) == false) {
		return false;
	}
	return true;
}

var dtCh      = "-";
var minYear   = 1910;
var maxYear   = 2100;

function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr) {
	var daysInMonth    = DaysArray(12)
	var pos1           = dtStr.indexOf(dtCh)
	var pos2           = dtStr.indexOf(dtCh,pos1+1)
	var strDay         = dtStr.substring(0,pos1)
	var strMonth       = dtStr.substring(pos1+1,pos2)
	var strYear        = dtStr.substring(pos2+1)
	strYr              = strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month              = parseInt(strMonth)
	day                = parseInt(strDay)
	year               = parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return false
	}
return true
}

function checkNr(obj) {
	var input = obj.value;
	if(input.length == 1) {
		var last  = input;
	} else {
		var last  = input.substring(0-input.length-1,input.length);
	}
	if(isInteger(last) == false) {
		obj.value = input.substring(0, input.length-1);
	}
	return;
}

function checkDate(obj) {
	var input   = obj.value;
	var testStr = "0123456789-";
	if(input.length == 1) {
		var last  = input;
	} else {
		var last  = input.substring(input.length-1);
	}
	if(testStr.indexOf(last) == -1) obj.value = input.substring(0, input.length-1);
	if(input.length > 10) obj.value = input.substring(0, input.length-1);
	if(input.length == 2 && last == "-")      obj.value = "0" + input;
	if(input.length == 3 && isInteger(last))  obj.value = input.substring(0,2) + "-" + input.substring(2);
	if(input.length == 5 && last == "-")      obj.value = input.substring(0,3) +"0" + input.substring(3);
	if(input.length == 6 && isInteger(last))  obj.value = input.substring(0,2) + "-" + input.substring(3,5) +"-" + input.substring(5);
	return;
}

function checkDateD(e) {
	var obj   = this;
	var input = this.value;
	var testStr = "0123456789-";
	if(input.length == 1) {
		var last  = input;
	} else {
		var last  = input.substring(input.length-1);
	}
	if(testStr.indexOf(last) == -1) obj.value = input.substring(0, input.length-1);
	if(input.length > 10) obj.value = input.substring(0, input.length-1);
	if(input.length == 2 && last == "-")      obj.value = "0" + input;
	if(input.length == 3 && isInteger(last))  obj.value = input.substring(0,2) + "-" + input.substring(2);
	if(input.length == 5 && last == "-")      obj.value = input.substring(0,3) +"0" + input.substring(3);
	if(input.length == 6 && isInteger(last))  obj.value = input.substring(0,2) + "-" + input.substring(3,5) +"-" + input.substring(5);
	return;
}

function addEvent(elem, eventType, handler) {
	if (!elem.eventHandlers) elem.eventHandlers = [];
	if (!elem.eventHandlers[eventType]) {
		elem.eventHandlers[eventType] = [];
		if (elem['on' + eventType]) elem.eventHandlers[eventType].push(elem['on' + eventType]);
		elem['on' + eventType] = handleEvent;
	}
	elem.eventHandlers[eventType].push(handler);
}

function removeEvent(elem, eventType, handler) {
	var handlers = elem.eventHandlers[eventType];
	for (var i in handlers) if (handlers[i] == handler) delete handlers[i];
}

function handleEvent(e) {
	var returnValue = true;
	if (!e) e = fixEvent(event);
	var handlers = this.eventHandlers[e.type]
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		returnValue = !((returnValue && this.$$handleEvent(e)) === false);
	}
	return returnValue;
}

function fixEvent(event) {
	event.preventDefault  = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
};

fixEvent.preventDefault = function() {
	this.returnValue = false;
};

fixEvent.stopPropagation = function() {
	this.cancelBubble = true;
};

