Feature #16735 » negativetimestamps.patch
jsfunc.evalfield.js (working copy) | ||
---|---|---|
/***************************************************************
|
||
*
|
||
* Evaluation of TYPO3 form field content
|
||
*
|
||
* $Id: jsfunc.evalfield.js 2000 2007-02-06 07:15:40Z mundaun $
|
||
*
|
||
*
|
||
*
|
||
* Copyright notice
|
||
*
|
||
* (c) 1998-2007 Kasper Skaarhoj
|
||
* All rights reserved
|
||
*
|
||
* This script is part of the TYPO3 t3lib/ library provided by
|
||
* Kasper Skaarhoj <kasper@typo3.com> together with TYPO3
|
||
*
|
||
* Released under GNU/GPL (see license file in typo3/sysext/cms/tslib/)
|
||
*
|
||
* This script is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
*
|
||
* This copyright notice MUST APPEAR in all copies of this script
|
||
***************************************************************/
|
||
function evalFunc() {
|
||
this.input = evalFunc_input;
|
||
this.output = evalFunc_output;
|
||
this.parseInt = evalFunc_parseInt;
|
||
this.getNumChars = evalFunc_getNumChars;
|
||
this.parseDouble = evalFunc_parseDouble;
|
||
this.noSpace = evalFunc_noSpace;
|
||
this.getSecs = evalFunc_getSecs;
|
||
this.getYear = evalFunc_getYear;
|
||
this.getTimeSecs = evalFunc_getTimeSecs;
|
||
this.caseSwitch = evalFunc_caseSwitch;
|
||
this.evalObjValue = evalFunc_evalObjValue;
|
||
this.outputObjValue = evalFunc_outputObjValue;
|
||
this.split = evalFunc_splitStr;
|
||
this.pol = evalFunc_pol;
|
||
this.ltrim = evalFunc_ltrim;
|
||
this.btrim = evalFunc_btrim;
|
||
var today = new Date();
|
||
this.lastYear = this.getYear(today);
|
||
this.lastDate = this.getSecs(today);
|
||
this.lastTime = this.getTimeSecs(today);
|
||
this.isInString = '';
|
||
this.USmode = 0;
|
||
}
|
||
function evalFunc_pol(fortegn, value) {
|
||
return eval (((fortegn=="-")?'-':'')+value);
|
||
}
|
||
function evalFunc_evalObjValue(FObj,value) {
|
||
var evallist = FObj.evallist;
|
||
this.isInString = (FObj.is_in) ? ''+FObj.is_in : '';
|
||
var index=1;
|
||
var theEvalType = (FObj.evallist) ? this.split(evallist, ",", index) : false;
|
||
var newValue=value;
|
||
while (theEvalType) {
|
||
if (theEvalType.slice(0, 3) == 'tx_') {
|
||
if(typeof window[theEvalType] == 'function') {
|
||
newValue = window[theEvalType](newValue); // variable function call, calling functions like tx_myext_myeval(value)
|
||
}
|
||
} else {
|
||
newValue = evalFunc.input(theEvalType, newValue);
|
||
}
|
||
index++;
|
||
theEvalType = this.split(evallist, ",", index);
|
||
}
|
||
return newValue;
|
||
}
|
||
function evalFunc_outputObjValue(FObj,value) {
|
||
var evallist = FObj.evallist;
|
||
var index=1;
|
||
var theEvalType = this.split(evallist, ",", index);
|
||
var newValue=value;
|
||
while (theEvalType) {
|
||
newValue = evalFunc.output(theEvalType, value, FObj);
|
||
index++;
|
||
theEvalType = this.split(evallist, ",", index);
|
||
}
|
||
return newValue;
|
||
}
|
||
function evalFunc_caseSwitch(type,inVal) {
|
||
var theVal = ''+inVal;
|
||
var newString = '';
|
||
switch (type) {
|
||
case "alpha":
|
||
case "num":
|
||
case "alphanum":
|
||
case "alphanum_x":
|
||
for (var a=0;a<theVal.length;a++) {
|
||
var theChar = theVal.substr(a,1);
|
||
var special = (theChar=='_'||theChar=='-');
|
||
var alpha = (theChar>='a'&&theChar<='z') || (theChar>='A'&&theChar<='Z');
|
||
var num = (theChar>='0' && theChar<='9');
|
||
switch(type) {
|
||
case "alphanum": special=0; break;
|
||
case "alpha": num=0; special=0; break;
|
||
case "num": alpha=0; special=0; break;
|
||
}
|
||
if (alpha || num || theChar==' ' || special) {
|
||
newString+=theChar;
|
||
}
|
||
}
|
||
break;
|
||
case "is_in":
|
||
if (this.isInString) {
|
||
for (var a=0;a<theVal.length;a++) {
|
||
var theChar = theVal.substr(a,1);
|
||
if (this.isInString.indexOf(theChar)!=-1) {
|
||
newString+=theChar;
|
||
}
|
||
}
|
||
} else {newString = theVal;}
|
||
break;
|
||
case "nospace":
|
||
newString = this.noSpace(theVal);
|
||
break;
|
||
case "upper":
|
||
newString = theVal.toUpperCase();
|
||
break;
|
||
case "lower":
|
||
newString = theVal.toLowerCase();
|
||
break;
|
||
default:
|
||
return inVal;
|
||
}
|
||
return newString;
|
||
}
|
||
function evalFunc_parseInt(value) {
|
||
var theVal = ''+value;
|
||
if (!value) return 0;
|
||
for (var a=0;a<theVal.length;a++) {
|
||
if (theVal.substr(a,1)!='0') {
|
||
return parseInt(theVal.substr(a,theVal.length)) || 0;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
function evalFunc_getNumChars(value) {
|
||
var theVal = ''+value;
|
||
if (!value) return 0;
|
||
var outVal="";
|
||
for (var a=0;a<theVal.length;a++) {
|
||
if (theVal.substr(a,1)==parseInt(theVal.substr(a,1))) {
|
||
outVal+=theVal.substr(a,1);
|
||
}
|
||
}
|
||
return outVal;
|
||
}
|
||
function evalFunc_parseDouble(value) {
|
||
var theVal = ''+value;
|
||
var dec=0;
|
||
if (!value) return 0;
|
||
for (var a=theVal.length; a>0; a--) {
|
||
if (theVal.substr(a-1,1)=='.' || theVal.substr(a-1,1)==',') {
|
||
dec = theVal.substr(a);
|
||
theVal = theVal.substr(0,a-1);
|
||
break;
|
||
}
|
||
}
|
||
dec = this.getNumChars(dec)+'00';
|
||
theVal=this.parseInt(this.noSpace(theVal))+TS.decimalSign+dec.substr(0,2);
|
||
return theVal;
|
||
}
|
||
function evalFunc_noSpace(value) {
|
||
var theVal = ''+value;
|
||
var newString="";
|
||
for (var a=0;a<theVal.length;a++) {
|
||
var theChar = theVal.substr(a,1);
|
||
if (theChar!=' ') {
|
||
newString+=theChar;
|
||
}
|
||
}
|
||
return newString;
|
||
}
|
||
function evalFunc_ltrim(value) {
|
||
var theVal = ''+value;
|
||
if (!value) return '';
|
||
for (var a=0;a<theVal.length;a++) {
|
||
if (theVal.substr(a,1)!=' ') {
|
||
return theVal.substr(a,theVal.length);
|
||
}
|
||
}
|
||
return '';
|
||
}
|
||
function evalFunc_btrim(value) {
|
||
var theVal = ''+value;
|
||
if (!value) return '';
|
||
for (var a=theVal.length;a>0;a--) {
|
||
if (theVal.substr(a-1,1)!=' ') {
|
||
return theVal.substr(0,a);
|
||
}
|
||
}
|
||
return '';
|
||
}
|
||
function evalFunc_splitSingle(value) {
|
||
var theVal = ''+value;
|
||
this.values = new Array();
|
||
this.pointer = 3;
|
||
this.values[1]=theVal.substr(0,2);
|
||
this.values[2]=theVal.substr(2,2);
|
||
this.values[3]=theVal.substr(4,10);
|
||
}
|
||
function evalFunc_split(value) {
|
||
this.values = new Array();
|
||
this.valPol = new Array();
|
||
this.pointer = 0;
|
||
var numberMode = 0;
|
||
var theVal = "";
|
||
value+=" ";
|
||
for (var a=0;a<value.length;a++) {
|
||
var theChar = value.substr(a,1);
|
||
if (theChar<"0" || theChar>"9") {
|
||
if (numberMode) {
|
||
this.pointer++;
|
||
this.values[this.pointer]=theVal;
|
||
theVal = "";
|
||
numberMode=0;
|
||
}
|
||
if (theChar=="+" || theChar=="-") {
|
||
this.valPol[this.pointer+1] = theChar;
|
||
}
|
||
} else {
|
||
theVal+=theChar;
|
||
numberMode=1;
|
||
}
|
||
}
|
||
}
|
||
function evalFunc_input(type,inVal) {
|
||
if (type=="md5") {
|
||
return MD5(inVal);
|
||
}
|
||
if (type=="trim") {
|
||
return this.ltrim(this.btrim(inVal));
|
||
}
|
||
if (type=="int") {
|
||
return this.parseInt(inVal);
|
||
}
|
||
if (type=="double2") {
|
||
return this.parseDouble(inVal);
|
||
}
|
||
var today = new Date()
|
||
var add=0;
|
||
var value = this.ltrim(inVal);
|
||
var values = new evalFunc_split(value);
|
||
var theCmd = value.substr(0,1);
|
||
value = this.caseSwitch(type,value);
|
||
if (value=="") {
|
||
return "";
|
||
return 0; // Why would I ever return a zero??? (20/12/01)
|
||
}
|
||
switch (type) {
|
||
case "datetime":
|
||
switch (theCmd) {
|
||
case "d":
|
||
case "t":
|
||
case "n":
|
||
var theTime = new Date(this.getYear(today), today.getMonth(), today.getDate(), today.getHours(), today.getMinutes());
|
||
this.lastDate = this.getSecs(theTime)
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
case "+":
|
||
case "-":
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
default:
|
||
var index = value.indexOf(' ');
|
||
if (index!=-1) {
|
||
var theSecs = this.input("date",value.substr(index,value.length)) + this.input("time",value.substr(0,index));
|
||
this.lastDate = theSecs;
|
||
}
|
||
}
|
||
this.lastDate+=add*24*60*60;
|
||
return this.lastDate;
|
||
break;
|
||
case "year":
|
||
switch (theCmd) {
|
||
case "d":
|
||
case "t":
|
||
case "n":
|
||
var theTime = today;
|
||
this.lastYear = this.getYear(theTime);
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
case "+":
|
||
case "-":
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
default:
|
||
if (values.valPol[2]) {
|
||
add = this.pol(values.valPol[2],this.parseInt(values.values[2]));
|
||
}
|
||
var year = (values.values[1])?this.parseInt(values.values[1]):this.getYear(today);
|
||
if ( (year>=0&&year<38) || (year>=70&&year<100) || (year>=1970&&year<2038) ) {
|
||
if (year<100) {
|
||
year = (year<38) ? year+=2000 : year+=1900;
|
||
}
|
||
} else {year = this.getYear(today);}
|
||
this.lastYear = year
|
||
}
|
||
this.lastYear+=add;
|
||
return this.lastYear;
|
||
break;
|
||
case "date":
|
||
switch (theCmd) {
|
||
case "d":
|
||
case "t":
|
||
case "n":
|
||
var theTime = new Date(this.getYear(today), today.getMonth(), today.getDate());
|
||
this.lastDate = this.getSecs(theTime);
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
case "+":
|
||
case "-":
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
default:
|
||
var index = 4;
|
||
if (values.valPol[index]) {
|
||
add = this.pol(values.valPol[index],this.parseInt(values.values[index]));
|
||
}
|
||
if (values.values[1] && values.values[1].length>2) {
|
||
if (values.valPol[2]) {
|
||
add = this.pol(values.valPol[2],this.parseInt(values.values[2]));
|
||
}
|
||
var temp = values.values[1];
|
||
values = new evalFunc_splitSingle(temp);
|
||
}
|
||
var year = (values.values[3])?this.parseInt(values.values[3]):this.getYear(today);
|
||
if ( (year>=0&&year<38) || (year>=70&&year<100) || (year>=1970&&year<2038) ) {
|
||
if (year<100) {
|
||
year = (year<38) ? year+=2000 : year+=1900;
|
||
}
|
||
} else {year = this.getYear(today);}
|
||
var month = (values.values[this.USmode?1:2])?this.parseInt(values.values[this.USmode?1:2]):today.getMonth()+1;
|
||
if (month > 12) {month=12;}
|
||
if (month < 1) {month=1;}
|
||
var day = (values.values[this.USmode?2:1])?this.parseInt(values.values[this.USmode?2:1]):today.getDate();
|
||
if (day > 31) {day=31;}
|
||
if (day < 1) {day=1;}
|
||
if (''+day+'-'+month+'-'+year == "1-1-1970") {
|
||
var theTime = new Date(); theTime.setTime(0);
|
||
} else {
|
||
var theTime = new Date(parseInt(year), parseInt(month)-1, parseInt(day));
|
||
}
|
||
this.lastDate = this.getSecs(theTime)
|
||
}
|
||
this.lastDate+=add*24*60*60;
|
||
if (this.lastDate<0) {this.lastDate=0;}
|
||
return this.lastDate;
|
||
break;
|
||
case "time":
|
||
case "timesec":
|
||
switch (theCmd) {
|
||
case "d":
|
||
case "t":
|
||
case "n":
|
||
var theTime = new Date(this.getYear(today), today.getMonth(), today.getDate(), today.getHours(), today.getMinutes(), ((type=="timesec")?today.getSeconds():0));
|
||
this.lastTime = this.getTimeSecs(theTime);
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
case "+":
|
||
case "-":
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
default:
|
||
var index = (type=="timesec")?4:3;
|
||
if (values.valPol[index]) {
|
||
add = this.pol(values.valPol[index],this.parseInt(values.values[index]));
|
||
}
|
||
if (values.values[1] && values.values[1].length>2) {
|
||
if (values.valPol[2]) {
|
||
add = this.pol(values.valPol[2],this.parseInt(values.values[2]));
|
||
}
|
||
var temp = values.values[1];
|
||
values = new evalFunc_splitSingle(temp);
|
||
}
|
||
var sec = (values.values[3])?this.parseInt(values.values[3]):today.getSeconds();
|
||
if (sec > 59) {sec=59;}
|
||
var min = (values.values[2])?this.parseInt(values.values[2]):today.getMinutes();
|
||
if (min > 59) {min=59;}
|
||
var hour = (values.values[1])?this.parseInt(values.values[1]):today.getHours();
|
||
if (hour > 23) {hour=23;}
|
||
var theTime = new Date(this.getYear(today), today.getMonth(), today.getDate(), hour, min, ((type=="timesec")?sec:0));
|
||
this.lastTime = this.getTimeSecs(theTime)
|
||
}
|
||
this.lastTime+=add*60;
|
||
if (this.lastTime<0) {this.lastTime+=24*60*60;}
|
||
return this.lastTime;
|
||
break;
|
||
default:
|
||
return value;
|
||
}
|
||
}
|
||
function evalFunc_output(type,value,FObj) {
|
||
var theString = "";
|
||
switch (type) {
|
||
case "date":
|
||
if (!parseInt(value)) {return '';}
|
||
var theTime = new Date();
|
||
theTime.setTime(value*1000);
|
||
if (this.USmode) {
|
||
theString = (theTime.getMonth()+1)+'-'+theTime.getDate()+'-'+this.getYear(theTime);
|
||
} else {
|
||
theString = theTime.getDate()+'-'+(theTime.getMonth()+1)+'-'+this.getYear(theTime);
|
||
}
|
||
break;
|
||
case "datetime":
|
||
if (!parseInt(value)) {return '';}
|
||
var theTime = new Date();
|
||
theTime.setTime(value*1000);
|
||
theString = this.output("time",this.getTimeSecs(theTime))+' '+this.output("date",value);
|
||
break;
|
||
case "time":
|
||
case "timesec":
|
||
if (!parseInt(value)) {return '';}
|
||
var theTime = new Date();
|
||
theTime.setTime(value*1000);
|
||
var h = Math.floor(value/3600);
|
||
var m = Math.floor((value-h*3600)/60);
|
||
var s = Math.floor(value-h*3600-m*60);
|
||
theString = h+':'+((m<10)?'0':'')+m + ((type=="timesec")?':'+((s<10)?'0':'')+s:'');
|
||
break;
|
||
case "password":
|
||
theString = (value) ? TS.passwordDummy : "";
|
||
break;
|
||
case "int":
|
||
theString = (FObj.checkbox && value==FObj.checkboxValue)?'':value;
|
||
break;
|
||
default:
|
||
theString = value;
|
||
}
|
||
return theString;
|
||
}
|
||
function evalFunc_getSecs(timeObj) {
|
||
return Math.round(timeObj.getTime()/1000);
|
||
}
|
||
function evalFunc_getYear(timeObj) {
|
||
return (timeObj.getYear()>200) ? timeObj.getYear() : (timeObj.getYear()+1900);
|
||
}
|
||
function evalFunc_getTimeSecs(timeObj) {
|
||
return timeObj.getHours()*60*60+timeObj.getMinutes()*60+timeObj.getSeconds();
|
||
}
|
||
function evalFunc_dummy (evallist,is_in,checkbox,checkboxValue) {
|
||
this.evallist = evallist;
|
||
this.is_in = is_in;
|
||
this.checkboxValue = checkboxValue;
|
||
this.checkbox = checkbox;
|
||
}
|
||
function evalFunc_splitStr(theStr1, delim, index) {
|
||
var theStr = ''+theStr1;
|
||
var lengthOfDelim = delim.length;
|
||
sPos = -lengthOfDelim;
|
||
if (index<1) {index=1;}
|
||
for (a=1; a<index; a++) {
|
||
sPos = theStr.indexOf(delim, sPos+lengthOfDelim);
|
||
if (sPos==-1) {return null;}
|
||
}
|
||
ePos = theStr.indexOf(delim, sPos+lengthOfDelim);
|
||
if(ePos == -1) {ePos = theStr.length;}
|
||
return (theStr.substring(sPos+lengthOfDelim,ePos));
|
||
}
|
||
/***************************************************************
|
||
*
|
||
* Evaluation of TYPO3 form field content
|
||
*
|
||
* $Id: jsfunc.evalfield.js 2000 2007-02-06 07:15:40Z mundaun $
|
||
*
|
||
*
|
||
*
|
||
* Copyright notice
|
||
*
|
||
* (c) 1998-2007 Kasper Skaarhoj
|
||
* All rights reserved
|
||
*
|
||
* This script is part of the TYPO3 t3lib/ library provided by
|
||
* Kasper Skaarhoj <kasper@typo3.com> together with TYPO3
|
||
*
|
||
* Released under GNU/GPL (see license file in typo3/sysext/cms/tslib/)
|
||
*
|
||
* This script is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
*
|
||
* This copyright notice MUST APPEAR in all copies of this script
|
||
***************************************************************/
|
||
|
||
|
||
function evalFunc() {
|
||
this.input = evalFunc_input;
|
||
this.output = evalFunc_output;
|
||
this.parseInt = evalFunc_parseInt;
|
||
this.getNumChars = evalFunc_getNumChars;
|
||
this.parseDouble = evalFunc_parseDouble;
|
||
this.noSpace = evalFunc_noSpace;
|
||
this.getSecs = evalFunc_getSecs;
|
||
this.getYear = evalFunc_getYear;
|
||
this.getTimeSecs = evalFunc_getTimeSecs;
|
||
this.caseSwitch = evalFunc_caseSwitch;
|
||
this.evalObjValue = evalFunc_evalObjValue;
|
||
this.outputObjValue = evalFunc_outputObjValue;
|
||
this.split = evalFunc_splitStr;
|
||
this.pol = evalFunc_pol;
|
||
|
||
this.ltrim = evalFunc_ltrim;
|
||
this.btrim = evalFunc_btrim;
|
||
var today = new Date();
|
||
this.lastYear = this.getYear(today);
|
||
this.lastDate = this.getSecs(today);
|
||
this.lastTime = this.getTimeSecs(today);
|
||
this.isInString = '';
|
||
this.USmode = 0;
|
||
}
|
||
function evalFunc_pol(fortegn, value) {
|
||
return eval (((fortegn=="-")?'-':'')+value);
|
||
}
|
||
function evalFunc_evalObjValue(FObj,value) {
|
||
var evallist = FObj.evallist;
|
||
this.isInString = (FObj.is_in) ? ''+FObj.is_in : '';
|
||
var index=1;
|
||
var theEvalType = (FObj.evallist) ? this.split(evallist, ",", index) : false;
|
||
var newValue=value;
|
||
while (theEvalType) {
|
||
if (theEvalType.slice(0, 3) == 'tx_') {
|
||
if(typeof window[theEvalType] == 'function') {
|
||
newValue = window[theEvalType](newValue); // variable function call, calling functions like tx_myext_myeval(value)
|
||
}
|
||
} else {
|
||
newValue = evalFunc.input(theEvalType, newValue);
|
||
}
|
||
index++;
|
||
theEvalType = this.split(evallist, ",", index);
|
||
}
|
||
return newValue;
|
||
}
|
||
function evalFunc_outputObjValue(FObj,value) {
|
||
var evallist = FObj.evallist;
|
||
var index=1;
|
||
var theEvalType = this.split(evallist, ",", index);
|
||
var newValue=value;
|
||
while (theEvalType) {
|
||
newValue = evalFunc.output(theEvalType, value, FObj);
|
||
index++;
|
||
theEvalType = this.split(evallist, ",", index);
|
||
}
|
||
return newValue;
|
||
}
|
||
function evalFunc_caseSwitch(type,inVal) {
|
||
var theVal = ''+inVal;
|
||
var newString = '';
|
||
switch (type) {
|
||
case "alpha":
|
||
case "num":
|
||
case "alphanum":
|
||
case "alphanum_x":
|
||
for (var a=0;a<theVal.length;a++) {
|
||
var theChar = theVal.substr(a,1);
|
||
var special = (theChar=='_'||theChar=='-');
|
||
var alpha = (theChar>='a'&&theChar<='z') || (theChar>='A'&&theChar<='Z');
|
||
var num = (theChar>='0' && theChar<='9');
|
||
switch(type) {
|
||
case "alphanum": special=0; break;
|
||
case "alpha": num=0; special=0; break;
|
||
case "num": alpha=0; special=0; break;
|
||
}
|
||
if (alpha || num || theChar==' ' || special) {
|
||
newString+=theChar;
|
||
}
|
||
}
|
||
break;
|
||
case "is_in":
|
||
if (this.isInString) {
|
||
for (var a=0;a<theVal.length;a++) {
|
||
var theChar = theVal.substr(a,1);
|
||
if (this.isInString.indexOf(theChar)!=-1) {
|
||
newString+=theChar;
|
||
}
|
||
}
|
||
} else {newString = theVal;}
|
||
break;
|
||
case "nospace":
|
||
newString = this.noSpace(theVal);
|
||
break;
|
||
case "upper":
|
||
newString = theVal.toUpperCase();
|
||
break;
|
||
case "lower":
|
||
newString = theVal.toLowerCase();
|
||
break;
|
||
default:
|
||
return inVal;
|
||
}
|
||
return newString;
|
||
}
|
||
function evalFunc_parseInt(value) {
|
||
var theVal = ''+value;
|
||
if (!value) return 0;
|
||
for (var a=0;a<theVal.length;a++) {
|
||
if (theVal.substr(a,1)!='0') {
|
||
return parseInt(theVal.substr(a,theVal.length)) || 0;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
function evalFunc_getNumChars(value) {
|
||
var theVal = ''+value;
|
||
if (!value) return 0;
|
||
var outVal="";
|
||
for (var a=0;a<theVal.length;a++) {
|
||
if (theVal.substr(a,1)==parseInt(theVal.substr(a,1))) {
|
||
outVal+=theVal.substr(a,1);
|
||
}
|
||
}
|
||
return outVal;
|
||
}
|
||
function evalFunc_parseDouble(value) {
|
||
var theVal = ''+value;
|
||
var dec=0;
|
||
if (!value) return 0;
|
||
for (var a=theVal.length; a>0; a--) {
|
||
if (theVal.substr(a-1,1)=='.' || theVal.substr(a-1,1)==',') {
|
||
dec = theVal.substr(a);
|
||
theVal = theVal.substr(0,a-1);
|
||
break;
|
||
}
|
||
}
|
||
dec = this.getNumChars(dec)+'00';
|
||
theVal=this.parseInt(this.noSpace(theVal))+TS.decimalSign+dec.substr(0,2);
|
||
|
||
return theVal;
|
||
}
|
||
function evalFunc_noSpace(value) {
|
||
var theVal = ''+value;
|
||
var newString="";
|
||
for (var a=0;a<theVal.length;a++) {
|
||
var theChar = theVal.substr(a,1);
|
||
if (theChar!=' ') {
|
||
newString+=theChar;
|
||
}
|
||
}
|
||
return newString;
|
||
}
|
||
function evalFunc_ltrim(value) {
|
||
var theVal = ''+value;
|
||
if (!value) return '';
|
||
for (var a=0;a<theVal.length;a++) {
|
||
if (theVal.substr(a,1)!=' ') {
|
||
return theVal.substr(a,theVal.length);
|
||
}
|
||
}
|
||
return '';
|
||
}
|
||
function evalFunc_btrim(value) {
|
||
var theVal = ''+value;
|
||
if (!value) return '';
|
||
for (var a=theVal.length;a>0;a--) {
|
||
if (theVal.substr(a-1,1)!=' ') {
|
||
return theVal.substr(0,a);
|
||
}
|
||
}
|
||
return '';
|
||
}
|
||
function evalFunc_splitSingle(value) {
|
||
var theVal = ''+value;
|
||
this.values = new Array();
|
||
this.pointer = 3;
|
||
this.values[1]=theVal.substr(0,2);
|
||
this.values[2]=theVal.substr(2,2);
|
||
this.values[3]=theVal.substr(4,10);
|
||
}
|
||
function evalFunc_split(value) {
|
||
this.values = new Array();
|
||
this.valPol = new Array();
|
||
this.pointer = 0;
|
||
var numberMode = 0;
|
||
var theVal = "";
|
||
value+=" ";
|
||
for (var a=0;a<value.length;a++) {
|
||
var theChar = value.substr(a,1);
|
||
if (theChar<"0" || theChar>"9") {
|
||
if (numberMode) {
|
||
this.pointer++;
|
||
this.values[this.pointer]=theVal;
|
||
theVal = "";
|
||
numberMode=0;
|
||
}
|
||
if (theChar=="+" || theChar=="-") {
|
||
this.valPol[this.pointer+1] = theChar;
|
||
}
|
||
} else {
|
||
theVal+=theChar;
|
||
numberMode=1;
|
||
}
|
||
}
|
||
}
|
||
function evalFunc_input(type,inVal) {
|
||
if (type=="md5") {
|
||
return MD5(inVal);
|
||
}
|
||
if (type=="trim") {
|
||
return this.ltrim(this.btrim(inVal));
|
||
}
|
||
if (type=="int") {
|
||
return this.parseInt(inVal);
|
||
}
|
||
if (type=="double2") {
|
||
return this.parseDouble(inVal);
|
||
}
|
||
|
||
var today = new Date()
|
||
var add=0;
|
||
var value = this.ltrim(inVal);
|
||
var values = new evalFunc_split(value);
|
||
var theCmd = value.substr(0,1);
|
||
value = this.caseSwitch(type,value);
|
||
if (value=="") {
|
||
return "";
|
||
return 0; // Why would I ever return a zero??? (20/12/01)
|
||
}
|
||
switch (type) {
|
||
case "datetime":
|
||
switch (theCmd) {
|
||
case "d":
|
||
case "t":
|
||
case "n":
|
||
var theTime = new Date(this.getYear(today), today.getMonth(), today.getDate(), today.getHours(), today.getMinutes());
|
||
this.lastDate = this.getSecs(theTime)
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
case "+":
|
||
case "-":
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
default:
|
||
var index = value.indexOf(' ');
|
||
if (index!=-1) {
|
||
var theSecs = this.input("date",value.substr(index,value.length)) + this.input("time",value.substr(0,index));
|
||
this.lastDate = theSecs;
|
||
}
|
||
}
|
||
this.lastDate+=add*24*60*60;
|
||
return this.lastDate;
|
||
break;
|
||
case "year":
|
||
switch (theCmd) {
|
||
case "d":
|
||
case "t":
|
||
case "n":
|
||
var theTime = today;
|
||
this.lastYear = this.getYear(theTime);
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
case "+":
|
||
case "-":
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
default:
|
||
if (values.valPol[2]) {
|
||
add = this.pol(values.valPol[2],this.parseInt(values.values[2]));
|
||
}
|
||
var year = (values.values[1])?this.parseInt(values.values[1]):this.getYear(today);
|
||
if ( (year>=0&&year<38) || (year>=70&&year<100) || (year>=1970&&year<2038) ) {
|
||
if (year<100) {
|
||
year = (year<38) ? year+=2000 : year+=1900;
|
||
}
|
||
} else {year = this.getYear(today);}
|
||
this.lastYear = year
|
||
}
|
||
this.lastYear+=add;
|
||
return this.lastYear;
|
||
break;
|
||
case "date":
|
||
switch (theCmd) {
|
||
case "d":
|
||
case "t":
|
||
case "n":
|
||
var theTime = new Date(this.getYear(today), today.getMonth(), today.getDate());
|
||
this.lastDate = this.getSecs(theTime);
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
case "+":
|
||
case "-":
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
default:
|
||
var index = 4;
|
||
if (values.valPol[index]) {
|
||
add = this.pol(values.valPol[index],this.parseInt(values.values[index]));
|
||
}
|
||
if (values.values[1] && values.values[1].length>2) {
|
||
if (values.valPol[2]) {
|
||
add = this.pol(values.valPol[2],this.parseInt(values.values[2]));
|
||
}
|
||
var temp = values.values[1];
|
||
values = new evalFunc_splitSingle(temp);
|
||
}
|
||
|
||
var year = (values.values[3])?this.parseInt(values.values[3]):this.getYear(today);
|
||
//if ( (year>=0&&year<38) || (year>=70&&year<100) || (year>=1970&&year<2038) ) {
|
||
if (year<100) {
|
||
year = (year<38) ? year+=2000 : year+=1900;
|
||
}
|
||
//} else {year = this.getYear(today);}
|
||
var month = (values.values[this.USmode?1:2])?this.parseInt(values.values[this.USmode?1:2]):today.getMonth()+1;
|
||
if (month > 12) {month=12;}
|
||
if (month < 1) {month=1;}
|
||
var day = (values.values[this.USmode?2:1])?this.parseInt(values.values[this.USmode?2:1]):today.getDate();
|
||
if (day > 31) {day=31;}
|
||
if (day < 1) {day=1;}
|
||
if (''+day+'-'+month+'-'+year == "1-1-1970") {
|
||
var theTime = new Date(); theTime.setTime(0);
|
||
} else {
|
||
var theTime = new Date(parseInt(year), parseInt(month)-1, parseInt(day));
|
||
}
|
||
this.lastDate = this.getSecs(theTime)
|
||
}
|
||
this.lastDate+=add*24*60*60;
|
||
//if (this.lastDate<0) {this.lastDate=0;}
|
||
return this.lastDate;
|
||
break;
|
||
case "time":
|
||
case "timesec":
|
||
switch (theCmd) {
|
||
case "d":
|
||
case "t":
|
||
case "n":
|
||
var theTime = new Date(this.getYear(today), today.getMonth(), today.getDate(), today.getHours(), today.getMinutes(), ((type=="timesec")?today.getSeconds():0));
|
||
this.lastTime = this.getTimeSecs(theTime);
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
case "+":
|
||
case "-":
|
||
if (values.valPol[1]) {
|
||
add = this.pol(values.valPol[1],this.parseInt(values.values[1]));
|
||
}
|
||
break;
|
||
default:
|
||
var index = (type=="timesec")?4:3;
|
||
if (values.valPol[index]) {
|
||
add = this.pol(values.valPol[index],this.parseInt(values.values[index]));
|
||
}
|
||
if (values.values[1] && values.values[1].length>2) {
|
||
if (values.valPol[2]) {
|
||
add = this.pol(values.valPol[2],this.parseInt(values.values[2]));
|
||
}
|
||
var temp = values.values[1];
|
||
values = new evalFunc_splitSingle(temp);
|
||
}
|
||
var sec = (values.values[3])?this.parseInt(values.values[3]):today.getSeconds();
|
||
if (sec > 59) {sec=59;}
|
||
var min = (values.values[2])?this.parseInt(values.values[2]):today.getMinutes();
|
||
if (min > 59) {min=59;}
|
||
var hour = (values.values[1])?this.parseInt(values.values[1]):today.getHours();
|
||
if (hour > 23) {hour=23;}
|
||
var theTime = new Date(this.getYear(today), today.getMonth(), today.getDate(), hour, min, ((type=="timesec")?sec:0));
|
||
this.lastTime = this.getTimeSecs(theTime)
|
||
}
|
||
this.lastTime+=add*60;
|
||
if (this.lastTime<0) {this.lastTime+=24*60*60;}
|
||
return this.lastTime;
|
||
break;
|
||
default:
|
||
return value;
|
||
}
|
||
}
|
||
function evalFunc_output(type,value,FObj) {
|
||
var theString = "";
|
||
switch (type) {
|
||
case "date":
|
||
if (!parseInt(value)) {return '';}
|
||
var theTime = new Date();
|
||
theTime.setTime(value*1000);
|
||
if (this.USmode) {
|
||
theString = (theTime.getMonth()+1)+'-'+theTime.getDate()+'-'+this.getYear(theTime);
|
||
} else {
|
||
theString = theTime.getDate()+'-'+(theTime.getMonth()+1)+'-'+this.getYear(theTime);
|
||
}
|
||
break;
|
||
case "datetime":
|
||
if (!parseInt(value)) {return '';}
|
||
var theTime = new Date();
|
||
theTime.setTime(value*1000);
|
||
theString = this.output("time",this.getTimeSecs(theTime))+' '+this.output("date",value);
|
||
break;
|
||
case "time":
|
||
case "timesec":
|
||
if (!parseInt(value)) {return '';}
|
||
var theTime = new Date();
|
||
theTime.setTime(value*1000);
|
||
var h = Math.floor(value/3600);
|
||
var m = Math.floor((value-h*3600)/60);
|
||
var s = Math.floor(value-h*3600-m*60);
|
||
theString = h+':'+((m<10)?'0':'')+m + ((type=="timesec")?':'+((s<10)?'0':'')+s:'');
|
||
break;
|
||
case "password":
|
||
theString = (value) ? TS.passwordDummy : "";
|
||
break;
|
||
case "int":
|
||
theString = (FObj.checkbox && value==FObj.checkboxValue)?'':value;
|
||
break;
|
||
default:
|
||
theString = value;
|
||
}
|
||
return theString;
|
||
}
|
||
function evalFunc_getSecs(timeObj) {
|
||
return Math.round(timeObj.getTime()/1000);
|
||
}
|
||
function evalFunc_getYear(timeObj) {
|
||
return (timeObj.getYear()>200) ? timeObj.getYear() : (timeObj.getYear()+1900);
|
||
}
|
||
function evalFunc_getTimeSecs(timeObj) {
|
||
return timeObj.getHours()*60*60+timeObj.getMinutes()*60+timeObj.getSeconds();
|
||
}
|
||
function evalFunc_dummy (evallist,is_in,checkbox,checkboxValue) {
|
||
this.evallist = evallist;
|
||
this.is_in = is_in;
|
||
this.checkboxValue = checkboxValue;
|
||
this.checkbox = checkbox;
|
||
}
|
||
function evalFunc_splitStr(theStr1, delim, index) {
|
||
var theStr = ''+theStr1;
|
||
var lengthOfDelim = delim.length;
|
||
sPos = -lengthOfDelim;
|
||
if (index<1) {index=1;}
|
||
for (a=1; a<index; a++) {
|
||
sPos = theStr.indexOf(delim, sPos+lengthOfDelim);
|
||
if (sPos==-1) {return null;}
|
||
}
|
||
ePos = theStr.indexOf(delim, sPos+lengthOfDelim);
|
||
if(ePos == -1) {ePos = theStr.length;}
|
||
return (theStr.substring(sPos+lengthOfDelim,ePos));
|
||
}
|
||
|