function maxlen(field, counterName, max) {
	var counter = document.getElementById(counterName);

	if (field.value.length > max)
		field.value = field.value.substring(0, max);
	else
		if (counter != null)
		counter.firstChild.data = max - field.value.length;
}

// http://www.dexign.net/post/2008/07/16/jQuery-To-Call-ASPNET-Page-Methods-and-Web-Services.aspx
function PageMethod(pagePath, fn, paramArray, successFn, errorFn) {
	if (pagePath == '/')	// Override for default
		pagePath = 'default.aspx';

	if (pagePath.indexOf("http://") == -1)
		pagePath = 'http://' + window.location.host + '/' + pagePath

	var paramList = '';
	if (paramArray.length > 0) {
		for (var i = 0; i < paramArray.length; i += 2) {
			if (paramList.length > 0) paramList += ',';

			if (paramArray[i + 1] == undefined)
				paramArray[i + 1] = '';

			paramList += '"' + paramArray[i] + '":"' + paramArray[i + 1].toString().replace(/"/g, '\\\"') + '"';
		}
	}

	paramList = '{' + paramList + '}';

	//Call the page method   
	$.ajax({
		type: "POST",
		url: pagePath + '/' + fn,
		contentType: "application/json; charset=utf-8",
		data: paramList,
		dataType: "json",
		success: successFn,
		error: errorFn
	});
}

function GenericFail(xml, options, msg) {
	alert(xml.statusText + ": " + xml.responseText + " - " + options + " / " + msg);
}

function PopulateDDL(ddl_ID, response) {
	var myObject = eval("(" + response + ")");
	$("#" + ddl_ID + ">option").remove();
	for (var i = 0; i <= myObject.length - 1; i++) {
		$("#" + ddl_ID).append($('<option></option>').val(myObject[i].ID).html(myObject[i].Value));
	}
}
