/* * Folks Ajax Framework * * Copyright (c) 2008 Eduardo Dias (www.codeplex.com/folks) * Licensed under the Ms-PL license. * */ var Folks = { //Private fiels __evtt : "__EVENTTARGET", __evta : "__EVENTARGUMENT", __evtv : "__EVENTVALIDATION", __vs : "__VIEWSTATE", __lf : "__LASTFOCUS", //Initialization init : function() { $(document).ready(Folks.initialize); }, initialize : function () { window.__originalDoPostBack = window.__doPostBack; window.__doPostBack = Folks.doPostBack; $('form').find(':submit').each(Folks.configureButton); }, //PostBack ensureEventTarget : function(eventTarget) { var target = $('*[name=' + eventTarget + ']'); if(target.length == 0) target = $('#' + eventTarget); if(target.length == 0) target = $('*[name=' + eventTarget.substring(0, eventTarget.lastIndexOf('$')) + ']'); return target; }, ensureEventFields : function() { var field = ''; var evtt = $('#' + Folks.__evtt); var evta = $('#' + Folks.__evta); if(evtt.length == 0) $(field).attr('id', Folks.__evtt).attr('name', Folks.__evtt).appendTo('form'); if(evta.length == 0) $(field).attr('id', Folks.__evta).attr('name', Folks.__evta).appendTo('form'); }, doPostBack : function(eventTarget, eventArgument) { var status = false; var target = Folks.ensureEventTarget(eventTarget); try { if(target.is('*[rel=folks]') || target.parents('*[rel=folks]').length > 0) { Folks.ensureEventFields(); $('#' + Folks.__evtt).val(eventTarget); $('#' + Folks.__evta).val(eventArgument); var data = Folks.parseData(target, eventTarget, eventArgument); $.ajax ( { url : $('form').attr('action'), type : "POST", dataType : "html", data : data, success : Folks.renderResponse, error : Folks.renderError } ); status = true; } else if(window.__originalDoPostBack != null) { window.__originalDoPostBack(eventTarget, eventArgument); status = true; } } catch(ex) { if(ex != null && ex.message != null) alert(ex.message); } if(target.is(':submit')) return status; }, //Parse parseData : function(target, eventTarget, eventArgument) { var data = {}; var dataStr = "data = {"; if(!target.is(':radio,:checkbox,:submit')) dataStr += Folks.parseCommonForm(); else dataStr += Folks.parseRadioCheckboxSubmit(target, eventArgument); dataStr += "}"; eval(dataStr); return data; }, parseCommonForm : function() { var dataStr = ''; var form = Folks.$($('form').attr('id')); if(form != null && form.elements != null) for(var i=0;i