// opste funkcije za validaciju
var decimal_format = /\s*[\+\-]?\d+(\.\d+)?\s*/;
var date_format = /(\d\d?)\.(\d\d?)\.((?:\d\d)?\d\d)/;
var date_order = "dmy";	// oznacava grupe
var timestamp_format = //;

// format: nesto kao "yyyy-mm-dd"
// separator: "-" u gornjem slucaju
// input: kontrola sa vrednoscu
function parse_date(format, separator, input) {
	var retVal;

	retVal = undef;

	return retVal;
}

function validate_int(num) {
	var p;

	p = parseInt(num, 10);
	p = "" + p;
	if (p == "NaN")
		return false;

	if (p == num)
		return true;
	else
		return false;
}

function validate_decimal(num) {
	num = num.replace(decimal_format, "");

	if (num == "")
		return true;
	else
		return false;
}

function validate_bool(b) {
	if (b == "true")
		return true;

	if (b == "false")
		return true;

	return false;
}

function validate_present(x) {
	if (x == null)
		return false;

	if (x == "")
		return false;

	return true;
}

function days_of_month(month, year) {
	switch (month) {
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		return 31;
	case 4:
	case 6:
	case 9:
	case 11:
		return 30;
	}
	
	if ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0)))
		return 29;
	else
		return 28;
}

function validate_date(d) {
	var day;
	var month;
	var year;
	
	if (d.replace(date_format, "") != "")
		return false;
	
	day = date_order.indexOf("d") + 1;
	month = date_order.indexOf("m") + 1;
	year = date_order.indexOf("y") + 1;
	
	day = d.replace(date_format, "$" + day);
	month = d.replace(date_format, "$" + month);
	year = d.replace(date_format, "$" + year);
	
	day = parseInt(day);
	month = parseInt(month);
	year = parseInt(year);
	
	if ((day > 31) || (day < 1))
		return false;
	
	if ((month > 12) || (month < 1))
		return false;
	
	if (day > days_of_month(month, year))
		return false;

	return true;
}

function validate_timestamp(d) {
	return validate_date(d);
}

function highlight_control(input) {
	input.style.backgroundColor = "#F08080";
}

function unhighlight_control(input) {
	input.style.backgroundColor = "";
}

function validate_form(forma) {
	var retVal = true;
	var i;

	for (i = 0; i < forma.length; i++) {
		var input;
		var validate_func;

		input = forma.elements[i];
		validate_func = input.getAttribute("onvalidate");
		if (validate_func != null) {
			eval("var valid = " + validate_func + "(input);");
			retVal = retVal && valid;
		}
	}

	return retVal;
}


function validate_Department_Name(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Department_Visible(input) {
	var retVal = true;

	retVal = validate_bool(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Department_SignatureForEmail(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Department_EMail(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Department_EMailHost(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Department_EMailUsername(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Department_EMailPassword(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Department(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_Ticket_CreationTime(input) {
	var retVal = true;

	retVal = validate_timestamp(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Ticket_Closed(input) {
	var retVal = true;

	retVal = validate_bool(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Ticket(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_Attachment_Contents(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Attachment_MimeType(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Attachment_Name(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Attachment(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_KBCategory_Title(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBCategory_Published(input) {
	var retVal = true;

	retVal = validate_bool(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBCategory_RequiresLogin(input) {
	var retVal = true;

	retVal = validate_bool(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBCategory_Decription(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBCategory(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_KBArticle_Title(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBArticle_Published(input) {
	var retVal = true;

	retVal = validate_bool(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBArticle_Contents(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBArticle(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_KBComment_CreationTime(input) {
	var retVal = true;

	retVal = validate_timestamp(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBComment_Title(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBComment_Contents(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBComment_Approved(input) {
	var retVal = true;

	retVal = validate_bool(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBComment_Keywords(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_KBComment(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_Admin_Username(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Admin_Password(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Admin_Firstname(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Admin_Lastname(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Admin_EMail(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Admin_Description(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Admin_Active(input) {
	var retVal = true;

	retVal = validate_bool(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Admin(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_Message_CreationTime(input) {
	var retVal = true;

	retVal = validate_timestamp(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Message_Subject(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_Message(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_AdminGroup_Name(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_AdminGroup_Description(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_AdminGroup(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_EmailTemplate_Name(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_EmailTemplate_Description(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_EmailTemplate(forma) {
	var retVal = validate_form(forma);

	return retVal;
}

function validate_News_Title(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_News_Date(input) {
	var retVal = true;

	retVal = validate_date(input.value);

	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_News_Content(input) {
	var retVal = true;


	if (!retVal)
		highlight_control(input);
	else
		unhighlight_control(input);

	return retVal;
}

function validate_News(forma) {
	var retVal = validate_form(forma);

	return retVal;
}
