/* All Rights Reserved - Compressed Files - (C) Copyright 2010 - Softel vdm, Inc. and the respective original copyright holder - www.softelvdm.com */


Type.registerNamespace('Sys.Mvc');Sys.Mvc.$create_AjaxOptions=function Sys_Mvc_AjaxOptions(){return{};}
Sys.Mvc.InsertionMode=function(){};Sys.Mvc.InsertionMode.prototype={replace:0,insertBefore:1,insertAfter:2}
Sys.Mvc.InsertionMode.registerEnum('Sys.Mvc.InsertionMode',false);Sys.Mvc.AjaxContext=function Sys_Mvc_AjaxContext(request,updateTarget,loadingElement,insertionMode){this._request=request;this._updateTarget=updateTarget;this._loadingElement=loadingElement;this._insertionMode=insertionMode;}
Sys.Mvc.AjaxContext.prototype={_insertionMode:0,_loadingElement:null,_response:null,_request:null,_updateTarget:null,get_data:function Sys_Mvc_AjaxContext$get_data(){if(this._response){return this._response.get_responseData();}
else{return null;}},get_insertionMode:function Sys_Mvc_AjaxContext$get_insertionMode(){return this._insertionMode;},get_loadingElement:function Sys_Mvc_AjaxContext$get_loadingElement(){return this._loadingElement;},get_object:function Sys_Mvc_AjaxContext$get_object(){var executor=this.get_response();return(executor)?executor.get_object():null;},get_response:function Sys_Mvc_AjaxContext$get_response(){return this._response;},set_response:function Sys_Mvc_AjaxContext$set_response(value){this._response=value;return value;},get_request:function Sys_Mvc_AjaxContext$get_request(){return this._request;},get_updateTarget:function Sys_Mvc_AjaxContext$get_updateTarget(){return this._updateTarget;}}
Sys.Mvc.AsyncHyperlink=function Sys_Mvc_AsyncHyperlink(){}
Sys.Mvc.AsyncHyperlink.handleClick=function Sys_Mvc_AsyncHyperlink$handleClick(anchor,evt,ajaxOptions){evt.preventDefault();Sys.Mvc.MvcHelpers._asyncRequest(anchor.href,'post','',anchor,ajaxOptions);}
Sys.Mvc.MvcHelpers=function Sys_Mvc_MvcHelpers(){}
Sys.Mvc.MvcHelpers._serializeSubmitButton=function Sys_Mvc_MvcHelpers$_serializeSubmitButton(element,offsetX,offsetY){if(element.disabled){return null;}
var name=element.name;if(name){var tagName=element.tagName.toUpperCase();var encodedName=encodeURIComponent(name);var inputElement=element;if(tagName==='INPUT'){var type=inputElement.type;if(type==='submit'){return encodedName+'='+encodeURIComponent(inputElement.value);}
else if(type==='image'){return encodedName+'.x='+offsetX+'&'+encodedName+'.y='+offsetY;}}
else if((tagName==='BUTTON')&&(name.length)&&(inputElement.type==='submit')){return encodedName+'='+encodeURIComponent(inputElement.value);}}
return null;}
Sys.Mvc.MvcHelpers._serializeForm=function Sys_Mvc_MvcHelpers$_serializeForm(form){var formElements=form.elements;var formBody=new Sys.StringBuilder();var count=formElements.length;for(var i=0;i<count;i++){var element=formElements[i];var name=element.name;if(!name||!name.length){continue;}
var tagName=element.tagName.toUpperCase();if(tagName==='INPUT'){var inputElement=element;var type=inputElement.type;if((type==='text')||(type==='password')||(type==='hidden')||(((type==='checkbox')||(type==='radio'))&&element.checked)){formBody.append(encodeURIComponent(name));formBody.append('=');formBody.append(encodeURIComponent(inputElement.value));formBody.append('&');}}
else if(tagName==='SELECT'){var selectElement=element;var optionCount=selectElement.options.length;for(var j=0;j<optionCount;j++){var optionElement=selectElement.options[j];if(optionElement.selected){formBody.append(encodeURIComponent(name));formBody.append('=');formBody.append(encodeURIComponent(optionElement.value));formBody.append('&');}}}
else if(tagName==='TEXTAREA'){formBody.append(encodeURIComponent(name));formBody.append('=');formBody.append(encodeURIComponent((element.value)));formBody.append('&');}}
var additionalInput=form._additionalInput;if(additionalInput){formBody.append(additionalInput);formBody.append('&');}
return formBody.toString();}
Sys.Mvc.MvcHelpers._asyncRequest=function Sys_Mvc_MvcHelpers$_asyncRequest(url,verb,body,triggerElement,ajaxOptions){if(ajaxOptions.confirm){if(!confirm(ajaxOptions.confirm)){return;}}
if(ajaxOptions.url){url=ajaxOptions.url;}
if(ajaxOptions.httpMethod){verb=ajaxOptions.httpMethod;}
if(body.length>0&&!body.endsWith('&')){body+='&';}
body+='X-Requested-With=XMLHttpRequest';var upperCaseVerb=verb.toUpperCase();var isGetOrPost=(upperCaseVerb==='GET'||upperCaseVerb==='POST');if(!isGetOrPost){body+='&';body+='X-HTTP-Method-Override='+upperCaseVerb;}
var requestBody='';if(upperCaseVerb==='GET'||upperCaseVerb==='DELETE'){if(url.indexOf('?')>-1){if(!url.endsWith('&')){url+='&';}
url+=body;}
else{url+='?';url+=body;}}
else{requestBody=body;}
var request=new Sys.Net.WebRequest();request.set_url(url);if(isGetOrPost){request.set_httpVerb(verb);}
else{request.set_httpVerb('POST');request.get_headers()['X-HTTP-Method-Override']=upperCaseVerb;}
request.set_body(requestBody);if(verb.toUpperCase()==='PUT'){request.get_headers()['Content-Type']='application/x-www-form-urlencoded;';}
request.get_headers()['X-Requested-With']='XMLHttpRequest';var updateElement=null;if(ajaxOptions.updateTargetId){updateElement=$get(ajaxOptions.updateTargetId);}
var loadingElement=null;if(ajaxOptions.loadingElementId){loadingElement=$get(ajaxOptions.loadingElementId);}
var ajaxContext=new Sys.Mvc.AjaxContext(request,updateElement,loadingElement,ajaxOptions.insertionMode);var continueRequest=true;if(ajaxOptions.onBegin){continueRequest=ajaxOptions.onBegin(ajaxContext)!==false;}
if(loadingElement){Sys.UI.DomElement.setVisible(ajaxContext.get_loadingElement(),true);}
if(continueRequest){request.add_completed(Function.createDelegate(null,function(executor){Sys.Mvc.MvcHelpers._onComplete(request,ajaxOptions,ajaxContext);}));request.invoke();}}
Sys.Mvc.MvcHelpers._onComplete=function Sys_Mvc_MvcHelpers$_onComplete(request,ajaxOptions,ajaxContext){ajaxContext.set_response(request.get_executor());if(ajaxOptions.onComplete&&ajaxOptions.onComplete(ajaxContext)===false){return;}
var statusCode=ajaxContext.get_response().get_statusCode();if((statusCode>=200&&statusCode<300)||statusCode===304||statusCode===1223){if(statusCode!==204&&statusCode!==304&&statusCode!==1223){var contentType=ajaxContext.get_response().getResponseHeader('Content-Type');if((contentType)&&(contentType.indexOf('application/x-javascript')!==-1)){eval(ajaxContext.get_data());}
else{Sys.Mvc.MvcHelpers.updateDomElement(ajaxContext.get_updateTarget(),ajaxContext.get_insertionMode(),ajaxContext.get_data());}}
if(ajaxOptions.onSuccess){ajaxOptions.onSuccess(ajaxContext);}}
else{if(ajaxOptions.onFailure){ajaxOptions.onFailure(ajaxContext);}}
if(ajaxContext.get_loadingElement()){Sys.UI.DomElement.setVisible(ajaxContext.get_loadingElement(),false);}}
Sys.Mvc.MvcHelpers.updateDomElement=function Sys_Mvc_MvcHelpers$updateDomElement(target,insertionMode,content){if(target){switch(insertionMode){case Sys.Mvc.InsertionMode.replace:target.innerHTML=content;break;case Sys.Mvc.InsertionMode.insertBefore:if(content&&content.length>0){target.innerHTML=content+target.innerHTML.trimStart();}
break;case Sys.Mvc.InsertionMode.insertAfter:if(content&&content.length>0){target.innerHTML=target.innerHTML.trimEnd()+content;}
break;}}}
Sys.Mvc.AsyncForm=function Sys_Mvc_AsyncForm(){}
Sys.Mvc.AsyncForm.handleClick=function Sys_Mvc_AsyncForm$handleClick(form,evt){var additionalInput=Sys.Mvc.MvcHelpers._serializeSubmitButton(evt.target,evt.offsetX,evt.offsetY);form._additionalInput=additionalInput;}
Sys.Mvc.AsyncForm.handleSubmit=function Sys_Mvc_AsyncForm$handleSubmit(form,evt,ajaxOptions){evt.preventDefault();var validationCallbacks=form.validationCallbacks;if(validationCallbacks){for(var i=0;i<validationCallbacks.length;i++){var callback=validationCallbacks[i];if(!callback()){return;}}}
var body=Sys.Mvc.MvcHelpers._serializeForm(form);Sys.Mvc.MvcHelpers._asyncRequest(form.action,form.method||'post',body,form,ajaxOptions);}
Sys.Mvc.AjaxContext.registerClass('Sys.Mvc.AjaxContext');Sys.Mvc.AsyncHyperlink.registerClass('Sys.Mvc.AsyncHyperlink');Sys.Mvc.MvcHelpers.registerClass('Sys.Mvc.MvcHelpers');Sys.Mvc.AsyncForm.registerClass('Sys.Mvc.AsyncForm');

