function AceStyle(){
	this.color='#000000';
	this.backgroundColor='#FFFFFF';
	this.fontStyle='';
	this.fontWeight='';
	this.fontSize='';
	this.fontFamily='';
	this.borderWidth='1px';
	this.borderStyle='solid';
	this.borderColor='#FFFFFF';
	this.padding='0px';
	this.getStyle=function(){
	var sRet='';
	var aName=['border-width','border-style','border-color','color','background-color','font-style','font-weight','font-size','font-family','padding'];
	var aVal=[this.borderWidth,this.borderStyle,this.borderColor,this.color,this.backgroundColor,this.fontStyle,this.fontWeight,this.fontSize,this.fontFamily,this.padding];
	for(var i=0;i<aName.length;i++){
			sRet+=aName[i]+':'+aVal[i]+';';
			}
	return sRet;
	};
}
;
function ToUnicode(str){
	var ar=new Array(str.length);
	for(var i=0;i<str.length;i++){
		ar[i]=str.charCodeAt(i);
	}
return ar;
}
;
function FromUnicode(ar){
	var str='';
	for(var i=0;i<ar.length;i++){
		str+=String.fromCharCode(ar[i]);
	}
return str;
}
;
function AceCalendar(){
	this.ver=1.2;
	this.id=null;
	this.formId='aceCal';
	this.formTag=true;
	this.styles=Array(6);
	for(var i=0;i<this.styles.length;i++){
		this.styles[i]=new AceStyle();
	}
	this.yrId='yr_num';
	this.moId='mo_num';
	this.dtId='dt_num';
	this.months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
	this.days =['M','T','W','T','F','S','S'];
	this.oDate=new Date();
	this.lastDay=7;
	this.setAction=function(){};
	this.getDate=function(){
		return this.oDate.getDate();
		};
	this.getDay=function(){
		return this.oDate.getDay();
	}
;
	this.getMonth=function(){
		var m=this.oDate.getMonth();
		return this.oDate.getMonth();
		};
	this.getYear=function(){
		return this.oDate.getFullYear();
		};
	this.getString=function(){
		return this.oDate.toLocaleString();
		};
	this.setName=function(name){
		this.id=name;
		};
	this.setFieldNames=function(yrName,moName,dtName){
		if(yrName!=null&&yrName!=''){
			this.yrId=yrName;
			}
		if(moName!=null&&moName!=''){
			this.moId=moName;
			}
		if(dtName!=null&&dtName!=''){
			this.dtId=dtName;
			}
		};
	this.setFormName=function(formName,formTag){
		this.formId=formName;
		this.formTag=formTag;
		};
		this.setStyle=function(){
		var id;if(arguments.length>0){
			id=arguments[0];
		}
		if(arguments.length>1&&arguments[1]!=''){
			this.styles[id].borderColor=arguments[1];
			}
		if(arguments.length>2&&arguments[2]!=''){
			this.styles[id].backgroundColor=arguments[2];
			}
		if(arguments.length>3&&arguments[3]!=''){
			this.styles[id].color=arguments[3];
			}
		if(arguments.length>4){
			if(arguments[4]==0){
				this.styles[id].fontStyle='normal';
				}
			else{
				this.styles[id].fontStyle='italic';
			}
		}
		if(arguments.length>5){
			if(arguments[5]==0){
				this.styles[id].fontWeight='normal';
				}
			else{
				this.styles[id].fontWeight='bold';
			}
		}
	}
				;
				this.setFont=function(){
					if(arguments.length>0&&arguments[0]!=''){
						this.styles[5].fontFamily=arguments[0];
						}
						if(arguments.length>1&&arguments[1]!=''){
							this.styles[5].fontSize=arguments[1];
							}
							}
							;
							this.setFirstDay=function(){
								var s=arguments[0];
								switch(s){
									case"1":this.days =['S','M','T','W','T','F','S'];
									this.lastDay=6;
									break;
									case"0":
									default:
									this.days =['M','T','W','T','F','S','S'];
									this.lastDay=7;break;
									}
									};
									this.display=function(){
										if(!document.getElementById)
										return;
										if(this.id==null)return;
										var m,y,d,w;var yr,mth;
										var str='';
										if(arguments.length>0&&arguments[0]!='') this.oDate.setYear(arguments[0]);
										if(arguments.length>1&&arguments[1]!='') this.oDate.setMonth(arguments[1]);
		if(arguments.length>2&&arguments[2]!='') this.oDate.setDate(arguments[2]);
		str+='<table border="0" cellpadding="0" cellspacing="0" style="'+this.styles[5].getStyle()+'">';
		str+='<tr><td style="text-align:center;" width="100%" colspan="7" align="center" nowrap>';
		str+='<select size="1" name="'+this.moId+'" onchange="'+this.id+'.changeDate()" onkeyup="'+this.id+'.changeDate()">';mth=this.oDate.getMonth();
		for(m=0;m<this.months.length;m++){
			if(m==mth){str+='<option value="'+m+'" selected>'+this.months[m]+'</option>';
			}
			else{
				str+='<option value="'+m+'">'+this.months[m]+'</option>';}}str+='</select>';
				str+='<select size="1" name="'+this.yrId+'" onchange="'+this.id+'.changeDate()" onkeyup="'+this.id+'.changeDate()">';
				yr=this.oDate.getFullYear();y=yr-10;
				str+='<option value="'+y+'">'+y+' &lt;&lt;</option>';
				for(y=yr-9;y<yr+10;y++){
					if(y==yr){str+='<option value="'+y+'" selected>'+y+'</option>';}else{str+='<option value="'+y+'">'+y+'</option>';
					}
					}
					y=yr+10;str+='<option value="'+y+'">'+y+' &gt;&gt;</option>';
					str+='</select>';
					str+='<input type="hidden" name="'+this.dtId+'">';
					str+='</td></tr>';str+='<tr>';
					for(d=0;d<this.days.length;d++){
						str+='<td style="text-align:center;" align="center"><div style="'+this.styles[4].getStyle()+'">'+this.days[d]+'</div></td>';
						}
						str+='</tr>';var id;
						for(w=0;w<6;w++){
							str+='<tr>';
							for(d=this.lastDay;d<this.days.length;d++){
								str+=this.writeDate(w,d);
								}
								for(d=0;d<this.lastDay;d++){
									str+=this.writeDate(w,d);
									}
									str+='</tr>';
									}
									str+='</table>';
									document.write(str);
									this.changeDate();
									this.displayDay();
									}
									;
									this.writeDate=function(w,d){
										var id;var str='';
										if(d==5||d==6){id=1;
										}
										else {
											id=0;
											}
str+='<td style="text-align:center;" align="center">';str+='<a style="text-decoration:none" href="" onclick="return false;">';str+='<div id="'+this.id+w+d+'" style="'+this.styles[id].getStyle()+'" onclick="'+this.id+'.changeDay(this.innerHTML)">&nbsp;</div>';str+='</a></td>';str+='</td>';return str;
};
this.parseDay=function(str){
	var re=new RegExp('\\D*(\\d+)\\D*','i');
	var arr=re.exec(str);
	if(arr!=null){
		return parseInt(arr[1]);
	}else{
	return 0;
	}
};
this.displayDay=function(){
	var day=this.oDate.getDate();
	var id;
	var oElement;
	document.forms[this.formId].elements[this.dtId].value=day;
	for(w=0;w<6;w++){
		for(d=0;d<7;d++){
			var re,r;
			re = /<a.*html">/
  		r = document.getElementById(this.id+w+d).innerHTML.replace(re,"");
  		re = /<\/a>/
  		r = r.replace(re,"");
  		if(this.parseDay(r)==day){
				oElement=document.getElementById(this.id+w+d);
				if(d==5||d==6){
					id=3;
				}else{
					id=2;
				}
				oElement.style.borderColor=this.styles[id].borderColor;
				oElement.style.backgroundColor=this.styles[id].backgroundColor;
				oElement.style.color=this.styles[id].color;
				oElement.style.fontWeight=this.styles[id].fontWeight;
				oElement.style.fontStyle=this.styles[id].fontStyle;break;
			}
		}
	}
};
this.changeDay=function(str){
	var re,r;
	re = /<a.*html">/
  r = str.replace(re,"");
  re = /<\/a>/
  r = r.replace(re,"");
  var day=this.parseDay(parseInt(r));
	if(day!=0){
		this.resetDay();
		this.oDate.setDate(day);
		this.displayDay();
		this.setAction();
	}
};
this.resetDay=function(){
	var id;
	var oElement;
	for(w=0;w<6;w++){
		for(d=0;d<7;d++){
			oElement=document.getElementById(this.id+w+d);
			if(d==5||d==6){
				id=1;
			}else{
				id=0;
			}
			oElement.style.borderColor=this.styles[id].borderColor;
			oElement.style.backgroundColor=this.styles[id].backgroundColor;
			oElement.style.color=this.styles[id].color;
			oElement.style.fontWeight=this.styles[id].fontWeight;
			oElement.style.fontStyle=this.styles[id].fontStyle;
		}
	}
};
this.changeDate=function(){
	var d,w,l;
	var yr,mo;
	var day;
	var oDate=new Date();
	yr=document.forms[this.formId].elements[this.yrId].value;
	mo=document.forms[this.formId].elements[this.moId].value;
	this.oDate.setYear(yr);
	this.oDate.setMonth(mo);
	oDate.setDate(1);
	oDate.setYear(yr);
	oDate.setMonth(mo);
	for(w=0;w<6;w++){
		for(d=0;d<7;d++){
			document.getElementById(this.id+w+d).innerHTML='&nbsp;';
		}
	}
	this.resetDay();
	for(w=0,d=1;d<=31;d++){
		oDate.setDate(d);
		if(d!=oDate.getDate()) {
			oDate.setDate(d-1);
			break;
		}
		day=oDate.getDay();
		if(day==0){
			day=6;
		}else{
			day=day-1;
		}
		document.getElementById(this.id+w+day).innerHTML=d;
		if(day==this.lastDay-1) w++;
	}
	this.displayDay();
	this.setAction();
	this.changeYear(oDate.getFullYear());
};
this.changeYear=function(yr){
	var oElement=document.forms[this.formId].elements[this.yrId];
	var oOption;
	var y;
	if(oElement.selectedIndex==0||oElement.selectedIndex==20){
		while(oElement.length>=1){
			oElement.options[0]=null;
		}
	y=yr-10;
	oOption=new Option(y+' <<',y);
	oElement.options[oElement.length]=oOption;
	for(y=yr-9;y<yr+10;y++){
		oOption=new Option(y,y);
		oElement.options[oElement.length]=oOption;
	}y=yr+10;
	oOption=new Option(y+' >>',y);
	oElement.options[oElement.length]=oOption;
	oElement.selectedIndex=10;
	}
};
}