﻿// IC WCMS JavaSricpt Functions Library for MSIE: Due to lack DOM API suport
// IruCom WebCMS Version 5.0
// Copyright Pragash Irudayam ( IruCom systems ) 2009
// IruCom WebCMS Release Date : 01.03.09  - RV2
// Licence only for one Domain. No changes or addons are allowed without prior permisssion from Pragash Irudayam (IruCom systems)

// Function to Build a Calender 
function IC_JS_MSIE_Build_Calender(display_box_id, inputfield_id, displayfield_id, no_date_value_flag, selected_month, selected_year)
{
	if (typeof(document.getElementById) != 'undefined') 
	{
		var display_box = document.getElementById(display_box_id);		   	
    }    
    else 
	{
        return false;		
    }
	
	if(typeof(selected_month) == 'undefined') 
	{
		var dat = new Date();
		selected_month = dat.getMonth();
	}
	if(typeof(selected_year) == 'undefined')
	{
		var dat = new Date();
		selected_year = dat.getFullYear();
	}
	
	
	function IC_JS_Function_For_Calender_Date(display_box_id, inputfield_id, displayfield_id, db_value, label, user_display_value)
	{
		// ************** Important ...............
		var insert_f_name = "IC_JS_Insert_Calender_Value('"+display_box_id+ "','"+ inputfield_id+ "','"+displayfield_id + "','" + db_value+"','" +user_display_value+"');";
		var a_html = "<a href='#' onclick=\"" + insert_f_name + "\">" + label + "</a>";
		
		return a_html;		
	}
	
	var days_in_month_array = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var f_name = "IC_JS_Calender(" + "'" + display_box_id + "','" + inputfield_id +"','"+displayfield_id + "','" + no_date_value_flag+"','icwcms_month_id' , 'icwcms_year_id' );";
	
	var c_month_year_box = document.createElement("div");
	c_month_year_box.setAttribute("className", "icgui_calender_heading");
	
	var c_form = document.createElement("form");
		
		var f_select_html = "<select id=\"icwcms_month_id\" class=\"icgui_calender_formfieldbold\" onchange=\"" + f_name + "\">";
		for(var m_i = 0; m_i <= 11; m_i++)
		{
			f_select_html += "<option value=\""+m_i+"\"";
			if(selected_month == m_i)
			{
				f_select_html += " selected=\"selected\"";
			}
			f_select_html += ">";
			// put to Text Node 
			f_select_html += str_month_array[m_i];
			//put it to select Node
			f_select_html += "</option>";
		}
		f_select_html += "</select>";
		//c_form.innerHTML = f_select_html;
		
		f_select_html += "<select id=\"icwcms_year_id\" class=\"icgui_calender_formfieldbold\" onchange=\"" + f_name + "\">";
		
		for(var y_i = 0; y_i < 5; y_i++)
		{
			var dat  = new Date();			
			var next_year = dat.getFullYear() + y_i;
			f_select_html += "<option value=\""+next_year+"\"";
			if(selected_year == next_year)
			{
				f_select_html += " selected=\"selected\"";
			}
			f_select_html += ">";
			// put to Text Node 
			f_select_html += next_year;
			//put it to select Node
			f_select_html += "</option>";
		}		
		f_select_html += "</select>";
		
	//	f_select_html += "<button type=\"button\" title=\"select\" class=\"icgui_calender_formbutton\" onclick=\"" + f_name + "\">__</button>";
		
		c_form.innerHTML = f_select_html;	
	c_month_year_box.appendChild(c_form);
	
	// ###########################
	// Delete all Child Nodes if available
	// Changes to the Nodlist changese the Index
	// Get initial number of Child nodes for the for Loop - and decrement
	var kids = display_box.childNodes;
	var num_kids = kids.length;
	if(num_kids != 0)
	{
		for(var i = num_kids-1; i >=0; i--)
		{
			display_box.removeChild(kids[i]);
		}
	}
	// Put New Node to Display box
	display_box.appendChild(c_month_year_box);
	
	// ###########################	
	
	// Create table
	var c_tbl = document.createElement("table");
	c_tbl.setAttribute("className", "icgui_calender_tbl");
	// create table heading and put it to table
	var c_tbl_thead = document.createElement("thead");
	c_tbl.appendChild(c_tbl_thead);
		
	var c_tr = document.createElement("tr");
	for(var th_i = 0; th_i <= 6; th_i++)
	{
		var c_th = document.createElement("th");
		c_th.setAttribute("className", "icgui_calender_tbl_th");
		c_th.appendChild(document.createTextNode(str_week_array[th_i]));
		// put to row
		c_tr.appendChild(c_th);		
	}
	// put Row to Table head
	c_tbl_thead.appendChild(c_tr);	
	
	// *******************************
	// create table body and put it to table
	var c_tbl_tbody = document.createElement("tbody");
	c_tbl.appendChild(c_tbl_tbody);
		
	var days_in_month = days_in_month_array[selected_month];	
	// Check leapyear
	// Check if selected month is February 'index 1'
	if (((0 == (selected_year%4)) && ( (0 != (selected_year%100)) || (0 == (selected_year%400)))) && selected_month == 1)
	{
		days_in_month = 29;
	}
	var tr_closed = 0;
	for(var day_counter = 1; day_counter <= days_in_month;  day_counter ++ )
	{		
		var now_date = new Date(selected_year, selected_month, day_counter,0,0,0,0);
		var db_value  = now_date.getFullYear()+"-" + (parseInt(now_date.getMonth() +1) ) +"-" + now_date.getDate();
		var user_display_value = now_date.toLocaleString();
		if(tr_closed == 0)
		{
			var c_tr = document.createElement("tr");
			tr_closed = 1;
		}
		if(day_counter == 1)
		{
			var colsbefore = now_date.getDay() ;								
			for(var ci =1; ci <= colsbefore; ci++ )
			{				 
				 var c_td = document.createElement("td");
				 c_td.setAttribute("className", "icgui_calender_tbl_td_empty");
				 c_td.appendChild(document.createTextNode(" * "));
				// put empty cells to row
				c_tr.appendChild(c_td);				 
			}
		}		
		
		var c_td = document.createElement("td");
		// make Sunday and Saturday BG Grey (different CSS)
		// Default
		var icgui_calender_tbl_td_css = "icgui_calender_tbl_td";
		if( (now_date.getDay()== 0) || (now_date.getDay()== 6)) 
		{
			icgui_calender_tbl_td_css = "icgui_calender_tbl_td_weekend";
		}
		c_td.setAttribute("className", icgui_calender_tbl_td_css);
			// ************** Important ...............
			var f_for_date = IC_JS_Function_For_Calender_Date(display_box_id, inputfield_id, displayfield_id, db_value, day_counter, user_display_value);
			// ************** Important ..............
		// use InnerHTML otherwise Event module will not be activated;
		//if(day_counter == 7)alert(f_for_date);
		c_td.innerHTML = f_for_date;
		c_tr.appendChild(c_td);
		
		// Emty cells at the end
		if(day_counter == days_in_month)
		{
			var colsafter = 6 - now_date.getDay();
			for(var ci =1; ci <= colsafter; ci++ )
			{				 
				 var c_td = document.createElement("td");
				 c_td.setAttribute("className", "icgui_calender_tbl_td_empty");
				 c_td.appendChild(document.createTextNode(" * "));
				 // put empty cells to row
				 c_tr.appendChild(c_td);				 
			}
		}
				
		if( ( now_date.getDay() == 6) || (day_counter == days_in_month) )
		{			
			// put the row to table body
			// set flag to start a new row  
			c_tbl_tbody.appendChild(c_tr);
			tr_closed = 0;			
		}			
	}
	// *******************************
	// put the Table Element to the calender box
	display_box.appendChild(c_tbl);
	
	// ********************
	// Check for No Date Input required
	
	if(no_date_value_flag == "yes")
	{
		var c_no_date = document.createElement("div");
		c_no_date.setAttribute("className", "icgui_calender_no_date");
		var f_for_date = IC_JS_Function_For_Calender_Date(display_box_id, inputfield_id, displayfield_id, '0000-00-00', str_no_date, '00.00.0000');
		// ************** Important ..............
		c_no_date.innerHTML = f_for_date;
		// put the Element to the calender box
		display_box.appendChild(c_no_date);			 
	}
	// ********************
			
	
} 
