var ifTools = new Object();
ifTools.getObject = function(name)
{
	try {
		return this[name];
	} catch(e) 
	{
		alert(name+' ifTools Object Not Found!');
	}
}

/* PAGER */
function ifToolsPager(name, params)
{
	this.name = name;
	this.settings = params;
	ifTools[name] = this;
	
	this.settings.useMaint = odef(this.settings.useMaint, true);
	this.settings.useMaintEx = odef(this.settings.useMaintEx, false);
}

ifToolsPager.prototype.setOffset = function(page, offset)
{
	form = this.settings["form"];

	frmiForms[form].setHidden('pager['+this.name+'][page]', page);
	frmiForms[form].setHidden('pager['+this.name+'][offset]', offset);
	
	if (this.settings.useMaintEx)
		maintActions[this.settings.useMaintEx].doAction(this.settings["setOffsetAction"], form);
	else if (this.settings.useMaint) {
		try {
			maintActions.activeAction.doAction(this.settings["setOffsetAction"], form);
		} catch(e) {
			maintSetAction(frmiForms[form].getForm(), this.settings["setOffsetAction"], 1, true, false);
		}
	} else
		frmiForms[form].submit();
}
ifToolsPager.prototype.jumpPage = function()
{
	form = this.settings["form"];

	j = frmiForms[form].getValue('pager['+this.name+'][jump]');
	
	if (j == '')
		return;

	j--;
	mp = this.settings["maxpages"];
	wind = this.settings["window"];
	
	if (j < 0)
		j = 0;
	if (j >= mp)
		j = (mp-1);
		
	o = j*this.settings["step"];
	
	if (j>(mp-wind))
		j = mp < wind ? 0:mp-wind;

	this.setOffset(j,o);
}


/* LIST */
function ifToolsList(name, params)
{
	this.name = name;
	this.settings = params;
	ifTools[name] = this;
}

ifToolsList.prototype.setPosition = function(dir)
{
	form = this.settings["form"];
	
	frmiForms[form].setHidden('list['+this.name+'][pdir]', dir);
	frmiForms[form].setHidden('list[_]', this.name);
	if (this.settings["useMaintEx"])
		maintActions[this.settings["useMaintEx"]].doAction(this.settings["setPositionAction"], form);
	else {
		try {
			maintActions.activeAction.doAction(this.settings["setPositionAction"], form);
		} catch(e) {
			maintSetAction(frmiForms[form].getForm(), this.settings["setPositionAction"], 1, true, false);
		}
	}
}

ifToolsList.prototype.setListView = function()
{
	form = this.settings["form"];

	frmiForms[form].setHidden('list[_]', this.name);
	if (this.settings["useMaintEx"])
		maintActions[this.settings["useMaintEx"]].doAction(this.settings["setListViewAction"], form);
	else {
		try {
			maintActions.activeAction.doAction(this.settings["setListViewAction"], form);
		} catch(e) {
			maintSetAction(frmiForms[form].getForm(), this.settings["setListViewAction"], 1, true, false);
		}
	}
}

ifToolsList.prototype.setListItems = function()
{
	form = this.settings["form"];

	frmiForms[form].setHidden('list[_]', this.name);
	if (this.settings["useMaintEx"])
		maintActions[this.settings["useMaintEx"]].doAction(this.settings["setListItemsAction"], form);
	else {
		try {
			maintActions.activeAction.doAction(this.settings["setListItemsAction"], form);
		} catch(e) {
			maintSetAction(frmiForms[form].getForm(), this.settings["setListItemsAction"], 1, true, false);
		}
	}
}

ifToolsList.prototype.setItemsStatus = function()
{
	form = this.settings["form"];

	frmiForms[form].setHidden('list[_]', this.name);
	if (this.settings["useMaintEx"])
		maintActions[this.settings["useMaintEx"]].doAction(this.settings["setItemsStatusAction"], form);
	else {
		try {
			maintActions.activeAction.doAction(this.settings["setItemsStatusAction"], form);
		} catch(e) {
			maintSetAction(frmiForms[form].getForm(), this.settings["setItemsStatusAction"], 1, true, false);
		}
	}
}

ifToolsList.prototype.moveItems = function()
{
	form = this.settings["form"];

	frmiForms[form].setHidden('list[_]', this.name);
	if (this.settings["useMaintEx"])
		maintActions[this.settings["useMaintEx"]].doAction(this.settings["moveItemsAction"], form);
	else {
		try {
			maintActions.activeAction.doAction(this.settings["moveItemsAction"], form);
		} catch(e) {
			maintSetAction(frmiForms[form].getForm(), this.settings["moveItemsAction"], 1, true, false);
		}
	}

}

ifToolsList.prototype.deleteItems = function(alertText)
{
	form = this.settings["form"];

	if (!alertText || confirm(alertText)) { 
		frmiForms[form].setHidden('list[_]', this.name);
		if (this.settings["useMaintEx"])
			maintActions[this.settings["useMaintEx"]].doAction(this.settings["deleteItemsAction"], form);
		else {
			try {
				maintActions.activeAction.doAction(this.settings["deleteItemsAction"], form);
			} catch(e) {
				maintSetAction(frmiForms[form].getForm(), this.settings["deleteItemsAction"], 1, true, false);
			}
		}
	}
}

ifToolsList.prototype.userFuncAlert = function(alertText, action, mode)
{
	form = this.settings["form"];

	if (!alertText || confirm(alertText)) { 
		frmiForms[form].setHidden('list[_]', this.name);
		if (this.settings["useMaintEx"])
			maintActions[this.settings["useMaintEx"]].doAction(action, form);
		else {
			try {
				maintActions.activeAction.doAction(action, form);
			} catch(e) {
				maintSetAction(frmiForms[form].getForm(), action, odef(mode, 1), true, false);
			}
		}
	}
}

ifToolsList.prototype.userFunc = function(action, mode)
{
	this.userFuncAlert('', action, mode);
}

ifToolsList.prototype.setChecks = function(cbobj)
{
	iname = 'cb_list['+this.name+'][rows]';
	for(i=0; i<cbobj.form.elements.length; i++)
	{
		e = cbobj.form.elements[i];
		if (e.name.substr(0,iname.length+1) == (iname+'['))
		{
			e.checked = cbobj.checked;

			if (e.onclick)
				e.onclick();
		}
	}
}

ifToolsList.prototype.invertChecks = function()
{
	form = frmiForms[this.settings["form"]].getForm();
	iname = 'cb_list['+this.name+'][rows]';
	for(i=0; i<form.elements.length; i++)
	{
		e = form.elements[i];
		if (e.name.substr(0,iname.length+1) == (iname+'['))
		{
			e.checked = !e.checked;

			if (e.onclick)
				e.onclick();
		}
	}
}


/* ORDERING */
function ifToolsOrder(name, params)
{
	this.name = name;
	this.settings = params;
	this.columns = new Object();
	ifTools[name] = this;
}

ifToolsOrder.prototype.addColumn = function(id, params)
{
	var col = new Object();
	col.settings = params;
	this.columns[id] = col;
}

ifToolsOrder.prototype.chOrder = function(id)
{
	var col = this.columns[id];
	
	dir = col.settings['direction'];
	
	if (dir == 'asc')
		col.settings['direction'] = 'desc';
	else if ((dir == 'desc') || (dir == 'noord') || !dir)
		col.settings['direction'] = 'asc';
		
	if (this.settings["single"])
	{
		this.clearOther(id);
		col.settings['nr'] = 1;
	}

	form = this.settings["form"];

	frmiForms[form].setHidden('order['+this.name+'][fields]['+id+'][dir]', col.settings['direction']);
	frmiForms[form].setHidden('order['+this.name+'][fields]['+id+'][nr]', col.settings['nr']);
	try {
		maintActions.activeAction.doAction(this.settings["chOrderAction"], form);
	} catch(e) {
		maintSetAction(frmiForms[form].getForm(), this.settings["chOrderAction"], 1, true, false);
	}
}
ifToolsOrder.prototype.clearOther = function(id)
{
	form = this.settings["form"];
	
	for(colid in this.columns)
	{
		if (colid != id)
		{
			frmiForms[form].setHidden('order['+this.name+'][fields]['+colid+'][dir]', '');
			frmiForms[form].setHidden('order['+this.name+'][fields]['+colid+'][nr]', '');
		}
	}
}

/* TABS */
function ifToolsTab(name, params)
{
	this.name = name;
	this.settings = params;
	this.tabs = new Object();
	ifTools[name] = this;
}

ifToolsTab.prototype.addTab = function(id, params)
{
	var tab = new Object();
	tab.settings = params;
	this.tabs[id] = tab;
}

ifToolsTab.prototype.chTab = function(id,onload)
{
	if (onload) {
		name = this.name;
		Html.addEvent(window, 'load', function () { ifTools[name].chTab(id); });
		return;
	}
	
	var tab = this.tabs[id];
	
	if (this.tabs[id].settings["active"])
		return;

	this.hideOther(id);
	
	if (o = document.getElementById(id))
		o.className = '';
		
	this.tabs[id].settings["active"] = true;
		
	if (this.settings["menu"])
	{
		mi = document.getElementById(tab.settings["menuItemID"]);
		mi.className = this.settings["menuItemClass"]+'-noclick';
	}
	
	form = this.settings["form"];
	frmiForms[form].setHidden('tab['+this.name+'][lasttab]', id);
}

ifToolsTab.prototype.hideOther = function(id)
{
	form = this.settings["form"];
	
	for(tabid in this.tabs)
	{
		if (tabid != id)
		{
			if (o = document.getElementById(tabid))
				o.className = 'hide';

			this.tabs[tabid].settings["active"] = false;

			if (this.settings["menu"])
			{
				mi = document.getElementById(this.tabs[tabid].settings["menuItemID"]);
				mi.className = this.settings["menuItemClass"];
			}
		}
	}
}

/* FORMS */
function ifToolsForm(name, params)
{
	this.name = name;
	this.settings = params;
	ifTools[name] = this;
}

ifToolsForm.prototype.addControl = function(control)
{
	if (!this.settings['controls'])
		this.settings['controls'] = new Array();
	this.settings['controls'][this.settings['controls'].length] = control;
}

ifToolsForm.prototype.changeLang = function(newlang)
{
	form = this.settings['form'];
	
	if (!newlang)
		newlang = frmiForms[form].getAllValue('form['+this.name+'][actlang]');
	frmiForms[form].setAllValue('form['+this.name+'][actlang]', newlang);
	lang = newlang;

	if (frmiForms[form].hasElement('form['+this.name+'][showdef]'))
	{
		showdeflang = frmiForms[form].getForm().elements['form['+this.name+'][showdef]'].checked;
	} else
		showdeflang = false;
	deflang = this.settings['deflang'];
	
	for(i=0; i < this.settings['controls'].length; i++)
	{
		cntl = this.settings['controls'][i];
		for(l=0; l < this.settings['langs'].length; l++)
		{
			al = this.settings['langs'][l];
			if (o = document.getElementById(cntl+'['+al+']'))
			{
				o.className = (al == lang || (showdeflang && al == deflang)) ? '' : 'hide';
			}
		}
	}
}

/* INFODIV */
function ifToolsInfoDiv(name, params)
{
	this.name = name;
	this.settings = params;
	ifTools[name] = this;

	var o = Html.getElementById('info'+name);
	if (o)
	{
		o.int_name = name;
		
		idiv = document.createElement('DIV');
		idiv.name = 'infopanel'+name;
		idiv.id = 'infopanel'+name;
		idiv.innerHTML = this.settings['infotext'];
		idiv.className = this.settings['infoclass'];
		Html.setStyle(idiv, 'position', 'absolute');
		Html.setVisibility(idiv, false);
		
		document.body.appendChild(idiv);

		Html.addEvent(o, 'mousemove', this.onMove);
		Html.addEvent(o, 'mouseout', this.onOut);
	}
}

ifToolsInfoDiv.prototype.onMove = function(e)
{
	//return;
	var so = (e.srcElement ? e.srcElement : e.target);

	while(!(name = so.int_name) && so.parentNode)
		so = so.parentNode;

	var o = document.getElementById('infopanel'+name);
	if (o)
	{
		p = Html.getOffset(so);
		if (Html.isMSIE)
		{
			p.x += e.offsetX + 20;
			p.y += e.offsetY + 20;
		} else
		{
			p.x = e.layerX + 20;
			p.y = e.layerY + 20;
		}
		
		// check location...
		st = document.documentElement.scrollTop;
		sl = document.documentElement.scrollLeft;
		ch = document.documentElement.clientHeight;
		cw = document.documentElement.clientWidth;
		if ((p.x + o.offsetWidth - sl) > cw)
			p.x -= o.offsetWidth + 30;
		if ((p.y + o.offsetHeight - st) > ch)
			p.y -= o.offsetHeight + 30;
		
		Html.setOffset(o,p);
		
		Html.setVisibility(o, true);
		SelectRemover.process();
	}
}

ifToolsInfoDiv.prototype.onOut = function(e)
{
	var so = (e.srcElement ? e.srcElement : e.target);

	while(!(name = so.int_name) && so.parentNode)
		so = so.parentNode;

	if (o = document.getElementById('infopanel'+name))
	{
		Html.setVisibility(o, false);
		SelectRemover.process();
	}
}

/* MENU */
function ifToolsMenu(name, params)
{
	this.name = name;
	this.settings = params;
	this.submenus = new Object();
	ifTools[name] = this;
	
	this.settings.openAuto = odef(this.settings.openAuto, true);
	this.settings.noClose = odef(this.settings.noClose, false);
	this.settings.keepOpen = odef(this.settings.keepOpen, false);
	this.settings.keepActive = odef(this.settings.keepActive, false);
	
	this.parentMenu = odef(this.settings.parentMenu);
	this.parentItem = odef(this.settings.parentItem);
	
	this.state = odef(this.settings.initialState, 0);
	
	if (this.settings.noClose)
		this.state = 1;

	if (!this.settings.noinit) {
		if (this.settings.openAuto)
			Html.addEvent(window, 'load', function () {
				Html.addEvent(document.body, 'mouseover', function() {
					ifTools[name].closeAll(); 
				}); 
			});
		if (this.parentMenu && !this.parentMenu.settings.openAuto)
			Html.addEvent(window, 'load', function () {
				if (ifTools[name].state)
					ifTools[name].open();
				else
					ifTools[name].close();
			});
	}
}
ifToolsMenu.prototype.open = function()
{
	/* Open a menü and try to close its parent's submenus */
	if ((this.settings.openAuto || !this.settings.keepOpen) && this.parentMenu)
		this.parentMenu.closeAll(this.name);

	if (this.parentMenu && this.parentMenu.settings.keepActive) {
		var item = this.parentItem;
		Html.setClass(item, this.parentMenu.settings.classActive);
		this.parentMenu.activeItem = item;
		//alert('open:'+item+':'+this.parentMenu.settings.classActive);
	}

	Html.setDisplay(this.name, 1, 'block');
	this.state = 1;
}
ifToolsMenu.prototype.close = function()
{
	this.state = 0;
	Html.setDisplay(this.name, 0);
}

ifToolsMenu.prototype.closeAll = function(itemname)
{
	if (this.settings.keepOpen)
		return;
	
	if (this.activeItem) {
		//alert('close all:'+this.name+':'+itemname);
		Html.setClass(this.activeItem, this.settings.classNormal);
	}
		
	for(sm in this.submenus)
	{
		if (sm != odef(itemname, ''))
			this.submenus[sm].close();
		this.submenus[sm].closeAll();
	}
}
ifToolsMenu.prototype.onOver = function(e, itemname)
{
	if (itemname)
		this.submenus[itemname].open();
	else {
		alert('ups');
		this.closeAll();
	}
	e.cancelBubble = true;
}
ifToolsMenu.prototype.onClickCancel = function(e) {
	e.cancelBubble = true;
	return true;
}
ifToolsMenu.prototype.onClick = function(e, itemname)
{
	if (!this.submenus[itemname].state) { 
		this.submenus[itemname].open();
	} else
		this.submenus[itemname].close();

	e.cancelBubble = true;
	return true;
}
ifToolsMenu.prototype.addSubMenu = function(itemname, name, settings)
{
	settings.parentMenu = this;
	settings.parentItem = itemname;

	this.submenus[name] = new ifToolsMenu(name, settings);
	
	var mname = this.name;
	if (this.settings.openAuto)
		Html.addEvent(window, 'load', function () {
			Html.addEvent(itemname, 'mouseover', function(event) {
				ifTools[mname].onOver(event, name); 
			});
		});
	else {
		if (!this.submenus[name].settings.noClose) {
			Html.addEvent(window, 'load', function () {
				Html.addEvent(itemname, 'click', function(event) {
					ifTools[mname].onClick(event, name);
				});
				lis = Html.getElementById(itemname).getElementsByTagName('li');
				for(i=0; i<lis.length; i++) {
					Html.addEvent(lis[i], 'click', function(event) {
						ifTools[mname].onClickCancel(event);
					});
				}
			});
		}
	}
}

/* PROGRESS */
function ifToolsProgress(name, params)
{
	this.name = name;
	this.settings = params;
	ifTools[name] = this;
}
ifToolsProgress.prototype.show = function(obj, text) {
	obj = odef(obj, this.settings.obj);
	text = odef(text, this.settings.text);

	var o = Html.getElementById(obj);
	
	name = this.name;
	
	pdiv = document.createElement('DIV');
	pdiv.name = 'progress'+name;
	pdiv.id = 'progress'+name;

	Html.setStyle(pdiv, 'position', 'relative');
	
	for(i=0;i<o.childNodes.length;i++) {
		oNode = o.childNodes[i];
		//alert(oNode.nodeType);
		if (oNode && oNode.nodeType && oNode.nodeType == 1) {
			pdiv.appendChild(oNode);
			i--;
		}
	}
	o.appendChild(pdiv);

	//alert('check');	
	ldiv = document.createElement('DIV');
	ldiv.name = 'player'+name;
	ldiv.id = 'player'+name;
	
	Html.setStyle(ldiv, 'position', 'absolute');
	
	Html.setStyle(ldiv, 'top', '0px');
	Html.setStyle(ldiv, 'left', '0px');
	Html.setStyle(ldiv, 'width', pdiv.offsetWidth+'px');
	Html.setStyle(ldiv, 'height', pdiv.offsetHeight+'px');

	op = odef(this.settings.opacity, 50);

	Html.setStyle(ldiv, 'MozOpacity', op/100);
	Html.setStyle(ldiv, 'opacity', op/100);
	Html.setStyle(ldiv, 'filter', 'alpha(opacity='+op+')');
	Html.setStyle(ldiv, 'backgroundColor', 'black');

	pdiv.appendChild(ldiv);

	idiv = document.createElement('DIV');
	idiv.name = 'pinfo'+name;
	idiv.id = 'pinfo'+name;
	
	idiv.innerHTML = text;

	Html.setStyle(idiv, 'position', 'absolute');

	Html.setVisibility(idiv, false);
	Html.setStyle(idiv, 'padding', '10px');
	Html.setStyle(idiv, 'background', 'white');

	pdiv.appendChild(idiv);
	
	Html.setStyle(idiv, 'top', ((pdiv.offsetHeight-idiv.offsetHeight)/2)+'px');
	Html.setStyle(idiv, 'left', ((pdiv.offsetWidth-idiv.offsetWidth)/2)+'px');
	Html.setVisibility(idiv, true);
	SelectRemover();
	SelectRemover.process();
}

/* FLOATING IMAGES */
function ifToolsFloatIMGPreview(name, params) {
	this.name = name;
	this.settings = params;
	ifTools[name] = this;

	Html.addEvent(window, 'load', function () {
		ifTools[name].init();
	});

/*	var o = Html.getElementById('info'+name);
	if (o)
	{
		o.int_name = name;
		
		idiv = document.createElement('DIV');
		idiv.name = 'infopanel'+name;
		idiv.id = 'infopanel'+name;
		idiv.innerHTML = this.settings['infotext'];
		idiv.className = this.settings['infoclass'];
		Html.setStyle(idiv, 'position', 'absolute');
		Html.setVisibility(idiv, false);
		
		document.body.appendChild(idiv);

		Html.addEvent(o, 'mousemove', this.onMove);
		Html.addEvent(o, 'mouseout', this.onOut);
	}*/
}

ifToolsFloatIMGPreview.prototype.init = function()
{
	var list = document.getElementsByTagName('IMG');
	
	for (var i=0; i < list.length; i++) {
		var o = list[i];
		if (Html.hasAttrib(o, 'floatpreview')) {
			var pars = Html.getAttrib(o, 'floatpreview').split(':');
			var title = Html.getAttrib(o, 'title'); 
			
			o.int_name = 'fp'+pars[0].replace(/\//g, '');
			o.int_url = pars[0];
			
			idiv = document.createElement('DIV');
			idiv.name = o.int_name;
			idiv.id = o.int_name;
			if (title)
				idiv.innerHTML = '<h1>'+title+'</h1>';
			idiv.className = this.settings.fpClass;
			Html.setStyle(idiv, 'width', pars[1]+'px');
			//Html.setStyle(idiv, 'height', pars[2]+'px');
			Html.setStyle(idiv, 'position', 'absolute');
			Html.setVisibility(idiv, false);
			
			document.body.appendChild(idiv);
	
			Html.addEvent(o, 'mousemove', this.onMove);
			Html.addEvent(o, 'mouseout', this.onOut);
			
		}
	}
}

ifToolsFloatIMGPreview.prototype.onMove = function(e)
{
	//return;
	var so = (e.srcElement ? e.srcElement : e.target);

	while(!(name = so.int_name) && so.parentNode)
		so = so.parentNode;

	var o = document.getElementById(name);
	if (o)
	{
		p = Html.getOffset(so);
		if (Html.isMSIE)
		{
			p.x += e.offsetX + 20;
			p.y += e.offsetY + 20;
		} else
		{
			p.x = e.layerX + 20;
			p.y = e.layerY + 20;
		}
		
		if (o.getElementsByTagName('IMG').length == 0) {
			iimg = document.createElement('IMG');
			Html.setAttrib(iimg, 'src', so.int_url);
			Html.setAttrib(iimg, 'border', '0');
			
			o.appendChild(iimg);
		}
		
		//hack
		//var htag = o.getElementsByTagName('H1');
		
		// check location...
		if (Html.isSafari) {
			st = document.body.scrollTop;
			sl = document.body.scrollLeft;
		} else {
			st = document.documentElement.scrollTop;
			sl = document.documentElement.scrollLeft;
		}
		ch = document.documentElement.clientHeight;
		cw = document.documentElement.clientWidth;
		if ((p.x + o.offsetWidth - sl) > cw)
			p.x -= o.offsetWidth + 30;
		
		if ((p.y + o.offsetHeight - st) > ch) {
			//p.y -= o.offsetHeight + 30;
			//htag[0].innerHTML = ch+':'+st;
			Html.setStyle(o, 'bottom', (10-(Html.isMSIE ? 0:st))+'px');
			Html.setStyle(o, 'top', 'auto');
		} else {
			Html.setStyle(o, 'top', (p.y)+'px');
			Html.setStyle(o, 'bottom', 'auto');
		}
		
		//Html.setOffset(o,p);
		//Html.setStyle(o, 'bottom', (10-st)+'px');
		Html.setStyle(o, 'left', (p.x)+'px');
		
		Html.setVisibility(o, true);
		SelectRemover.process();
	}
}

ifToolsFloatIMGPreview.prototype.onOut = function(e)
{
	var so = (e.srcElement ? e.srcElement : e.target);

	while(!(name = so.int_name) && so.parentNode)
		so = so.parentNode;

	if (o = document.getElementById(name))
	{
		Html.setVisibility(o, false);
		SelectRemover.process();
	}
}

function ifToolsDateControl(name, params) {
	this.name = name;
	this.settings = params;
	ifTools[name] = this;

	Html.addEvent(window, 'load', function () {
		ifTools[name].init();
	});
}

ifToolsDateControl.prototype.init = function() {
	var objs = document.getElementsByTagName('INPUT');
	//alert(objs.length);
	for (var i=0; i<objs.length; i++) {
		var el = objs.item(i);
		if (el.name == this.settings.element) {
		
			v = el.value;
			darr = v.split('.');
			
			html = this.getYearSelect(darr)+this.getMonthSelect(darr)+this.getDaySelect(darr);
			if (!Html.isIE) {
				rng = el.ownerDocument.createRange();
				rng.setStartBefore(el);

				fragment = rng.createContextualFragment(html);

				if (el.nextSibling)
					el.parentNode.insertBefore(fragment, el.nextSibling);
				else
					el.parentNode.appendChild(fragment);
			} else
				el.insertAdjacentHTML("beforeBegin", html);
				
			el.style.display = 'none';
			//el.name = el.name+'_disabled';
			el.type = 'hidden';
			
			this.settings.form = el.form.name;
			
			//frmiForms[el.form.name].addHidden(this.settings.element, el.value);
		}
	}
}
ifToolsDateControl.prototype.getDate = function(returnarr) {
	y = frmiForms[this.settings.form].getValue(this.settings.element+'_year');
	m = frmiForms[this.settings.form].getValue(this.settings.element+'_month');
	d = frmiForms[this.settings.form].getValue(this.settings.element+'_day');
	
	if (returnarr)
		return new Array(y, m, d);
	else
		return (y ? y+'.'+(m ? m:1)+'.'+(d ? d:1):'');
}
ifToolsDateControl.prototype.chYear = function(obj) {
	this.refreshMonths();
	frmiForms[this.settings.form].setValue(this.settings.element, this.getDate());
}
ifToolsDateControl.prototype.chMonth = function(obj) {
	this.refreshDays();
	frmiForms[this.settings.form].setValue(this.settings.element, this.getDate());
}
ifToolsDateControl.prototype.chDay = function(obj) {
	frmiForms[this.settings.form].setValue(this.settings.element, this.getDate());
}
ifToolsDateControl.prototype.getYearSelect = function(darr) {
	yhtml = '<select name = "'+this.settings.element+'_year'+'" onChange="ifTools[\''+this.name+'\'].chYear(this)">';
	yhtml += '<option value=""></option>';
	for(var y = 2020; y > 1950; y--) {
		yhtml += '<option value="'+y+'"';
		if (y == parseInt(darr[0]))
			yhtml += ' selected';
		yhtml += '>'+y+'</option>';
	}
	yhtml += '</select>';
	return yhtml;
}
ifToolsDateControl.prototype.getMonthSelect = function(darr, onlyopts, retselect) {
	if (!onlyopts)
		mhtml = '<select name = "'+this.settings.element+'_month'+'" onChange="ifTools[\''+this.name+'\'].chMonth(this)">';
	else
		mhtml = '';

	sel = '';
	mhtml += '<option value=""></option>';
	if (darr[0] != '') {
		for(var m = 1; m <= 12; m++) {
			mhtml += '<option value="'+m+'"';
			if (m == parseInt(darr[1])) {
				if (retselect)
					sel = m;
				mhtml += ' selected';
			}
			mhtml += '>'+m+'</option>';
		}
	}
	if (!onlyopts)
		mhtml += '</select>';
	
	if (retselect)
		return new Array(mhtml, sel);
	else
		return mhtml;
}
ifToolsDateControl.prototype.getDaySelect = function(darr, onlyopts, retselect) {
	var daysofmonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	
	if (!onlyopts)
		nhtml = '<select name = "'+this.settings.element+'_day'+'" onChange="ifTools[\''+this.name+'\'].chDay(this)">';
	else
		nhtml = '';

	if ((darr[0] % 4) == 0 && (darr[0] % 400) != 0) {
		daysofmonth[1]++;
	}
		
	sel = '';
	nhtml += '<option value=""></option>';
	if (darr[0] != '' && darr[1] != '') {
		for(var n = 1; n <= daysofmonth[darr[1]-1]; n++) {
			nhtml += '<option value="'+n+'"';
			if (n == parseInt(darr[2])) {
				if (retselect)
					sel = n;
				nhtml += ' selected';
			}
			nhtml += '>'+n+'</option>';
		}
	}
	if (!onlyopts)
		nhtml += '</select>';
	
	if (retselect)
		return new Array(nhtml, sel);
	else
		return nhtml;
}
ifToolsDateControl.prototype.refreshMonths = function() {
	var darr=this.getDate(true);
	
	var el=frmiForms[this.settings.form].getElement(this.settings.element+'_month');
	
	var mnths = this.getMonthSelect(darr, true, true);
	el.innerHTML = mnths[0];
	el.value = mnths[1];
	
	this.refreshDays();
}
ifToolsDateControl.prototype.refreshDays = function() {
	var darr=this.getDate(true);
	
	var el=frmiForms[this.settings.form].getElement(this.settings.element+'_day');
	
	var days = this.getDaySelect(darr, true, true);
	el.innerHTML = days[0];
	el.value = days[1];
}

