(function($){ $.addtransFrame = function(t,p){ p = $.extend({ form : '', data : '', type : 'getDistrict', tmplDom : '', appendto : '', appendtype : 'oddEven', nullToShow : '---', pic : false, priceUnit : false,//string rentUnit : false,//string hideWhenNull : false, tmplType : 'single', defaultValue : false, defaultDataStandard : true, pageNumber : true, ajaxSuccess : false, ajaxfinished : false, tmplfinished : false, modifyData : false, afterEachData : false, useDefaultHiddenSearch : true, autoSearch : true, resetForm : false, autoSearchInForm : false, autoresizeImg : true, searchobj : {}, hiddenInclude : [],//[ // { // name:'', // value: // } // ] transSearchObj : { pageObj : { wrap:$("#pageWrap"), displayPage:9, recordPerPage:20, pageClass:'pd_pageNum', totalloc:'#pd_total,.pd_total' }, sortObj : { sortName:'[name=sort_by],[name=sort_method]' } }, indexObj : { limit : 6, indexType :'template3' }, bigRowNo :0 //only for fotan }, p); /*DOM ids/classes*/ var v={ defaultDataStandard:function (d){ data=[]; $.each(d,function(idx,item){ $.each(item,function(i,e){ switch(i) { case 'PRICE': item['O_PRICE']=e; if (item[i]==''||item[i]=='0'||item[i]==null) item[i]=p.nullToShow; else if (p.priceUnit){ item['O_PRICE']=e; item[i]=f.numberFormat(e,p.priceUnit.toUpperCase()); } break; case 'CONSIDERTN': item['O_CONSIDERTN']=e; if (item[i]==''||item[i]=='0'||item[i]==null) item[i]=p.nullToShow; else if (p.priceUnit){ item['O_CONSIDERTN']=e; item[i]=f.numberFormat(e,p.priceUnit.toUpperCase()); } else item[i]=f.numberFormat(e,''); break; case 'RENT': item['O_RENT']=e; if (item[i]==''||item[i]=='0'||item[i]==null) item[i]=p.nullToShow; else if (p.rentUnit){ item['O_RENT']=e; item[i]=f.numberFormat(e,p.rentUnit.toUpperCase()); } break; case 'STREETNUMBER': if (item[i]==''||item[i]=='0'||item[i]==null) item[i]=p.nullToShow; else { item[i]=item[i].replace(/^0+/, '') } break; default: if (item[i]==''||item[i]=='0'||item[i]==null) item[i]=p.nullToShow; break; } }); data.push(item); }); d=data; return d; } }; /*event*/ var e = { initAllEvent : function(){ switch (typeof p.tmplDom){ case 'string': p.tmplDom=$(t).find(p.tmplDom); break; default: break; } if ((typeof p.form)=='string'){ p.form=$(p.form); } switch (p.type){ case 'getDistrict': f.getPropertydistrict(); break; case 'getTransList': if (p.resetForm){ f.resetForm(); } if (p.useDefaultHiddenSearch) f.defaulthiddenSearch(); if (p.autoSearchInForm) f.autoSearchInForm(); f.getTransList(p.data); e.sortTrigger(); e.pageTrigger(); e.formTrigger(); break; case 'gettransDetail': f.gettransDetail(p.data); break; } if (p.tmplfinished)p.tmplfinished(); }, sortTrigger : function(){ $(p.transSearchObj.sortObj.sortName).change(function(){ var para=p.form.serialize(); p = $.extend({}, p,para); f.getTransList(); }); }, pageTrigger : function(){ $('.'+p.transSearchObj.pageObj.pageClass).live("click",function(){ // console.log('asd'); var page = $(this).attr("rel"); p.transSearchObj.pageObj.wrap.find("input[name=page_position]").val(page); var para=p.form.serialize(); p = $.extend({}, p,para); f.getTransList(); }); }, formTrigger : function(){ p.form.submit(function(){ p.transSearchObj.pageObj.wrap.find("input[name=page_position]").val(1); var para=p.form.serialize(); p = $.extend({}, p,para); f.getTransList(); return false; }) } } /*frame funciton*/ var f = { startresize:function(){ }, getTransList :function (para){ if (!(para)) para=p.form.serializeArray(); if (typeof p.hiddenInclude == 'object'){ var hiddenincludeArray=f.object2array(p.hiddenInclude); para=para.concat(hiddenincludeArray); }else { para=para.concat(p.hiddenInclude); } // para=para.concat(p.hiddenInclude); // console.log(p.form); // console.log(para); $.ajax({ url : "./ajax/getTransaction.php?type=transList", dataType : "json", data : para, type : "post", error : function(xhr, st,err){ }, success : function(data){ $(p.appendto).html(''); if (p.ajaxSuccess) p.ajaxSuccess(data); if (p.pageNumber)f.generatePageBtn(data.TOTAL,data.PAGE_POSITION); if (p.defaultDataStandard)data.DAYBOOK_RESULT=v.defaultDataStandard(data.DAYBOOK_RESULT); if (p.modifyData)data=p.modifyData(data); f.applytamplate(data.DAYBOOK_RESULT); } }); }, gettransDetail :function (para){ $.ajax({ url : "./ajax/getTransaction.php?type=propertyDetail", dataType : "json", data : para, type : "post", error : function(xhr, st,err){ }, success : function(data){ if (p.ajaxSuccess) p.ajaxSuccess(data); if (p.defaultDataStandard)data=v.defaultDataStandard(data); if (p.modifyData)data=p.modifyData(data); f.applytamplate(data); } }); }, autoSearchInForm : function (){ switch (typeof p.autoSearchInForm){ case 'boolean': p.form.find(':input').each(function(){ f.addSearchListener(this); }) break; } }, defaulthiddenSearch : function (){ p.form.find('input:hidden').each(function(i,e){ var obj=$("[form="+$(e).attr('name')+']'); if (obj.length){ switch(obj[0].type){ case 'password': break; case 'select-multiple': case 'select-one': obj.live('change',function(){ //var value=($(this).attr('rel'))?$(this).attr('rel'):$(this).val(); $(e).val($(this).find("option:selected").val()); p.data=p.form.serialize(); if (p.autoSearch) f.getTransList(p.data); }); break; case 'text': case 'textarea': break; // $(this).val(''); // break; case 'checkbox': break; case 'radio': obj.live('change',function(){ //var value=($(this).attr('rel'))?$(this).attr('rel'):$(this).val(); $(e).val($(this).find("option:selected").val()); p.data=p.form.serialize(); if (p.autoSearch) f.getTransList(p.data); }) default : obj.live('click',function(){ var value=($(this).attr('rel'))?$(this).attr('rel'):$(this).val(); $(e).val(value); p.data=p.form.serialize(); if (p.autoSearch) f.getTransList(p.data); }) } } }) }, generatePageBtn : function (tRecord,pagePos){ $(p.transSearchObj.pageObj.totalloc).html(tRecord); var wrap = p.transSearchObj.pageObj.wrap; var recordPerPage= p.transSearchObj.pageObj.recordPerPage; var displayPage = p.transSearchObj.pageObj.displayPage; // odd number preferred var totalPage = Math.ceil(tRecord/recordPerPage); var sepNum = parseInt((displayPage-1)/2); var curPage = parseInt(pagePos); var pageBtn = ''+i+''; } }else{ firstGenNum = parseInt(curPage - sepNum); lastGenNum = parseInt(curPage + sepNum); if (firstGenNum <1){ remainGenNum = Math.abs(firstGenNum); firstGenNum = 1; lastGenNum += remainGenNum+1; } if (lastGenNum>totalPage){ remainGenNum = Math.abs(totalPage-lastGenNum); lastGenNum = totalPage; firstGenNum -= remainGenNum; } /*************************************/ for (var i=firstGenNum; i<=lastGenNum;i++){ pageBtnsDOM += pageBtn+i+'">'+i+''; } if (lastGenNum!=totalPage){ pageBtnsDOM+=" ... " } if (firstGenNum!=1){ pageBtnsDOM=" ... "+pageBtnsDOM; } } wrap.find(".numBtns").html(pageBtnsDOM); wrap.find(".noResult").remove(); wrap.find("#lastPage").attr("rel",totalPage); /*highlight current page*/ $(".numBtns").find("a").removeClass("currentPage"); $(".numBtns").find("a[rel="+pagePos+"]").addClass("currentPage"); }, applytamplate : function (data) { $.each(data,function(idx,item){ var check=''; var select=''; if (p.defaultValue){ $.each(p.defaultValue,function(i,e){ if (eval(item[i])==e){ check='checked'; select='selected'; } }) } var result = $.extend({DF_CHECKED:check,DF_SELECT:select,INDEX:idx}, item); var tmpl=f.tmeplateDomMethod(idx,result); // tmpl.appendTo(p.appendto); f.appendToMethod(tmpl,idx); if (p.autoresizeImg) {tmpl.find('img').imageResize();} // console.log($(".ps_list_pic").find('img')); if (p.hideWhenNull) f.showHideDom(result,tmpl); if (p.pic) f.showtamplatePic(result.SMALL_IMAGE_LIST); if (p.afterEachData)p.afterEachData(idx,tmpl,result); }); }, tmeplateDomMethod: function(index,result){ switch (p.tmplType){ case 'single': return p.tmplDom.tmpl(result); break; case 'multi': var no=(index+1)%(p.tmplDom.length); return p.tmplDom[no].tmpl(result); break; case 'special_FoTan': if (index 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; }, reloadList: function(data){ p = $.extend({}, p,data); }, resetForm: function (){ p.form.find(p.resetForm).click(function(){ p.form.find(':input').each(function() { switch(this.type) { case 'select-multiple': case 'select-one': this.selectedIndex = -1; case 'password': case 'text': case 'textarea': $(this).val(''); break; case 'checkbox': case 'radio': this.checked = false; } }); }) }, reloadMaster :function (data){ p = $.extend({}, p,data); e.initAllEvent(); } }; e.initAllEvent(); t.p = p; t.frame = f; t.event = e; return t; } var docloaded = false; $(document).ready(function () {docloaded = true} ); $.fn.transFrame = function(p) { return this.each( function() { if (!docloaded){ $(this).hide(); var t = this; $(document).ready( function (){ $.addtransFrame(t,p); } ); } else { $.addtransFrame(this,p); } }); }; $.fn.transFrameReload = function(p) { // function to reload grid return this.each( function() { if (this.frame) this.frame.reloadMaster(p); }); }; $.fn.transFrameReloadList = function(p) { // function to reload grid return this.each( function() { if (this.frame) this.frame.reloadMaster(p); }); }; })(jQuery)