
﻿(function($){var _defaults={verb:'POST',data:new Object(),async:true,username:null,password:null,beforeSend:null,processData:null,success:null,error:null,complete:null,context:new Object()};var _globals={beforeSend:null,processData:null,success:null,error:null,complete:null};function getXhr(){if(typeof XMLHttpRequest!="undefined"){return new XMLHttpRequest();}
else if(typeof ActiveXObject!="undefined"){try{return new ActiveXObject('Msxml2.XMLHTTP');}
catch(err){try{return new ActiveXObject('Microsoft.XMLHTTP');}catch(e){}}}};function cTD(v){var rx=/\/Date\((-?[0-9]+)(\+[0-9]+)?\)\//g;if(rx.test(v)){var milli=Number(v.replace(rx,'$1'));if(!isNaN(milli))
v=new Date(Number(v.replace(rx,'$1')));else
throw new Error("Date format not recognised.");}
return v;};function tO(v){if(v!=null){if(v.constructor==String){v=cTD(v);}
else if(v.constructor==Object||v.constructor==Array){$.each(v,function(i,x){v[i]=i!="__type"?tO(x):x;});}}
return v;};$.ajaxDotNet=function(url,options){options=$.extend({},_defaults,options);var xhr=getXhr();var data='';if(options.verb=='GET'){for(var i in options.data){if(data!=''){data+='&';}
data+=i+'='+JSON.stringify(options.data[i]);}
url+='?'+data;data=null;}
else if(options.verb=='POST'){data=JSON.stringify(options.data);}
if(typeof _globals.beforeSend=="function"){xhr=_globals.beforeSend(xhr)||false;}
if(xhr&&typeof options.beforeSend=="function"){xhr=options.beforeSend(xhr)||false;}
if(xhr){xhr.open(options.verb,url,options.async,options.username,options.password);xhr.onreadystatechange=function(){if(xhr.readyState==4){var r=xhr.responseText;var e=null;if(r.constructor==String){if(r!=''){try{r=JSON.parse(xhr.responseText);if(typeof r=="object"&&r.Message!==undefined&&r.StackTrace!==undefined&&r.ExceptionType!==undefined){e=r;}
else{r=tO(r);}}
catch(err){e=err;}}
else{r={};}}
if(typeof _globals.processData=="function"){r=_globals.processData(r)||false;}
if(r&&typeof options.processData=="function"){r=options.processData(r)||false;}
if(e==null&&xhr.status==200){if(typeof _globals.success=="function"){_globals.success(r,xhr.status,xhr.statusText,options.context);}
if(typeof options.success=="function"){options.success(r||e,xhr.status,xhr.statusText,options.context);}}
else{if(typeof _globals.error=="function"){_globals.error(xhr,xhr.statusText,e,options.context);}
if(typeof options.error=="function"){options.error(xhr,xhr.statusText,e,options.context);}}
if(typeof _globals.complete=="function"){_globals.complete(r,e,xhr,options.context);}
if(typeof options.complete=="function"){options.complete(r,e,xhr,options.context);}}};xhr.setRequestHeader("Content-Type","application/json; charset=utf-8");xhr.send(data);}};$.ajaxDotNet.defaults=function(options){_defaults=$.extend(_defaults,options);};$.ajaxDotNet.globals=function(options){_globals=$.extend(_globals,options);};})(jQuery);
