git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
352 lines
9.2 KiB
JavaScript
352 lines
9.2 KiB
JavaScript
// last selected Tab
|
|
var old_tab = null;
|
|
// styles for events
|
|
var styles = {
|
|
'over' : ['#ccc', 'pointer','rgb(0,0,0)'],
|
|
'out' : ['#ECE9D5', 'auto','rgb(0,0,0)'],
|
|
'click': ['rgb(255,255,255)', 'default','#222']
|
|
};
|
|
|
|
// handler for Tabs
|
|
function selTab( tab, type_select )
|
|
{
|
|
// method ignore for select Tab
|
|
if (tab.className != 'sel-tabs')
|
|
{
|
|
with (tab.style)
|
|
{
|
|
if (type_select == 1) // onMouseOver
|
|
{
|
|
// set background
|
|
backgroundColor = styles['over'][0];
|
|
// set cursor type
|
|
cursor = styles['over'][1];
|
|
// set color
|
|
color = styles['over'][2];
|
|
}
|
|
else if (type_select == 2) // onClick
|
|
{
|
|
if (old_tab)
|
|
{
|
|
// unset of class name
|
|
old_tab.className = '';
|
|
// reconstruction of default style
|
|
selTab( old_tab, 0 );
|
|
}
|
|
// set class name (for the selected Tab)
|
|
tab.className = 'sel-tabs';
|
|
// set background
|
|
backgroundColor = styles['click'][0];
|
|
// set cursor type
|
|
cursor = styles['click'][1];
|
|
// set color
|
|
color = styles['click'][2];
|
|
// save select tab
|
|
old_tab = tab;
|
|
}
|
|
else // onMouseOut
|
|
{
|
|
// set background
|
|
backgroundColor = styles['out'][0];
|
|
// set cursor type
|
|
cursor = styles['out'][1];
|
|
// set color
|
|
color = styles['out'][2];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Workbook Parameter Validation
|
|
// http://www.tneoh.zoneit.com/javascript/js_func.html
|
|
function validateParms(parmTypes,checkMulti)
|
|
{
|
|
var retVal=true;
|
|
if ( parmTypes != "" && parmTypes != null ) {
|
|
var parmArr = parmTypes.split('~@~');
|
|
for ( i=0;i<parmArr.length;i++) {
|
|
var parmVals = parmArr[i];
|
|
var parmTokens = parmVals.split(',');
|
|
if ( parmTokens.length == 3 ) {
|
|
var parmID = parmTokens[0];
|
|
var parmName = parmTokens[1];
|
|
var parmType = parmTokens[2];
|
|
var parmH = document.getElementById(parmID);
|
|
var currVal = parmH.value;
|
|
|
|
if ( parmH ) {
|
|
if ( parmType == "Integer" && !isInteger(trim(currVal)) ) {
|
|
alert("ERROR: Please enter a valid integer: '" + parmName + "'");
|
|
retVal=false;
|
|
} else if ( parmType == "UnsignedInteger" && !isUnsignedInteger(trim(currVal)) ) {
|
|
alert("ERROR: Please enter a positive integer: '" + parmName + "'");
|
|
retVal=false;
|
|
} else if ( parmType == "Real" && !isReal(currVal) ) {
|
|
alert("ERROR: Please enter a real number: '" + parmName + "'");
|
|
retVal=false;
|
|
} else if ( parmType == "UnsignedReal" && !isUnsignedReal(currVal) ) {
|
|
alert("ERROR: Please enter a positive real number: '" + parmName + "'");
|
|
retVal=false;
|
|
} else if ( parmType == "Email" && !isEmail(trim(currVal)) ) {
|
|
alert("ERROR: Please enter a valid email address: '" + parmName + "'");
|
|
retVal=false;
|
|
} else if ( parmType == "URL" && !isURL(trim(currVal)) ) {
|
|
alert("ERROR: Please enter a valid URL: '" + parmName + "'");
|
|
retVal=false;
|
|
} else if ( parmType == "Date" && !isDate(trim(currVal)) ) {
|
|
alert("ERROR: Please enter a valid date: '" + parmName + "'. Date format: YYYY-MM-DD");
|
|
retVal=false;
|
|
} else if ( parmType == "Username" && !isUsername(trim(currVal)) ) {
|
|
alert("ERROR: Please enter a valid username: '" + parmName + "'.");
|
|
retVal=false;
|
|
} else if ( parmType == "AlphaNum" && !isAlphaNum(trim(currVal)) ) {
|
|
alert("ERROR: Please enter a valid alphanumeric, [A-Z][0-9] : '" + parmName + "'.");
|
|
retVal=false;
|
|
} else if ( checkMulti && ( parmType == "ListMultiNum" || parmType == "ListMultiStr") ) {
|
|
var selectedItems = getSelected(parmH);
|
|
if (selectedItems.length == 0 ) {
|
|
alert("ERROR: Please make one or more selection : '" + parmName + "'.");
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return retVal;
|
|
}
|
|
|
|
function getSelected(elem) {
|
|
var selected = new Array();
|
|
var index = 0;
|
|
for (var intLoop=0; intLoop < elem.length; intLoop++) {
|
|
if (elem[intLoop].selected) {
|
|
index = selected.length;
|
|
selected[index] = new Object;
|
|
selected[index].value = elem[intLoop].value;
|
|
selected[index].index = intLoop;
|
|
}
|
|
}
|
|
return selected;
|
|
}
|
|
|
|
function formatSelected(sel, ticks) {
|
|
var strSel = "";
|
|
var strVal = "";
|
|
for (var item in sel) {
|
|
if ( sel[item].value==undefined ) {
|
|
strVal = "";
|
|
} else {
|
|
if ( ticks ) {
|
|
var sVal = sel[item].value;
|
|
sVal = sVal.replace(/'/g,"\'");
|
|
strVal = "'" + sVal + "'";
|
|
} else {
|
|
strVal = sel[item].value;
|
|
}
|
|
if ( strSel == "" ) {
|
|
strSel = strVal;
|
|
} else {
|
|
strSel += "," + strVal;
|
|
}
|
|
}
|
|
|
|
}
|
|
return strSel;
|
|
}
|
|
|
|
|
|
|
|
function isAlphaNum(s)
|
|
{
|
|
var numb = '0123456789';
|
|
var lwr = 'abcdefghijklmnopqrstuvwxyz';
|
|
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
var val = numb + lwr + upr;
|
|
|
|
if (s == "") return false;
|
|
for (i=0; i<s.length; i++) {
|
|
if (val.indexOf(s.charAt(i),0) == -1) return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
function isInteger(s) {
|
|
return (s.toString().search(/^-?[0-9]+$/) == 0);
|
|
}
|
|
|
|
function isUnsignedInteger(s) {
|
|
return (s.toString().search(/^[0-9]+$/) == 0);
|
|
}
|
|
|
|
function isReal(str) {
|
|
str = trim(str);
|
|
var reFloat = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
|
|
return reFloat.test( str )
|
|
}
|
|
|
|
function isUnsignedReal(str) {
|
|
str = trim(str);
|
|
var reFloat = /(^\d\d*\.\d*$)|(^\d\d*$)|(^\.\d\d*$)/;
|
|
return reFloat.test( str )
|
|
}
|
|
|
|
|
|
function isUsername(s) {
|
|
var reUser = /[\x00-\x1F\x7F<>"\'%&]/;
|
|
|
|
if ( reUser.test(s) ) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
function isEmail(argvalue) {
|
|
|
|
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;
|
|
|
|
var arrayString = argvalue.split("@");
|
|
|
|
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 isURL(argvalue) {
|
|
|
|
if (argvalue.indexOf(" ") != -1)
|
|
return false;
|
|
else if ( argvalue.indexOf("http://") == -1 && argvalue.indexOf("https://") == -1 )
|
|
return false;
|
|
else if (argvalue == "http://" || argvalue == "https://")
|
|
return false;
|
|
else if ( argvalue.indexOf("http://") > 0 || argvalue.indexOf("https://") > 0 )
|
|
return false;
|
|
|
|
argvalue = argvalue.substring(7, argvalue.length);
|
|
if (argvalue.indexOf(".") == -1)
|
|
return false;
|
|
else if (argvalue.indexOf(".") == 0)
|
|
return false;
|
|
else if (argvalue.charAt(argvalue.length - 1) == ".")
|
|
return false;
|
|
|
|
if (argvalue.indexOf("/") != -1) {
|
|
argvalue = argvalue.substring(0, argvalue.indexOf("/"));
|
|
if (argvalue.charAt(argvalue.length - 1) == ".")
|
|
return false;
|
|
}
|
|
|
|
if (argvalue.indexOf(":") != -1) {
|
|
if (argvalue.indexOf(":") == (argvalue.length - 1))
|
|
return false;
|
|
else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
|
|
return false;
|
|
argvalue = argvalue.substring(0, argvalue.indexOf(":"));
|
|
if (argvalue.charAt(argvalue.length - 1) == ".")
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
function isDate(s) {
|
|
|
|
var MonthDays = Array();
|
|
MonthDays[0] = 31;
|
|
MonthDays[1] = 0;
|
|
MonthDays[2] = 31;
|
|
MonthDays[3] = 30;
|
|
MonthDays[4] = 31;
|
|
MonthDays[5] = 30;
|
|
MonthDays[6] = 31;
|
|
MonthDays[7] = 31;
|
|
MonthDays[8] = 30;
|
|
MonthDays[9] = 31;
|
|
MonthDays[10] = 30;
|
|
MonthDays[11] = 31;
|
|
|
|
var daysInMonth;
|
|
|
|
|
|
s=trim(s);
|
|
var reDate = /^(\d{4})\-(\d{2})\-(\d{2})$/;
|
|
if ( reDate.test( s ) ) {
|
|
var aData = s.split('-');
|
|
|
|
var yearSelected = parseInt(aData[0], 10);
|
|
var monthSelected = parseInt(aData[1], 10);
|
|
var daySelected = parseInt(aData[2], 10);
|
|
|
|
if (isNaN(daySelected) || isNaN(monthSelected) || isNaN(yearSelected))
|
|
return false;
|
|
|
|
if (monthSelected == 2)
|
|
daysInMonth = (((yearSelected % 4 == 0) && ((!(yearSelected % 100 == 0)) || (yearSelected % 400 == 0))) ? 29 : 28 );
|
|
else
|
|
daysInMonth = MonthDays[monthSelected - 1];
|
|
|
|
|
|
if (daySelected < 1 || daySelected > daysInMonth)
|
|
return false;
|
|
if (monthSelected < 1 || monthSelected > 12)
|
|
return false;
|
|
if (yearSelected < 1)
|
|
return false;
|
|
|
|
return true;
|
|
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function isEmpty(s)
|
|
{
|
|
return ((s == null) || (s.length == 0))
|
|
}
|
|
|
|
function isDigit (c)
|
|
{
|
|
return ((c >= "0") && (c <= "9"))
|
|
}
|
|
|
|
|
|
function trim(str, chars) {
|
|
return ltrim(rtrim(str, chars), chars);
|
|
}
|
|
|
|
function ltrim(str, chars) {
|
|
chars = chars || "\\s";
|
|
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
|
|
}
|
|
|
|
function rtrim(str, chars) {
|
|
chars = chars || "\\s";
|
|
return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
|
|
}
|
|
|
|
|
|
function urlencode(str) {
|
|
return escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
|
|
} |