blob: 81559377fbabc18769f844368104a01f6e28cef8 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
/*
* This file is dependend upon /click/control.js functions.
*/
/* Ensure Click namespace exists */
if ( typeof Click == 'undefined' )
Click = {};
/* Validate Functions */
function validateCreditCardField(id, typeId, required, minLength, maxLength, msgs){
var msg = validateTextField(id, required, minLength, maxLength, msgs);
if(msg){
return msg;
} else {
var field = document.getElementById(id);
var value = field.value;
var type = document.getElementById(typeId).value;
if(value.length > 0){
// strip
var buffer = '';
for(var i=0;i<value.length;i++){
var c = value.charAt(i);
if(c != '=' && c != ' '){
buffer = buffer + c;
}
}
value = buffer;
var length = value.length;
if(length < 13){
setFieldErrorColor(field);
return msgs[3];
}
var firstdig = value.charAt(0);
var seconddig = value.charAt(1);
var isValid = false;
if(type=='VISA'){
isValid = ((length == 16) || (length == 13)) && (firstdig == '4');
}
if(type=='MASTER'){
isValid = (length == 16) && (firstdig == '5') && ("12345".indexOf(seconddig) >= 0);
}
if(type=='AMEX'){
isValid = (length == 15) && (firstdig == '3') && ("47".indexOf(seconddig) >= 0);
}
if(type=='DINERS'){
isValid = (length == 14) && (firstdig == '3') && ("068".indexOf(seconddig) >= 0);
}
if(type=='DISCOVER'){
isValid = (length == 16) && value.startsWith("6011");
}
if (!isValid) {
setFieldErrorColor(field);
return msgs[3];
}
}
// no error
setFieldValidColor(field);
return null;
}
}
function validateEmailField (id, required, minLength, maxLength, msgs){
var msg = validateTextField(id, required, minLength, maxLength, msgs);
if (msg) {
return msg;
} else {
var field = document.getElementById(id);
var value = field.value;
var length = value.length;
if(length > 0){
var index = value.indexOf("@");
if (index < 1 || index == length - 1) {
setFieldErrorColor(field);
return msgs[3];
}
if (!isLetterOrDigit(value.charAt(0))) {
setFieldErrorColor(field);
return msgs[3];
}
if (!isLetterOrDigit(value.charAt(length - 1))) {
setFieldErrorColor(field);
return msgs[3];
}
}
}
setFieldValidColor(field);
return null;
}
function validateNumberField(id, required, minValue, maxValue, msgs){
var field = document.getElementById(id);
if(field){
var value = field.value;
if (value.length == 0) {
if(required){
setFieldErrorColor(field);
return msgs[0];
}
} else {
if (value > maxValue){
setFieldErrorColor(field);
return msgs[2];
} else if (value < minValue){
setFieldErrorColor(field);
return msgs[1];
}
}
setFieldValidColor(field);
return null;
} else {
return 'Field ' + id + ' not found.';
}
}
function validatePickList(id, required, msgs){
var field = document.getElementById(id);
if(field){
if (field.options.length == 0) {
if(required){
setFieldErrorColor(field);
return msgs[0];
}
}
setFieldValidColor(field);
return null;
} else {
return 'Field ' + id + ' not found.';
}
}
function validateRegexField(id, required, minLength, maxLength, regex, msgs){
var msg = validateTextField(id, required, minLength, maxLength, msgs);
if (msg) {
return msg;
} else {
var field = document.getElementById(id);
if (field.value.length == 0 || field.value.match(new RegExp(regex))) {
setFieldValidColor(field);
return null;
} else {
setFieldErrorColor(field);
return msgs[3];
}
}
return null;
}
/* Misc Functions */
function initMenu() {
if (document.all && document.getElementById) {
var navRoot = document.getElementById("dmenu");
if (navRoot) {
for (i = 0; i < navRoot.childNodes.length; i++) {
var node = navRoot.childNodes[i];
if (node.nodeName == "LI") {
node.onmouseover = function() {
this.className += " over";
}
node.onmouseout = function() {
this.className = this.className.replace(" over", "");
}
}
}
}
}
}
function isLetter (c){
return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}
function isDigit (c){
return ((c >= "0") && (c <= "9"))
}
function isLetterOrDigit (c){
return (isLetter(c) || isDigit(c))
}
function pickListMove(from, to, hidden, isSelected){
var values = new Object();
for(var i=0;i<from.options.length;i++){
if(from.options[i].selected){
values[from.options[i].value] = true;
}
}
pickListMoveItem(from, to, values, hidden, isSelected);
}
function pickListMoveAll(from, to, hidden, isSelected){
var values = new Object();
for(i=0; i<from.options.length; i++){
values[from.options[i].value] = true;
}
pickListMoveItem(from, to, values, hidden, isSelected);
}
function pickListMoveItem(from, to, values, hidden, isSelected){
for(var i=0; i<hidden.options.length; i++){
if(values[hidden.options[i].value]){
hidden.options[i].selected = isSelected;
}
}
for(var i=0; i<from.options.length; i++){
if(values[from.options[i].value]){
from.options[i] = null;
i--;
}
}
var toIndex = 0;
for(var i=0; i<hidden.options.length; i++){
if(hidden.options[i].selected == isSelected){
to.options[toIndex] = new Option(hidden.options[i].text, hidden.options[i].value);
toIndex++;
}
}
}
/**
* Define the SubmitLink action. This function creates hidden fields for
* each SubmitLink parameter and submits the form.
*
* @return false to prevent the link default action
*/
Click.submitLinkAction = function(link, formName) {
var params=Click.getUrlParams(link.href);
if (params == null) {
return false;
}
var form = document.getElementById(formName);
if(form == null) {
return false;
}
for(var i=0; i<params.length; i++){
var param=params[i];
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", param.name);
input.setAttribute("value", param.value);
form.appendChild(input);
}
form.submit();
return false;
}
/**
* Return the url parameters as an array of key/value pairs or null
* if no parameters can be extracted.
*/
Click.getUrlParams = function(url) {
if (url == null || url == '' || url == 'undefined') {
return null;
}
url = unescape(url);
var start = url.indexOf('?')
if (start == -1) {
return null;
}
url=url.substring(start + 1);
var pairs=url.split("&");
var params = new Array();
for (var i=0;i<pairs.length;i++) {
var param = new Object();
var pos = pairs[i].indexOf('=');
if (pos >= 0) {
param.name = pairs[i].substring(0,pos);
param.value = pairs[i].substring(pos+1);
params.push(param);
}
}
return params;
};