AddEventListener = function(object, action, func, prop)
{
    if (object.addEventListener) // standardizovany postup
    {
        object.addEventListener(action, func, prop);
        return true;
    }
    else if (object.attachEvent)  // microsoft postup
    {
        object.attachEvent("on"+action, func);
        return true;
    } else {
        // report problem
        return false;
    }
}

function GetCheckboxes()
{
	var box = window.document.getElementById("product-line-box");
	return box.getElementsByTagName("input");
}

function GetCheckedCount()
{
	var checks = GetCheckboxes();
	var checked = 0;
	
	for (i = 0; i < checks.length; i++)
	{
		if (checks[i].checked) {
			checked++;
		}
	}

	return checked;
}

function GetEventTarget(e)
{
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
		
	return targ;
}

function CheckBoxClick(event)
{
	var targ = GetEventTarget(event);	
	var checked_total = GetCheckedCount();
	var checked_this = targ.checked;
	
	if (checked_total > 10 && checked_this) {
		alert("Please select no more than 10 product lines");
		targ.checked = false;
	}
}

function CheckDates(form)
{
	var frommonth = form.elements['from_m'].value;
	var fromyear = form.elements['from_y'].value;
	var tomonth = form.elements['to_m'].value;
	var toyear = form.elements['to_y'].value;
	
	// check 1: at least 1 product line must be selected
	if (GetCheckedCount() == 0) {
		alert("Please select some product lines first");
		return false;
	}
	
	// check 2: volid range of dates must be selected (from <= actual date)
	var today = new Date();
	var from_date = new Date();
	from_date.setFullYear(fromyear,frommonth-1,1);
	if (from_date > today) {
		alert("Invalid date range selected ('From' in future)");
		return false;
	}
	
	// check 3: valid range of dates must be selected (from <= to)
	if (fromyear < toyear) {
		// ok
	}
	else if (fromyear == toyear) {
		if (frommonth <= tomonth) {
			// ok
		}
		else {
			alert("Invalid date range selected ('From' is greater than 'To')");
			return false;
		} 
	}
	else {
		alert("Invalid date range selected ('From' is greater than 'To')");
		return false;
	}
	
	return true;
}

function AttachEvents(e)
{
	var checks = GetCheckboxes();
	var checks_count = checks.length;
	
	for (i = 0; i < checks_count; i++)
	{
		AddEventListener(checks[i], "click", CheckBoxClick, false);
	}
}

if (!AddEventListener(window, "load", AttachEvents, false))
{
    if (!AddEventListener(document, "load", AttachEvents, false))
    {
        ; // report problem
    }
}
