You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
690 lines
20 KiB
690 lines
20 KiB
/* |
|
Copyright (c) 2012-2017 Open Lab |
|
Permission is hereby granted, free of charge, to any person obtaining |
|
a copy of this software and associated documentation files (the |
|
"Software"), to deal in the Software without restriction, including |
|
without limitation the rights to use, copy, modify, merge, publish, |
|
distribute, sublicense, and/or sell copies of the Software, and to |
|
permit persons to whom the Software is furnished to do so, subject to |
|
the following conditions: |
|
|
|
The above copyright notice and this permission notice shall be |
|
included in all copies or substantial portions of the Software. |
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
*/ |
|
|
|
var muteAlertOnChange = false; |
|
|
|
|
|
// isRequired ---------------------------------------------------------------------------- |
|
|
|
//return true if every mandatory field is filled and highlight empty ones |
|
jQuery.fn.isFullfilled = function () { |
|
var canSubmit = true; |
|
var firstErrorElement = ""; |
|
|
|
this.each(function () { |
|
var theElement = $(this); |
|
theElement.removeClass("formElementsError"); |
|
//if (theElement.val().trim().length == 0 || theElement.attr("invalid") == "true") { //robicch 13/2/15 |
|
if (theElement.is("[required]") && theElement.val().trim().length == 0 || theElement.attr("invalid") == "true") { |
|
if (theElement.attr("type") == "hidden") { |
|
theElement = theElement.prevAll("#" + theElement.prop("id") + "_txt:first"); |
|
} else if (theElement.is("[withTinyMCE]")){ |
|
if (tinymce.activeEditor.getContent()=="") |
|
theElement=$("#"+theElement.attr("name")+"_tbl"); |
|
else |
|
return true;// in order to continue the loop |
|
} |
|
theElement.addClass("formElementsError"); |
|
canSubmit = false; |
|
|
|
if (firstErrorElement == "") |
|
firstErrorElement = theElement; |
|
} |
|
}); |
|
|
|
if (!canSubmit) { |
|
// get the tabdiv |
|
var theTabDiv = firstErrorElement.closest(".tabBox"); |
|
if (theTabDiv.length > 0) |
|
clickTab(theTabDiv.attr("tabId")); |
|
|
|
// highlight element |
|
firstErrorElement.effect("highlight", { color:"red" }, 1500); |
|
} |
|
return canSubmit; |
|
|
|
}; |
|
|
|
function canSubmitForm(formOrId) { |
|
//console.debug("canSubmitForm",formOrId); |
|
if (typeof formOrId != "object") |
|
formOrId=$("#" + formOrId); |
|
return formOrId.find(":input[required],:input[invalid=true]").isFullfilled(); |
|
} |
|
|
|
function showSavingMessage() { |
|
$("#savingMessage:hidden").fadeIn(); |
|
$("body").addClass("waiting"); |
|
$(window).resize(); |
|
} |
|
function hideSavingMessage() { |
|
$("#savingMessage:visible").fadeOut(); |
|
$("body").removeClass("waiting"); |
|
$(window).resize(); |
|
} |
|
|
|
|
|
|
|
/* Types Function */ |
|
|
|
function isValidURL(url) { |
|
var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; |
|
return RegExp.test(url); |
|
} |
|
|
|
function isValidEmail(email) { |
|
//var RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/; |
|
var RegExp = /^.+@\S+\.\S+$/; |
|
return RegExp.test(email); |
|
} |
|
|
|
function isValidInteger(n) { |
|
reg = new RegExp("^[-+]{0,1}[0-9]*$"); |
|
return reg.test(n) || isNumericExpression(n); |
|
} |
|
|
|
function isValidDouble(n) { |
|
var sep = Number.decimalSeparator; |
|
reg = new RegExp("^[-+]{0,1}[0-9]*[" + sep + "]{0,1}[0-9]*$"); |
|
return reg.test(n) || isNumericExpression(n); |
|
} |
|
|
|
function isValidTime(n) { |
|
return !isNaN(millisFromHourMinute(n)); |
|
} |
|
|
|
function isValidDurationDays(n) { |
|
return !isNaN(daysFromString(n)); |
|
} |
|
|
|
function isValidDurationMillis(n) { |
|
return !isNaN(millisFromString(n)); |
|
} |
|
|
|
function isNumericExpression(expr) { |
|
try { |
|
var a = eval(expr); |
|
return typeof(a) == 'number'; |
|
} catch (t) { |
|
return false; |
|
} |
|
|
|
} |
|
|
|
function getNumericExpression(expr) { |
|
var ret; |
|
try { |
|
var a = eval(expr); |
|
if (typeof(a) == 'number') |
|
ret = a; |
|
} catch (t) { |
|
} |
|
return ret; |
|
|
|
} |
|
|
|
/* |
|
supports almost all Java currency format e.g.: ###,##0.00EUR €#,###.00 #,###.00€ -$#,###.00 $-#,###.00 |
|
*/ |
|
function isValidCurrency(numStr) { |
|
//first try to convert format in a regex |
|
var regex = ""; |
|
var format = Number.currencyFormat + ""; |
|
|
|
var minusFound = false; |
|
var numFound = false; |
|
var currencyString = ""; |
|
var numberRegex = "[0-9\\" + Number.groupingSeparator + "]+[\\" + Number.decimalSeparator + "]?[0-9]*"; |
|
|
|
for (var i = 0; i < format.length; i++) { |
|
var ch = format.charAt(i); |
|
|
|
if (ch == "." || ch == "," || ch == "0") { |
|
//skip it |
|
if (currencyString != "") { |
|
regex = regex + "(?:" + RegExp.quote(currencyString) + ")?"; |
|
currencyString = ""; |
|
} |
|
|
|
} else if (ch == "#") { |
|
if (currencyString != "") { |
|
regex = regex + "(?:" + RegExp.quote(currencyString) + ")?"; |
|
currencyString = ""; |
|
} |
|
|
|
if (!numFound) { |
|
numFound = true; |
|
regex = regex + numberRegex; |
|
} |
|
|
|
} else if (ch == "-") { |
|
if (currencyString != "") { |
|
regex = regex + "(?:" + RegExp.quote(currencyString) + ")?"; |
|
currencyString = ""; |
|
} |
|
if (!minusFound) { |
|
minusFound = true; |
|
regex = regex + "[-]?"; |
|
} |
|
|
|
} else { |
|
currencyString = currencyString + ch; |
|
} |
|
} |
|
if (!minusFound) |
|
regex = "[-]?" + regex; |
|
|
|
if (currencyString != "") |
|
regex = regex + "(?:" + RegExp.quote(currencyString) + ")?"; |
|
|
|
regex = "^" + regex + "$"; |
|
|
|
var rg = new RegExp(regex); |
|
return rg.test(numStr) || isNumericExpression(numStr); |
|
} |
|
|
|
function getCurrencyValue(numStr) { |
|
if (!isValidCurrency(numStr)) |
|
return NaN; |
|
|
|
var ripul = numStr.replaceAll(Number.groupingSeparator, "").replaceAll(Number.decimalSeparator, "."); |
|
return getNumericExpression(ripul) || parseFloat(ripul.replace(/[^-0123456789.]/, "")); |
|
} |
|
|
|
|
|
function formatCurrency(numberString) { |
|
return formatNumber(numberString, Number.currencyFormat); |
|
} |
|
|
|
|
|
function formatNumber(numberString, format) { |
|
if (!format) |
|
format = "##0.00"; |
|
|
|
var dec = Number.decimalSeparator; |
|
var group = Number.groupingSeparator; |
|
var neg = Number.minusSign; |
|
|
|
var round = true; |
|
|
|
var validFormat = "0#-,."; |
|
|
|
// strip all the invalid characters at the beginning and the end |
|
// of the format, and we'll stick them back on at the end |
|
// make a special case for the negative sign "-" though, so |
|
// we can have formats like -$23.32 |
|
var prefix = ""; |
|
var negativeInFront = false; |
|
for (var i = 0; i < format.length; i++) { |
|
if (validFormat.indexOf(format.charAt(i)) == -1) { |
|
prefix = prefix + format.charAt(i); |
|
} else { |
|
if (i == 0 && format.charAt(i) == '-') { |
|
negativeInFront = true; |
|
} else { |
|
break; |
|
} |
|
} |
|
} |
|
var suffix = ""; |
|
for (var i = format.length - 1; i >= 0; i--) { |
|
if (validFormat.indexOf(format.charAt(i)) == -1) |
|
suffix = format.charAt(i) + suffix; |
|
else |
|
break; |
|
} |
|
|
|
format = format.substring(prefix.length); |
|
format = format.substring(0, format.length - suffix.length); |
|
|
|
// now we need to convert it into a number |
|
//while (numberString.indexOf(group) > -1) |
|
// numberString = numberString.replace(group, ''); |
|
//var number = new Number(numberString.replace(dec, ".").replace(neg, "-")); |
|
var number = new Number(numberString); |
|
|
|
|
|
var forcedToZero = false; |
|
if (isNaN(number)) { |
|
number = 0; |
|
forcedToZero = true; |
|
} |
|
|
|
// special case for percentages |
|
if (suffix == "%") |
|
number = number * 100; |
|
|
|
var returnString = ""; |
|
if (format.indexOf(".") > -1) { |
|
var decimalPortion = dec; |
|
var decimalFormat = format.substring(format.lastIndexOf(".") + 1); |
|
|
|
// round or truncate number as needed |
|
if (round) |
|
number = new Number(number.toFixed(decimalFormat.length)); |
|
else { |
|
var numStr = number.toString(); |
|
numStr = numStr.substring(0, numStr.lastIndexOf('.') + decimalFormat.length + 1); |
|
number = new Number(numStr); |
|
} |
|
|
|
var decimalValue = number % 1; |
|
var decimalString = new String(decimalValue.toFixed(decimalFormat.length)); |
|
decimalString = decimalString.substring(decimalString.lastIndexOf(".") + 1); |
|
|
|
for (var i = 0; i < decimalFormat.length; i++) { |
|
if (decimalFormat.charAt(i) == '#' && decimalString.charAt(i) != '0') { |
|
decimalPortion += decimalString.charAt(i); |
|
} else if (decimalFormat.charAt(i) == '#' && decimalString.charAt(i) == '0') { |
|
var notParsed = decimalString.substring(i); |
|
if (notParsed.match('[1-9]')) { |
|
decimalPortion += decimalString.charAt(i); |
|
} else { |
|
break; |
|
} |
|
} else if (decimalFormat.charAt(i) == "0") { |
|
decimalPortion += decimalString.charAt(i); |
|
} |
|
} |
|
returnString += decimalPortion; |
|
} else { |
|
number = Math.round(number); |
|
} |
|
var ones = Math.floor(number); |
|
if (number < 0) |
|
ones = Math.ceil(number); |
|
|
|
var onesFormat = ""; |
|
if (format.indexOf(".") == -1) |
|
onesFormat = format; |
|
else |
|
onesFormat = format.substring(0, format.indexOf(".")); |
|
|
|
var onePortion = ""; |
|
if (!(ones == 0 && onesFormat.substr(onesFormat.length - 1) == '#') || forcedToZero) { |
|
// find how many digits are in the group |
|
var oneText = new String(Math.abs(ones)); |
|
var groupLength = 9999; |
|
if (onesFormat.lastIndexOf(",") != -1) |
|
groupLength = onesFormat.length - onesFormat.lastIndexOf(",") - 1; |
|
var groupCount = 0; |
|
for (var i = oneText.length - 1; i > -1; i--) { |
|
onePortion = oneText.charAt(i) + onePortion; |
|
groupCount++; |
|
if (groupCount == groupLength && i != 0) { |
|
onePortion = group + onePortion; |
|
groupCount = 0; |
|
} |
|
} |
|
|
|
// account for any pre-data padding |
|
if (onesFormat.length > onePortion.length) { |
|
var padStart = onesFormat.indexOf('0'); |
|
if (padStart != -1) { |
|
var padLen = onesFormat.length - padStart; |
|
|
|
// pad to left with 0's or group char |
|
var pos = onesFormat.length - onePortion.length - 1; |
|
while (onePortion.length < padLen) { |
|
var padChar = onesFormat.charAt(pos); |
|
// replace with real group char if needed |
|
if (padChar == ',') |
|
padChar = group; |
|
onePortion = padChar + onePortion; |
|
pos--; |
|
} |
|
} |
|
} |
|
} |
|
|
|
if (!onePortion && onesFormat.indexOf('0', onesFormat.length - 1) !== -1) |
|
onePortion = '0'; |
|
|
|
returnString = onePortion + returnString; |
|
|
|
// handle special case where negative is in front of the invalid characters |
|
if (number < 0 && negativeInFront && prefix.length > 0) |
|
prefix = neg + prefix; |
|
else if (number < 0) |
|
returnString = neg + returnString; |
|
|
|
if (returnString.lastIndexOf(dec) == returnString.length - 1) { |
|
returnString = returnString.substring(0, returnString.length - 1); |
|
} |
|
returnString = prefix + returnString + suffix; |
|
return returnString; |
|
} |
|
|
|
|
|
//validation functions - used by textfield and datefield |
|
jQuery.fn.validateField = function () { |
|
var isValid = true; |
|
|
|
this.each(function () { |
|
var el = $(this); |
|
el.clearErrorAlert(); |
|
|
|
var value = el.val(); |
|
if (value) { |
|
var rett = true; |
|
var type = (el.attr('entryType')+"").toUpperCase(); |
|
var errParam; |
|
|
|
if (type == "INTEGER") { |
|
rett = isValidInteger(value); |
|
} else if (type == "DOUBLE") { |
|
rett = isValidDouble(value); |
|
} else if (type == "PERCENTILE") { |
|
rett = isValidDouble(value); |
|
} else if (type == "URL") { |
|
rett = isValidURL(value); |
|
} else if (type == "EMAIL") { |
|
rett = isValidEmail(value); |
|
} else if (type == "DURATIONMILLIS") { |
|
rett = isValidDurationMillis(value); |
|
} else if (type == "DURATIONDAYS") { |
|
rett = isValidDurationDays(value); |
|
} else if (type == "DATE") { |
|
rett = Date.isValid(value, el.attr("format"), true); |
|
if (!rett) |
|
errParam = el.attr("format"); |
|
} else if (type == "TIME") { |
|
rett = isValidTime(value); |
|
} else if (type == "CURRENCY") { |
|
rett = isValidCurrency(value); |
|
} |
|
|
|
if (!rett) { |
|
el.createErrorAlert(i18n.ERROR_ON_FIELD, i18n.INVALID_DATA + (errParam ? " " + errParam : "")); |
|
isValid=false; |
|
} |
|
|
|
|
|
//check limits minValue : maxValue |
|
if (rett && (el.attr("minValue") || el.attr("maxValue"))){ |
|
var val=value; |
|
var min=el.attr("minValue"); |
|
var max=el.attr("maxValue"); |
|
if (type == "INTEGER") { |
|
val=parseInt(value); |
|
min=parseInt(min); |
|
max=parseInt(max); |
|
} else if (type == "DOUBLE" || type == "PERCENTILE") { |
|
val=parseDouble(value); |
|
min=parseDouble(min); |
|
max=parseDouble(max); |
|
} else if (type == "URL") { |
|
val=value; |
|
} else if (type == "EMAIL") { |
|
val=value; |
|
} else if (type == "DURATIONMILLIS") { |
|
val=millisFromString(value); |
|
min=millisFromString(min); |
|
max=millisFromString(max); |
|
|
|
} else if (type == "DURATIONDAYS") { |
|
val=daysFromString(value); |
|
min=daysFromString(min); |
|
max=daysFromString(max); |
|
} else if (type == "DATE") { |
|
val=Date.parseString(value, el.attr("format"),true).getTime(); |
|
min=Date.parseString(min, el.attr("format"),true).getTime(); |
|
max=Date.parseString(max, el.attr("format"),true).getTime(); |
|
} else if (type == "TIME") { |
|
val = millisFromHourMinute(value); |
|
min = millisFromHourMinute(min); |
|
max = millisFromHourMinute(max); |
|
} else if (type == "CURRENCY") { |
|
val=getCurrencyValue(value); |
|
min=getCurrencyValue(min); |
|
max=getCurrencyValue(max); |
|
} |
|
|
|
if (el.attr("minValue") && val<min){ |
|
el.createErrorAlert(i18n.ERROR_ON_FIELD, i18n.OUT_OF_BOUDARIES + " ("+el.attr("minValue")+" : "+(el.attr("maxValue")?el.attr("maxValue"):"--")+")"); |
|
rett=false; |
|
isValid=false; |
|
|
|
$("body").trigger("error"); |
|
} |
|
|
|
if (rett && el.attr("maxValue") && val>max){ |
|
el.createErrorAlert(i18n.ERROR_ON_FIELD, i18n.OUT_OF_BOUDARIES + " ("+(el.attr("minValue")?el.attr("minValue"):"--")+" : "+el.attr("maxValue")+")"); |
|
rett=false; |
|
isValid=false; |
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
return isValid; |
|
}; |
|
|
|
jQuery.fn.clearErrorAlert = function () { |
|
this.each(function () { |
|
var el = $(this); |
|
el.removeAttr("invalid").removeClass("formElementsError"); |
|
$("#" + el.prop("id") + "error").remove(); |
|
}); |
|
return this; |
|
}; |
|
|
|
jQuery.fn.createErrorAlert = function (errorCode, message) { |
|
this.each(function () { |
|
var el = $(this); |
|
el.attr("invalid", "true").addClass("formElementsError"); |
|
if ($("#" + el.prop("id") + "error").length <= 0) { |
|
var errMess = (errorCode ? errorCode : "") + ": " + (message ? message : ""); |
|
var err = "<span class='formElementExclamation' id=\"" + el.prop("id") + "error\" error='1'"; |
|
err += " onclick=\"alert($(this).attr('title'))\" border='0' align='absmiddle'> "; |
|
err += "</span>\n"; |
|
err = $(err); |
|
err.prop("title", errMess); |
|
el.after(err); |
|
} |
|
}); |
|
return this; |
|
}; |
|
|
|
|
|
// button submit support BEGIN ------------------ |
|
|
|
function saveFormValues(idForm) { |
|
var formx = obj(idForm); |
|
formx.setAttribute("savedAction", formx.action); |
|
formx.setAttribute("savedTarget", formx.target); |
|
var el = formx.elements; |
|
for (i = 0; i < el.length; i++) { |
|
if (el[i].getAttribute("savedValue") != null) { |
|
el[i].setAttribute("savedValue", el[i].value); |
|
} |
|
} |
|
} |
|
|
|
function restoreFormValues(idForm) { |
|
var formx = obj(idForm); |
|
formx.action = formx.getAttribute("savedAction"); |
|
formx.target = formx.getAttribute("savedTarget"); |
|
var el = formx.elements; |
|
for (i = 0; i < el.length; i++) { |
|
if (el[i].getAttribute("savedValue") != null) { |
|
el[i].value = el[i].getAttribute("savedValue"); |
|
} |
|
} |
|
} |
|
|
|
function changeActionAndSubmit(action,command){ |
|
var f=$("form:first"); |
|
f.prop("action",action); |
|
f.find("[name=CM]").val(command); |
|
f.submit(); |
|
} |
|
|
|
|
|
|
|
// textarea limit size ------------------------------------------------- |
|
function limitSize(ob) { |
|
if (ob.getAttribute("maxlength")) { |
|
var ml =parseInt(ob.getAttribute("maxlength")); |
|
var val = ob.value;//.replace(/\r\n/g,"\n"); |
|
if (val.length > ml) { |
|
ob.value = val.substr(0, ml); |
|
$(ob).createErrorAlert("Error",i18n.ERR_FIELD_MAX_SIZE_EXCEEDED); |
|
} else { |
|
$(ob).clearErrorAlert(); |
|
} |
|
} |
|
return true; |
|
} |
|
|
|
|
|
// verify before unload BEGIN ---------------------------------------------------------------------------- |
|
|
|
function alertOnUnload(container) { |
|
//console.debug("alertOnUnload",container,muteAlertOnChange); |
|
if (!muteAlertOnChange) { |
|
|
|
//first try to call a function eventually defined on the page |
|
if (typeof(managePageUnload) == "function") |
|
managePageUnload(); |
|
|
|
container=container||$("body"); |
|
var inps= $("[alertonchange=true]",container).find("[oldValue=1]"); |
|
for (var j = 0; j < inps.length; j++) { |
|
var anInput = inps.eq(j); |
|
//console.debug(j,anInput,anInput.isValueChanged()) |
|
var oldValue = anInput.getOldValue() + ""; |
|
if (!('true' == '' + anInput.attr('excludeFromAlert'))) { |
|
if (anInput.attr("maleficoTiny")) { |
|
if (tinymce.EditorManager.get(anInput.prop("id")).isDirty()) { |
|
return i18n.FORM_IS_CHANGED + " \"" + anInput.prop("name") + "\""; |
|
} |
|
|
|
} else if (anInput.isValueChanged()) { |
|
var inputLabel = $("label[for='" + anInput.prop("id") + "']").text(); //use label element |
|
inputLabel = inputLabel ? inputLabel : anInput.prop("name"); |
|
return i18n.FORM_IS_CHANGED + " \"" + inputLabel + "\""; |
|
} |
|
} |
|
} |
|
} |
|
return undefined; |
|
} |
|
|
|
function canILeave(){ |
|
var ret = window.onbeforeunload(); |
|
if (typeof(ret)!="undefined" && !confirm(ret+" \n"+i18n.PROCEED)) |
|
return false; |
|
else |
|
return true; |
|
} |
|
|
|
// ---------------------------------- oldvalues management |
|
// update all values selected |
|
jQuery.fn.updateOldValue = function () { |
|
this.each(function () { |
|
var el = $(this); |
|
var val=(el.is(":checkbox,:radio")?el.prop("checked"):el.val())+""; |
|
el.data("_oldvalue", val); |
|
}); |
|
return this; |
|
}; |
|
|
|
// return true if at least one element has changed |
|
jQuery.fn.isValueChanged = function () { |
|
var ret = false; |
|
this.each(function () { |
|
var el = $(this); |
|
var val=(el.is(":checkbox,:radio")?el.prop("checked"):el.val())+""; |
|
if (val != el.data("_oldvalue") + "") { |
|
//console.debug("io sono diverso "+el.prop("id")+ " :"+el.val()+" != "+el.data("_oldvalue")); |
|
ret = true; |
|
return false; |
|
} |
|
}); |
|
return ret; |
|
}; |
|
|
|
jQuery.fn.getOldValue = function () { |
|
return $(this).data("_oldvalue"); |
|
}; |
|
|
|
jQuery.fn.fillJsonWithInputValues = function (jsonObject) { |
|
var inputs = this.find(":input"); |
|
$.each(inputs.serializeArray(),function(){ |
|
if (this.name) { |
|
jsonObject[this.name] = this.value; |
|
} |
|
}); |
|
|
|
inputs.filter(":checkbox[name]").each(function () { |
|
var el = $(this); |
|
jsonObject[el.attr("name")] = el.is(":checked") ? "yes" : "no"; |
|
|
|
}) |
|
|
|
return this; |
|
}; |
|
|
|
|
|
|
|
function enlargeTextArea(immediate) { |
|
//console.debug("enlargeTextArea",immediate); |
|
var el = $(this); |
|
|
|
var delay=immediate===true?1:300; |
|
el.stopTime("taResizeApply"); |
|
el.oneTime(delay,"taResizeApply",function(){ |
|
|
|
var miH = el.is("[minHeight]") ? parseInt(el.attr("minHeight")) : 30; |
|
var maH = el.is("[maxHeight]") ? parseInt(el.attr("maxHeight")) : 400; |
|
var inc = el.is("[lineHeight]") ? parseInt(el.attr("lineHeight")) : 30; |
|
|
|
//si copiano nel css per sicurezza |
|
el.css({maxHeight:maH,minHeight:miH}); |
|
|
|
var domEl = el.get(0); |
|
var pad = el.outerHeight()-el.height(); |
|
//devo allargare |
|
if (domEl.scrollHeight>el.outerHeight() && el.outerHeight()<maH){ |
|
var nh=domEl.scrollHeight-pad + inc; |
|
nh=nh>maH-pad?maH-pad:nh; |
|
el.height(nh); |
|
} else if (el.height()>miH){ |
|
//devo stringere |
|
el.height(el.height()-inc); |
|
|
|
while(el.outerHeight()-domEl.scrollHeight > 0 && el.height()>miH){ |
|
el.height(el.height()-inc); |
|
} |
|
var newH=domEl.scrollHeight-pad +inc; |
|
//newH=newH<minH?minH:newH; |
|
el.height(newH); |
|
|
|
} |
|
el.stopTime("winResize"); |
|
}); |
|
|
|
}
|
|
|