(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)