FundacionLQDVI_WebCongresos/www/components/com_sql2excel/assets/js/preview.js

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');
}