// 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)	// override if page only is given
	{
		var pathname = "";
		var lastSlash = window.location.pathname.lastIndexOf('/');
		if (lastSlash > 0)
			pathname = window.location.pathname.substring(0, lastSlash);
		
		pagePath = 'http://' + window.location.host + pathname + '/' + pagePath
	}

	var paramList = '';
	if (paramArray.length > 0)
	{
		for (var i=0; i<paramArray.length; i+=2)
		{
			if (paramList.length > 0) paramList += ',';
			paramList += '"' + paramArray[i] + '":"' + paramArray[i+1].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 obj = eval("("+response+")");
	PopulateDDLWithObject(ddl_ID, obj);
}


function PopulateDDLWithObject(ddl_ID, obj) {
	$("#" + ddl_ID + ">option").remove();
	for (var i=0;i<obj.length;i++) { 
		$("#" + ddl_ID).append($('<option></option>').val(obj[i].ID).html(obj[i].Value));
	}
}