var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );
var daysPerMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
var currentControl;

function openDateDialog( id, elMin, elMax )
{
	
	var iSelectedDate, dtMin, dtMax, tmp;
	var dt = new Date();
	dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() );
	
	var sSelectedDate = document.getElementById(id).value;
	try
	{
		tmp = sSelectedDate.split("-");
		iSelectedDate = new Date(tmp[0], parseInt(tmp[1], 10) - 1, parseInt(tmp[2], 10)).valueOf();
		if( isNaN( iSelectedDate ) )
			iSelectedDate = dt.valueOf();
	}
	catch( e )
	{
		iSelectedDate = dt.valueOf();
	}
	
	if( elMin )
	{
		try
		{
			var sMinDate = document.getElementById( elMin ).value;
			tmp = sMinDate.split("-");
			var iMinDate = new Date(tmp[0], parseInt(tmp[1], 10) - 1, parseInt(tmp[2], 10)).valueOf();
			if( !isNaN( iMinDate ) )
				document.getElementById( "dateControl" + id + "Min" ).value = iMinDate;
		}
		catch( e ){}
	}
	
	if( elMax )
	{
		try
		{
			var sMaxDate = document.getElementById( elMax ).value;
			tmp = sMaxDate.split("-");
			var iMaxDate = new Date(tmp[0], parseInt(tmp[1], 10) - 1, parseInt(tmp[2], 10)).valueOf();
			if( !isNaN( iMaxDate ) )
				document.getElementById( "dateControl" + id + "Max" ).value = iMaxDate;
		}
		catch( e ){}
	}
	
	var dtSelected = new Date(iSelectedDate);
	var dtMonthStart = new Date(dtSelected.getFullYear(), dtSelected.getMonth(), 1);
	
	renderGrid(id, dtMonthStart, dtSelected); 
	if( currentControl )
		currentControl.style.display = "none";
	
	var dc = document.getElementById( "dateControl" + id );
	dc.style.display = "block";
	
	currentControl = dc;
	
}

function renderGrid( id, dtGrid, dtSelected )
{
	var iGridMonth = dtGrid.getMonth();
	var iGridYear = dtGrid.getFullYear();
	var iGridDate = 0;
	
	var iSelectedDate = dtSelected.valueOf();
	document.getElementById( "dateControl" + id + "Grid" ).value = dtGrid.valueOf();
	document.getElementById( "dateControl" + id + "Selected" ).value = dtSelected.valueOf();
	
	var iMinDate, iMaxDate;
	if( document.getElementById( "dateControl" + id + "Min" ).value )
		iMinDate = parseInt(document.getElementById( "dateControl" + id + "Min" ).value, 10);
	if( document.getElementById( "dateControl" + id + "Max" ).value )
		iMaxDate = parseInt(document.getElementById( "dateControl" + id + "Max" ).value, 10);
	
	var ixStart = dtGrid.getDay() - 2;
	if(ixStart == -2)
		ixStart = 5;
	var dt, iDt, a;
	for(var i = 0; i < 6; i++)
	{
		for(var j = i * 7; j < (i + 1) * 7; j++)
		{
			a = document.getElementById( "dateGrid" + id + "_" + j );
			if( j > ixStart && j - ixStart <= daysPerMonth[iGridMonth])
			{
				iGridDate++;
				dt = new Date( iGridYear, iGridMonth, iGridDate );
				iDt = dt.valueOf();	
				
				if( (!iMinDate || (iMinDate <= iDt)) && (!iMaxDate || (iMaxDate >= iDt)) )
				{
					a.innerHTML = iGridDate; 	
					a.className = "selectable";
					a.onclick = dateClick;
				}
				else
				{
					a.innerHTML = iGridDate;;
					a.className = "notselectable";
					a.onclick = null;
				}
				
			}	
			else
			{
				a.innerHTML = "";
				a.className = "notselectable";
				a.onclick = null;
			}
			if( iDt == iSelectedDate )
				a.className = "selected";		
		}	
		
	}
	var dcHeader = document.getElementById( "dateControl" + id + "Header" );
	dcHeader.innerHTML = months[iGridMonth] + "&nbsp;" + iGridYear;
}

function closeDateControl( id )
{
	var dc = document.getElementById( "dateControl" + id );
	dc.style.display = "none";
	
}

function dateClick( evt )
{
	evt = (evt) ? evt : (window.event) ? event : null;
	var a = evt.srcElement ? evt.srcElement : (evt.target) ? evt.target : null;
	if( evt && a )
	{
		var timeId = document.getElementById("dateControl" + id + "DisplayTime");
		var id = a.id.substring(8, a.id.lastIndexOf("_"));
		var iDate = parseInt(a.innerHTML, 10);
		var dt = new Date( parseInt(document.getElementById("dateControl" + id + "Grid").value, 10) );
		var sDate =  dt.getFullYear() + "-" + fixLength(dt.getMonth() + 1, 2) + "-" + fixLength(iDate, 2);
		document.getElementById( id ).value = sDate + (timeId?" " + timeId.options[timeId.selectedIndex].value + ":00":"");
		document.getElementById( "dateControl" + id + "Display" ).innerHTML = getStrDate("mmm dd, yyyy", new Date(dt.getFullYear(), dt.getMonth(), iDate));
		var dc = document.getElementById( "dateControl" + id );
		dc.style.display = "none";
	}
	
}
function dateAddTime( id, sel )
{
	var el = document.getElementById( id );
	if( el && el.value)
	{
		if( el.value.length ==  10)
			el.value = el.value + " " + sel.options[sel.selectedIndex].value + ":00";
		else if( el.value.length == 15 )
			el.value = el.value.substr(0, 10) + " " + sel.options[sel.selectedIndex].value + ":00";
	}
}

function nextMonth( id )
{
	var dtSelected = new Date( parseInt(document.getElementById( "dateControl" + id + "Selected" ).value, 10) );
	var dtGrid = new Date( parseInt(document.getElementById( "dateControl" + id + "Grid" ).value, 10) );
	var nextGridMonth = dtGrid.getMonth() + 1;
	var nextGridYear = dtGrid.getFullYear();
	if( nextGridMonth == 12 )
	{
		nextGridYear++;
		nextGridMonth = 0;
	}
	var dtNext = new Date(nextGridYear, nextGridMonth, 1);
	renderGrid( id, dtNext, dtSelected );
}

function previousMonth( id )
{
	var dtSelected = new Date( parseInt(document.getElementById( "dateControl" + id + "Selected" ).value, 10) );
	var dtGrid = new Date( parseInt(document.getElementById( "dateControl" + id + "Grid" ).value, 10) );
	var previousGridMonth = dtGrid.getMonth() - 1;
	var previousGridYear = dtGrid.getFullYear();
	if( previousGridMonth == -1 )
	{
		previousGridYear--;
		previousGridMonth = 11;
	}
	var dtPrevious = new Date(previousGridYear, previousGridMonth, 1);
	renderGrid( id, dtPrevious, dtSelected );
	
}

function submitFilter( orderBy )
{
	var orderByCurrent = document.getElementById("filter_orderby_current").value;
	if( orderByCurrent )
	{
		var tmp = orderByCurrent.split(" ");
		if(tmp[0] == orderBy && tmp[1] == "ASC")
			orderBy+=" DESC";
		else
			orderBy+=" ASC";
	}
	else
	{
		orderBy+=" ASC";
	}
	document.getElementById("filter_orderby").value = orderBy;
	document.getElementById("page_form").submit();
}

var winUpload;
function openUpload(el, dir)
{
	winUpload = window.open("upload.asp?el=" + el + "&dir=" + dir,"_blank","toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=400, height=200");
	winUpload.focus();
}

