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_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._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('&')}}
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 requestBody=''
if(verb.toUpperCase()==='GET' || verb.toUpperCase()==='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)
request.set_httpVerb(verb)
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.handleSubmit=function Sys_Mvc_AsyncForm$handleSubmit(form,evt,ajaxOptions){
evt.preventDefault()
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')

