/*Copyright Mihai Bazon, 2002, 2003|http://dynarch.com/mishoo/
 * ---------------------------------------------------------------------------
 * The DHTML Calendar
 * Details and latest version at:
 * http://dynarch.com/mishoo/calendar.epl
 * This script is distributed under the GNU Lesser General Public License.
 * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
 */

Calendar.setup=function (params){
function param_default(pname, def){if(typeof params[pname]=="undefined"){params[pname]=def; }};
param_default("inputField",null);
param_default("displayArea",null);
param_default("button",null);
param_default("eventName","click");
param_default("ifFormat","%Y/%m/%d");
param_default("daFormat","%Y/%m/%d");
param_default("singleClick",true);
param_default("disableFunc",null);
param_default("dateStatusFunc",params["disableFunc"]);
param_default("firstDay",0);
param_default("align","Br");
param_default("range",[1900, 2999]);
param_default("weekNumbers",true);
param_default("flat",null);
param_default("flatCallback",null);
param_default("onSelect",null);
param_default("onClose",null);
param_default("onUpdate",null);
param_default("date",null);
param_default("showsTime",false);
param_default("timeFormat","24");
param_default("electric",true);
param_default("step",2);
param_default("position",null);
param_default("cache",false);
param_default("showOthers",false);
var tmp=["inputField","displayArea","button"];
for(var i in tmp){
if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}
if(!(params.flat||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\nNothing to setup (no fields found).Please check your code");
return false;}
function onSelect(cal){
var p=cal.params;
var update=(cal.dateClicked||p.electric);
if(update&&p.flat){if(typeof p.flatCallback=="function"){p.flatCallback(cal);}
else{alert("No flatCallback given -- doing nothing.");return false;}}
if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);
if(typeof p.inputField.onchange=="function"){p.inputField.onchange();}}
if(update&&p.displayArea){p.displayArea.innerHTML=cal.date.print(p.daFormat);}
if(update&&p.singleClick&&cal.dateClicked){cal.callCloseHandler();}
if(update&&typeof p.onUpdate=="function"){p.onUpdate(cal);}};
if(params.flat != null){if(typeof params.flat=="string"){
params.flat=document.getElementById(params.flat);}
if(!params.flat){alert("Calendar.setup:\nFlat specified but can't find parent.");
return false;}
var cal=new Calendar(params.firstDay, params.date, params.onSelect||onSelect);
cal.showsTime=params.showsTime;
cal.time24=(params.timeFormat=="24");
cal.params=params;
cal.weekNumbers=params.weekNumbers;
cal.setRange(params.range[0], params.range[1]);
cal.setDateStatusHandler(params.dateStatusFunc);
cal.create(params.flat);
cal.show();
return false;}
var triggerEl=params.button||params.displayArea||params.inputField;
triggerEl["on" + params.eventName]=function(){
var dateEl=params.inputField||params.displayArea;
var dateFmt=params.inputField ? params.ifFormat : params.daFormat;
var mustCreate=false;
var cal=window.calendar;
if(!(cal&&params.cache)){
window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide(); });
cal.showsTime=params.showsTime;
cal.time24=(params.timeFormat=="24");
cal.weekNumbers=params.weekNumbers;
mustCreate=true;}
else{if(params.date){cal.setDate(params.date);cal.hide();}}
cal.showsOtherMonths=params.showOthers;
cal.yearStep=params.step;
cal.setRange(params.range[0], params.range[1]);
cal.params=params;
cal.setDateStatusHandler(params.dateStatusFunc);
cal.setDateFormat(dateFmt);
if(mustCreate){cal.create();}
cal.parseDate(dateEl.value||dateEl.innerHTML);
cal.refresh();
if(!params.position){cal.showAtElement(params.button||params.displayArea||params.inputField, params.align);}
else{cal.showAt(params.position[0], params.position[1]);}
return false;
};
};




