function fYes(f,x)
{
	if(typeof(f)=="undefined") return (0);
	if(typeof(f.elements[x])=="undefined") return (0); else return (f.elements[x]);
}

function fSet(f,x,y,type,text)
{
	var Work;
	switch((Work=fYes(f,x))?Work.type:0)
	{
	case "text":Work.value=y;break;
	case "select-one":
		if(type==1)
		{
			for(var i=0;i<Work.length;i++)
				if(Work.options[i].value==y) {Work.options[i].selected=1;break;}
			if(i==Work.length)
				Work.options[i]=new Option(text,y);
		}
		else
			Work.options[y].selected=1;
		break;
	}
}

function fGet(f,x,type,y)
{
	var Work;
	switch((Work=fYes(f,x))?Work.type:0)
	{
	case "text":return(Work.value);
	case "select-one":
		switch(type)
		{
		case 0:
			return(Work.selectedIndex);
		case 1:
			return(Work.options[Work.selectedIndex].text);
		case 2:
			return(Work.options[Work.selectedIndex].value);
		case 3:
			for(var i=0;i<Work.length;i++)
				if(Work.options[i].value==y) return i;
			return false;
		}
	}
	return (0);
}

function FGet(f,x,type)
{
	var Work;
	switch((Work=fYes(f,x))?Work.type:0)
	{
	case "text":return(Work.value);
	case "select-one":
		switch(type)
		{
		case 'elem':
			return(Work.options[Work.selectedIndex]);
		case 'value':
			return(Work.options[Work.selectedIndex].value);
		case 'text':
			return(Work.options[Work.selectedIndex].text);
		case 'index':
			return(Work.selectedIndex);
		}
	}
	return (0);
}

function form_clean(f)
{
	var i,j;
	for(i=0;i<f.length;i++)
	{
		e=f.elements[i];
		switch(e.type)
		{
		case "text":
			e.value='';
			break;
		case "select-one":
			if(!e.length)
				break;
			e.options[0].selected=1;
			break;
		}
	}
}

function is_number(sText)
{
	var ValidChars = "0123456789.,";
	var Char;

   	for(var i=0;i<sText.length;i++)
	{
		Char = sText.charAt(i);
		if (ValidChars.indexOf(Char) == -1)
			return false;
	}
	return true;
}

function is_dmy(sText)
{
	adate = sText.split('.');
	if(adate.length!=3)
		return false;
	for(i=0;i<3;i++)
	{
		adate[i]=parseInt(adate[i],10);
		if(isNaN(adate[i]) || adate[i]<=0)
			return false;
	}
	odate=new Date(adate[2],adate[1]-1,adate[0]);
	if(odate.getDate()!=adate[0] || odate.getMonth()!=(adate[1]-1) || odate.getFullYear()!=adate[2])
		return false;
	return true;
}

function intformat(n,m)
{
	var s=""+n;
	if(s.length>=m)
		return s;
	//add m-s.length '0'
	var r="";
	for(ii=0;ii<m-s.length;ii++)
		r+="0";
	r+=s;
	return r;
}

var floatpoint='.';

function floatformat(n,m)
{
	res='0.00';
	var s=""+n;
	var idot=s.indexOf(".");
	if(s.length<=0)
		res="0.00";
	else
		if(idot<0)
			res=s+".00";
		else
			if(idot==s.length-1)
				res=s+"00";
			else
				if(idot==s.length-2)
					res=s+"0";
				else
					res=s.substring(0,idot+m+1);
	if(floatpoint!='.')
	{
		nres='';
		for(j=0;j<res.length;j++)
		{
			if(res.charAt(j)=='.'){nres+=',';continue;}
			nres+=res.charAt(j);
		}
		return nres;
	}
	return res;
}

function offsetx(e)
{
	var x = e.offsetLeft;
	for(var i=e.offsetParent; i; i=i.offsetParent) x+=i.offsetLeft;
	return x;
}

function offsety(e)
{
	var y = e.offsetTop;
	for(var i=e.offsetParent; i; i=i.offsetParent)y+=i.offsetTop;
	return y;
}

function date_parse(sdate)
{
	var adate = sdate.split('.');
	if(adate.length!=3)
		return 1;
	for(var i=0;i<3;i++)
	{
		adate[i]=parseInt(adate[i],10);
		if(isNaN(adate[i]) || adate[i]<=0)
			return 2;
	}
	var odate=new Date(adate[2],adate[1]-1,adate[0]);
	if(odate.getDate()!=adate[0] || odate.getMonth()!=(adate[1]-1) || odate.getFullYear()!=adate[2])
		return 3;
	return odate;
}

var stormDialog=null;
var stormDialogForm=null;
var stormDialogField=null;
var stormDialogElem=null;

function storm_showModalDialog(url,param)
{
	if(stormDialog==null || stormDialog.closed)
	{
		stormDialog=window.open (url,'stormdialog',param);
		if(stormDialog==null)
		{
			alert('Cannot open dialog window');
			return;
		}
	}
	stormDialog.window.focus();
}
function dialog_param(parentelem,w,h)
{
	return "left="+(screen.availWidth-w)/2+",top="+(screen.availHeight-h)/2+",width="+w+", height="+h+", center=yes, help=no, resizable=yes, status=no";
}

function dialog_open(parentelem,ename,fname,href,w,h)
{
	stormDialogForm=fname;
	stormDialogField=ename;
	stormDialogElem=document.forms[fname].elements[ename];
	param=dialog_param(parentelem,w,h);
	storm_showModalDialog(href,param);
}
