(function($){ $.addestateFrame = function(t,p){ p = $.extend({ data : '', type : 'getDistrict', tmplDom : '', appendto : '', pageNumber : true, defaultDataStandard : true, ajaxSuccess : false , ajaxfinished : false , tmplfinished : false , hideWhenNull : false, modifyData : false, afterEachData : false, nullToShow : '---', showPic:false, showtamplatePic :{ type:'building', bigtamplateid:'#bigimgBuilding', biglocation:".bigPic_bld", smalltamplateid:"#thunmbimgBuilding", smalllocation:"#thumbImageList_bld" } }, p); /*DOM ids/classes*/ var v={ showtamplatePic : $.extend({ type:'building', bigtamplateid:'#bigimgBuilding', biglocation:".bigPic_bld", smalltamplateid:"#thunmbimgBuilding", smalllocation:"#thumbImageList_bld" , width:320, height:255 },p.showtamplatePic), defaultDataStandard:function (d){ data=[]; $.each(d,function(idx,item){ $.each(item,function(i,e){ switch(i) { case 'PRICE': if (item[i]==''||item[i]=='0'||item[i]==null) item[i]=p.nullToShow; else if (p.priceUnit){ item[i]=f.numberFormat(e,p.priceUnit.toUpperCase()); } break; case 'RENT': if (item[i]==''||item[i]=='0'||item[i]==null) item[i]=p.nullToShow; else if (p.priceUnit){ item[i]=f.numberFormat(e,p.rentUnit.toUpperCase()); } break; case 'BLD_STREETNO1': case 'EST_STREETNO': 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(){ if ((typeof p.tmplDom)=='string'){ p.tmplDom=$(t).find(p.tmplDom); } switch (p.type){ case 'getDistrict': f.getEstatedistrict(); break; case 'getEstateList': f.getEstateList(p.data); break; case 'getEstateDetail': f.getEstateDetail(p.data); break; } if (p.tmplfinished)p.tmplfinished(); } } /*frame funciton*/ var f = { getEstatedistrict : function(){ $.ajax({ url : "./ajax/getEstate.php?type=distlist", dataType : "json", type : "post", async : false, error : function(xhr, st,err){ }, success : function(data){ if (p.modifyData) data=p.modifyData(data); var distdom="${EST_DISTENAME} |"; $.template( "distTmpl", distdom ); $.each(data,function(i,e){ switch (e.EST_ZONEE){ case 'Kowloon': if (p.tmplDom=='') $.tmpl( "distTmpl", e ).appendTo( ".klnbld" ); else p.tmplDom.tmpl(e).appendTo(".klnbld"); break; case 'Hong Kong': if (p.tmplDom=='') $.tmpl( "distTmpl", e ).appendTo( ".hkbld" ); else p.tmplDom.tmpl(e).appendTo(".hkbld"); break; } }) } }); }, getEstateList :function (para){ $.ajax({ url : "./ajax/getEstate.php?type=getList", dataType : "json", data : para, type : "post", async : false, 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.SEARCH_RESULT=v.defaultDataStandard(data.SEARCH_RESULT); if (p.modifyData)data=p.modifyData(data); $(".pd_total").html(data.TOTAL); f.applytamplate(data.SEARCH_RESULT); } }); }, getEstateDetail :function (para){ $.ajax({ url : "./ajax/getEstate.php?type=record", dataType : "json", data : para, type : "post", async : false, 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=v.defaultDataStandard(data); if (p.modifyData)data=p.modifyData(data); // $(".pd_total").html(data.TOTAL); f.applytamplate(data); } }); }, generatePageBtn : function (tRecord,pagePos){ var wrap = $(".pageWrap"); var recordPerPage= 5; var displayPage = 9; // 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"); }, showtamplatePic: function(data){ var PicObj=v.showtamplatePic; if (!(data)){ var img=[{ pid:0 }]; $(PicObj.bigtamplateid).tmpl( img ).appendTo( PicObj.biglocation ).imageResize({ width:320, height:255 }); $(PicObj.smalltamplateid).tmpl( img ).appendTo( PicObj.smalllocation ); } else{ $.each(data, function(i2,item2){ var img=[{ pid:item2 }]; if(i2==0 &&$(PicObj.bigtamplateid).length ){ $(PicObj.bigtamplateid).tmpl( img ).appendTo( PicObj.biglocation).imageResize({ width:320, height:255 }); } if($(PicObj.smalltamplateid).length ) $(PicObj.smalltamplateid).tmpl( img ).appendTo( PicObj.smalllocation).imageResize({ width:65, height:65 }); }) } $(PicObj.smalllocation).jcarousel(); }, applytamplate : function (data) { $.each(data,function(idx,item){ var result = $.extend({}, item); var tmpl=p.tmplDom.tmpl(result); tmpl.appendTo(p.appendto); if (p.hideWhenNull) f.showHideDom(result,tmpl); // console.log(result.EST_CHINESENAME); if (p.afterEachData)p.afterEachData(idx,p.tmplDom,result); if (p.showPic)f.showtamplatePic(result.THUMBNAIL); }); }, showHideDom : function (data,tmpl){ $.each(data,function(i,e){ if (e==''||e=='0'||e==null||e==p.nullToShow){ tmpl.find('.tmpl_'+i).hide(); } }) }, numberFormat : function(number,unit){ number = parseFloat(number.replace(/,/g, "")); switch (unit){ case 'K': number=number/1000; break; case 'M': number = number/1000000; break; default: break; } return f.addCommas(number)+unit; }, addCommas:function (nStr){ nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; }, 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.estateFrame = function(p) { return this.each( function() { if (!docloaded){ $(this).hide(); var t = this; $(document).ready( function (){ $.addestateFrame(t,p); } ); } else { $.addestateFrame(this,p); } }); }; $.fn.estateFrameReload = function(p) { // function to reload grid return this.each( function() { if (this.frame) this.frame.reloadMaster(p); }); }; })(jQuery)