	/**
	* @desc Install main variables 
	*/
	var cal_arr = new Array();
	var cache_arr = new Array();
	var js = document.createElement("SCRIPT");

	
	/**
	* @return string
	* @param integer mn
	* @param integer yr
	* @desc Forming Calendar
	*/
	function forming_calendar(mn,yr)
	{
		var now_date = new Date();
		var now_month = now_date.getMonth()+1;
		var now_year = now_date.getYear();
		var now_day = now_date.getDate();
		var check_yr=false;
		var check_mn=false;
		var body="";
		
		if(parseInt(mn)>0) var month = mn;
		else  var month = now_month;
		
		if(parseInt(yr)>0)   var year = yr;
		else var year = now_year;
		
		(now_year==year)? check_yr=true : check_yr=false;
		(now_month==month)? check_mn=true : check_mn=false;
		
		var total_days = get_methods(month,year,0);
		var car_day = get_methods(month,year,1);
		var last_day = 7-get_methods(month,year,2);
		
		body=calendar_display(car_day,now_day,check_yr,check_mn,last_day,total_days)
		
		set_cache(month,year,body);
		
		document.all.calendar.innerHTML=body;
	}


	/**
	* @return integer
	* @param integer month
	* @param integer year
	* @param integer type
	* @desc Get Method
	*/
	function get_methods(month,year,type)
	{
		//alert(year);
		switch(type)
		{
			case 0:
					 var day_offset = 32;
					 var tmp_date = new Date(year, month - 1, day_offset);
					 var val = day_offset - tmp_date.getDate();
					break;
			case 1:
					var obj= new Date(year,month-1,1);
					cur_day = obj.getDay();
					(cur_day==0)? val=7 : val=cur_day;
					break;
			case 2:
					total_days=get_methods(month,year,0);
					var obj= new Date(year,month-1,total_days);
					//alert(obj);
					last_day = obj.getDay();
					//alert(last_day);
					(last_day==0)? val=7 : val=last_day;
					break;
		}
		
		return val;
	}


	/**
	* @return string
	* @param integer mas
	* @param integer now_day
	* @param integer n_m
	* @param integer n_y
	* @desc Calendar Main day
	*/
	function calendar_main_day(mas,now_day,n_m,n_y)
	{
		var td="";
		
		if(mas[0]==now_day && n_m==true && n_y==true) td+="<span class=head2>";
		if( (mas[0]==now_day && n_m==true && n_y==true) && (mas[1]==true) ) td+="<a href='"+mas[2]+"' style='color:#b10303;'>"+mas[0]+"</a>"; 
		else if(mas[1]==true) td+="<a href='"+mas[2]+"'>"+mas[0]+"</a>";
		else td+=mas[0];
		if(mas[0]==now_day) td+="</span>";
		
		return td;
	}
	

	/**
	* @return array
	* @param integer month
	* @param integer year
	* @param integer body
	* @desc Set Cache
	*/
	function set_cache(month,year,body)
	{
		//alert(month+"-"+year);
		date_arr= new Array(month,year,body);
		id=cache_arr.length;
		cache_arr[id]=date_arr;
	}

	
	/**
	* @return string
	* @desc Calendar Header
	*/
	function calendar_header()
	{
		var body="<tr bgcolor=#DEEBF8 class=text1>";
		
		for(var i=0;i<days_of_week.length;i++)
		{
			(i>4)? body+="<td bgcolor=#9EC9F1 class=text1 align=center>"+days_of_week[i].toUpperCase()+"</td>" : body+="<td bgcolor=#C2DAF1 align=center>"+days_of_week[i].toUpperCase()+"</td>";
		}
		
		body+="</tr>";
		
		return body;
	}
	

	/**
	* @return string
	* @param integer car_day
	* @param integer now_day
	* @param bool check_mn
	* @param bool check_yr
	* @param integer last_day
	* @param integer total_days
	* @desc Calendar Display
	*/
	function calendar_display(car_day,now_day,check_yr,check_mn,last_day,total_days)
	{
		var cal_arr = new  Array(total_days);
		
		for(var i=0;i<total_days;i++)
		{
			temp = new Array(i+1, false, "");
			cal_arr[i]=temp;
		}
		
		for(j=0;j<cal_new.length;j++)
		{
			cal_arr[cal_new[j][0]-1][1] = true;
			cal_arr[cal_new[j][0]-1][2] = cal_new[j][1];
		}
		
		body="<table border=0 celpadding=0 cellspacing=1 width=100%>";
		
		body+=calendar_header();
		
		body+=calendar_main_data(cal_arr,car_day,now_day,check_yr,check_mn,last_day);
		
		body+="</table>";
		
		return body;
	}

	/**
	* @return string
	* @param array tmp_arr
	* @param integer cur_day_week
	* @param bool now_day
	* @param bool check_yr
	* @param bool check_mn
	* @param integer last_day
	* @desc Calendar Main Data
	*/
	function calendar_main_data(tmp_arr,cur_day_week,now_day,check_yr,check_mn,last_day)
	{
		var body="<tr bgcolor=#FFFFFF class=head3>";
		var cur_day=cur_day_week;
		var cal_arr=tmp_arr;
		
		for(var i=1;i<=cur_day;i++)
		{
			if(i==cur_day) break;
			else  body+="<td>&nbsp;</td>";
		}
		
		for(var k=0;k<cal_arr.length;k++)
		{
			if(i==8)
			{
				body+="</tr><tr bgcolor=#FFFFFF class=head3><td align=center>";
				i=1;
			}
			else if(i==6 || i==7) body+="<td align=center>"; //sun color=red
			else  body+="<td align=center>";
			
			body+=calendar_main_day(cal_arr[k],now_day,check_yr,check_mn)+"</td>";
			i++;
		}
		
		for(i=0;i<last_day;i++)
		body+="<td>&nbsp;</td>";
		
		body+="</tr>";
		
		return body;
	}

