164 lines
4.5 KiB
JavaScript
164 lines
4.5 KiB
JavaScript
/**
|
|
* @copyright Copyright (C) 2006-2008 City of Bloomington, Indiana. All rights reserved.
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.txt
|
|
* @author Cliff Ingham <inghamn@bloomington.in.gov>
|
|
*/
|
|
var FRAMEWORK = {};
|
|
|
|
/* A handy function for doing pop-up confirmations when deleting something */
|
|
FRAMEWORK.deleteConfirmation = function (url)
|
|
{
|
|
if (confirm("Are you really sure you want to delete this?\n\nOnce deleted it will be gone forever."))
|
|
{
|
|
document.location.href = url;
|
|
return true;
|
|
}
|
|
else { return false; }
|
|
};
|
|
|
|
/**
|
|
* Used for navigating between multiple forms that contain information
|
|
* for one object, and are displayed as tabs. Each of the forms must have
|
|
* a hidden field for the tab and action, each with the appropriate id.
|
|
* Also each of the forms must use the same id in the form tag
|
|
* @param id form The id of the form tag
|
|
* @param string tab The name of the next tab to display
|
|
* @param string action The function to call in the controller for the forms
|
|
*/
|
|
FRAMEWORK.processTabbedForm = function (form,tab,action)
|
|
{
|
|
if (action === 'save') { document.getElementById('continue').value = 'false'; }
|
|
document.getElementById('tab').value = tab;
|
|
document.getElementById('action').value = action;
|
|
document.getElementById(form).submit();
|
|
};
|
|
|
|
/* The following function creates an XMLHttpRequest object useful for doing AJAX stuff */
|
|
FRAMEWORK.getXMLHttpRequestObject = function ()
|
|
{
|
|
var request;
|
|
var browser = navigator.appName;
|
|
|
|
if (browser === "Microsoft Internet Explorer") { request = new ActiveXObject("Microsoft.XMLHTTP"); }
|
|
else { request = new XMLHttpRequest(); }
|
|
|
|
return request;
|
|
};
|
|
|
|
FRAMEWORK.getFormValues = function (form)
|
|
{
|
|
var params = "";
|
|
|
|
for(var i=0; i<form.elements.length; i++)
|
|
{
|
|
switch(form.elements[i].type)
|
|
{
|
|
case "text":
|
|
params += form.elements[i].name + "=" + escape(form.elements[i].value) + ";";
|
|
break;
|
|
|
|
case "select-one":
|
|
params += form.elements[i].name + "=" + form.elements[i].options[form.elements[i].selectedIndex].value + ";";
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Remove the trailing semicolon before returning
|
|
return params.substr(0,(params.length - 1));
|
|
};
|
|
|
|
/**
|
|
* Limits a given form field to a given number of characters
|
|
* @param field The DOM element for the field to limit
|
|
* @param maxNumChars The maximum number of characters you want to allow
|
|
*/
|
|
FRAMEWORK.limit = function (field,maxNumChars)
|
|
{
|
|
if (field.value.length > maxNumChars)
|
|
{
|
|
field.value = field.value.substring(0,maxNumChars);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* A Date Picker built off the YUI Calendar
|
|
* This requires the YUI Toolkit
|
|
* @param element The form input to put the chosen date
|
|
*/
|
|
FRAMEWORK.calendarInit = true;
|
|
FRAMEWORK.popupCalendar = function (element)
|
|
{
|
|
if (!document.getElementById("popupDatePicker"))
|
|
{
|
|
var div = document.createElement("div");
|
|
div.setAttribute("id","popupDatePicker");
|
|
div.setAttribute("class","yui-skin-sam");
|
|
element.form.appendChild(div);
|
|
}
|
|
|
|
FRAMEWORK.dateField = element;
|
|
|
|
if (FRAMEWORK.calendarInit)
|
|
{
|
|
FRAMEWORK.calendarInit = false;
|
|
FRAMEWORK.popupDatePicker = new YAHOO.widget.Calendar("popupDatePicker",{"close":true});
|
|
FRAMEWORK.popupDatePicker.selectEvent.subscribe(FRAMEWORK.dateSelectionHandler,FRAMEWORK.popupDatePicker,true);
|
|
}
|
|
else
|
|
{
|
|
if (element.value != "")
|
|
{
|
|
FRAMEWORK.popupDatePicker.select(element.value);
|
|
dates = FRAMEWORK.popupDatePicker.getSelectedDates();
|
|
if (dates.length > 0)
|
|
{
|
|
date = dates[0];
|
|
FRAMEWORK.popupDatePicker.cfg.setProperty("pagedate",(date.getMonth()+1 + "/" + date.getFullYear()));
|
|
}
|
|
else { alert("Invalid date"); }
|
|
}
|
|
}
|
|
|
|
var xy = YAHOO.util.Dom.getXY(element);
|
|
xy[0] += 20;
|
|
xy[1] += 20;
|
|
YAHOO.util.Dom.setXY ("popupDatePicker", xy, false);
|
|
|
|
|
|
FRAMEWORK.popupDatePicker.render();
|
|
FRAMEWORK.popupDatePicker.show();
|
|
}
|
|
|
|
FRAMEWORK.dateSelectionHandler = function (type,args,obj)
|
|
{
|
|
FRAMEWORK.dateField.value = args[0][0][1] + "/" + args[0][0][2] + "/" + args[0][0][0];
|
|
FRAMEWORK.popupDatePicker.hide();
|
|
}
|
|
|
|
/**
|
|
* Makes sure dates are correct. Returns false on dates like Feb 30
|
|
* The months are zero based, so January is 0 and December is 11
|
|
*
|
|
* @param int month (0=Jan, 11=Dec)
|
|
* @param int day
|
|
* @param int year
|
|
*/
|
|
FRAMEWORK.validateDate = function (month,day,year)
|
|
{
|
|
var date = new Date(year,month,day);
|
|
|
|
if (year != date.getFullYear()) {
|
|
alert('Year is not valid!');
|
|
return false;
|
|
}
|
|
if (month != date.getMonth()) {
|
|
alert('Month is not valid!');
|
|
return false;
|
|
}
|
|
if(day != date.getDate()) {
|
|
alert('Day is not valid!');
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|