(function($){
$.addpropertyFrame = 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,
showunit : true,
ajaxSuccess : false,
ajaxfinished : false,
tmplfinished : false,
modifyData : false,
afterEachData : false,
hiddenInclude : {},
showPrevNextBtn : false,
useDefaultHiddenSearch : true,
autoSearch : true,
resetForm : false,
autosearchinform : false,
autoresizeImg : true,
recordperpage : false,
propSearchObj : {
pageObj : {
wrap:$("#pageWrap, .pageWrap"),
displayPage:9,
recordPerPage:5,
pageClass:'pd_pageNum',
totalloc:'#pd_total,.pd_total'
},
sortObj : {
sortName:'[name=sort_by],[name=sort_method]'
}
},
indexObj : {
limit : 6,
indexType :'template2'
},
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());
}
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());
}
else {
item[i]=f.numberFormat(e,'');
}
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(){
if (p.priceunit)p.priceUnit=p.priceunit;
if (p.rentunit)p.rentUnit=p.rentunit;
if (p.showunit=='false'||p.showunit=='False'||p.showunit=='FALSE')p.showunit=false;
switch (typeof p.tmplDom){
case 'string':
p.tmplDom=$(t).find(p.tmplDom);
break;
default:
break;
}
// console.log(p.tmplDom.html());
if ((typeof p.form)=='string'){
p.form=$(p.form);
}
if (p.recordperpage){
console.log(p.recordperpage);
p.propSearchObj.pageObj.recordPerPage=p.recordperpage;
}
switch (p.type){
case 'getDistrict':
f.getPropertydistrict();
break;
case 'getPropertyList':
if (p.resetForm){
f.resetForm();
}
if (p.useDefaultHiddenSearch)
f.defaulthiddenSearch();
if (p.autosearchinform)
f.autoSearchInForm();
f.getPropertyList(p.data);
e.sortTrigger();
e.pageTrigger();
e.formTrigger();
break;
// case 'getTransList':
// if (p.resetForm){
// f.resetForm();
// }
// if (p.useDefaultHiddenSearch)
// f.defaulthiddenSearch();
// if (p.autosearchinform)
// f.autoSearchInForm();
// f.getTransList(p.data);
// break;
case 'getPropertyDetail':
f.getPropertyDetail(p.data);
break;
case 'getindexProp':
if (typeof p.indexObj.limit=='undefined')
p.indexObj.limit=6;
if (typeof p.indexObj.indexType=='undefined')
p.indexObj.indexType='template2';
f.getindexProp(p.data);
break;
}
if (p.tmplfinished)p.tmplfinished();
},
sortTrigger : function(){
$(p.propSearchObj.sortObj.sortName).change(function(){
var para=p.form.serialize();
p = $.extend({}, p,para);
f.getPropertyList();
});
},
pageTrigger : function(){
$('.'+p.propSearchObj.pageObj.pageClass).live("click",function(){
var page = $(this).attr("rel");
p.propSearchObj.pageObj.wrap.find("input[name=page_position]").val(page);
var para=p.form.serialize();
p = $.extend({}, p,para);
f.getPropertyList();
});
},
formTrigger : function(){
p.form.submit(function(){
p.propSearchObj.pageObj.wrap.find("input[name=page_position]").val(1);
var para=p.form.serialize();
p = $.extend({}, p,para);
f.getPropertyList();
return false;
})
}
}
/*frame funciton*/
var f = {
startresize:function(){
},
getPropertydistrict : function(){
$.ajax({
url : "./ajax/getProperty.php?type=distlist",
dataType : "json",
type : "post",
error : function(xhr, st,err){
},
success : function(data){
if (p.modifyData) data=p.modifyData(data);
// $(".pd_total").html(data);
f.applytamplate(data);
}
});
},
getPropertyList :function (para){
if (!(para)) {
para=p.form.serializeArray();
if ($(".page_form").length){
var pagePara=$(".page_form").serializeArray();
para=para.concat(pagePara);
}
if ($("#page_form").length){
var pagePara=$("#page_form").serializeArray();
para=para.concat(pagePara);
}
var limit= [
{
name:'limit',
value:p.propSearchObj.pageObj.recordPerPage
}
];
para=para.concat(limit); //concat with record per page array
// console.log(p.hiddenInclude);
var hidden=f.object2array(p.hiddenInclude);
para=para.concat(hidden);
}
if (typeof para=='string') para=para+'&limit='+p.propSearchObj.pageObj.recordPerPage;
$.ajax({
url : "./ajax/getProperty.php?type=propertyList",
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.SEARCH_RESULT=v.defaultDataStandard(data.SEARCH_RESULT);
if (p.modifyData)data=p.modifyData(data);
f.applytamplate(data.SEARCH_RESULT);
}
});
},
/*
getTransList :function (para){
if (!(para)) para=p.form.serialize();
// 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);
}
});
},*/
getPropertyDetail :function (para){
$.ajax({
url : "./ajax/getProperty.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);
}
});
},
getindexProp : function (){
$.ajax({
url : "./ajax/getProperty.php?type=indexProp",
dataType : "json",
data : p.indexObj,
async : false,
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=v.defaultDataStandard(data);
if (p.modifyData)data=p.modifyData(data);
// $(".pd_total").html(data.TOTAL);
f.applytamplate(data);
}
});
},
autoSearchInForm : function (){
if (p.autosearchinform==='true')p.autosearchinform=true;
switch(typeof p.autosearchinform){
case 'string':
p.form.find('[name='+p.autosearchinform+']').each(function(i,e){
f.addSearchListener(this);
})
break;
default:
p.form.find('[name]').each(function(i,e){
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.getPropertyList(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.getPropertyList(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.getPropertyList(p.data);
})
}
}
})
},
generatePageBtn : function (tRecord,pagePos){
$(p.propSearchObj.pageObj.totalloc).html(tRecord);
var wrap = p.propSearchObj.pageObj.wrap;
var recordPerPage= p.propSearchObj.pageObj.recordPerPage;
var displayPage = p.propSearchObj.pageObj.displayPage; // odd number preferred
var totalPage = Math.ceil(tRecord/recordPerPage);
var sepNum = parseInt((displayPage-1)/2);
var curPage = parseInt(pagePos);
var prevPageBtn = ''+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 (curPage'+'Next Page'+'';
}
if (curPage!=1 && p.showPrevNextBtn){
pageBtnsDOM=prevPageBtn+(curPage-1)+'">'+'Prev page'+''+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);
f.appendToMethod(tmpl,idx);
if (p.autoresizeImg) {tmpl.find('img').imageResize();}
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.propertyFrame = function(p) {
return this.each( function() {
if (!docloaded){
$(this).hide();
var t = this;
$(document).ready(
function (){
$.addpropertyFrame(t,p);
}
);
} else {
$.addpropertyFrame(this,p);
}
});
};
$.fn.propertyFrameReload = function(p) { // function to reload grid
return this.each( function() {
if (this.frame) this.frame.reloadMaster(p);
});
};
$.fn.propertyFrameReloadList = function(p) { // function to reload grid
return this.each( function() {
if (this.frame) this.frame.reloadMaster(p);
});
};
})(jQuery)