/*



	- AFTER #

	- main parameters delimited by "&"

	- sub parameters delimited by ","

	- parameters are key-val pairs first delimited by "=", then ":"



	e.g.



	blahblah.php?blah#mode=list&cat=TV&item=17&filter=p1:LCD,p2:20 inch,p3:SONY&select=15,19,33,22,16&add=15,19,33,45,11,16,18,35&page=2



*/





var field_data;

var tipBack="";

var ajax_field_loaded=false;





function URLctrl(varname, contentArea){

	this.varname = varname;

	window[varname] = this;



	this.contentDiv = document.getElementById(contentArea);



	this.init();

	this.getInfoFromLocation(this);



	

}



URLctrl.prototype.init=function(){

	this.sys_path="";

	

	this.sys_mode="";

	this.sys_cat="";

	this.sys_item=-1;

	this.sys_filter=new Array();

	this.sys_select=new Array();

	this.sys_select_max=10;

	this.sys_select_cat="";

	

	this.sys_add=new Array();

	this.sys_page=1;

	this.sys_itemperpage=10;

	this.err_msg="";

	this.sys_pStr="";

	this.sys_pCat="";



	this.sys_showtips=false;

	

	this.sortfield="";

	this.sortorder="asc";





	if(typeof(AJAXManager)=="function"){

		this.ajax_info_loaded=false;

		this.ajax_content_loaded=false;

	}else{

		this.err_msg+="Error: AJAXManager is required\n";

	}

	if(typeof(JSON)=="undefined"){

		this.err_msg+="Error: JSON is required\n";

	}

	

	if (this.err_msg!=""){

		alert(this.err_msg);

	}else{

		this.ajax_info_loaded=false;



		var info=new AJAXManager();

		info.sendRequest("consumerguide/fn/fn_getCatInfo.php", "cat=ALL", "post", this._render, {t:"info", obj:this});



		var field=new AJAXManager();

		field.sendRequest("consumerguide/fn/fn_fieldoperation.php", "", "post", this._setupFields);





	}

	this.initTab();

//	serLoadField(this);

}



function serLoadField(e){

	if (ajax_field_loaded){

		e.initTab();

	}else{

		setTimeout(serLoadField, 1000, e);

	}

}





URLctrl.prototype.getInfoFromLocation=function(obj){





	var loc=""+document.location;

	locary=loc.split("#");

	obj.sys_path=locary[0];

	

//	console.log("location "+locary);

	

	



	if (obj.skipNext){

		if (locary.length>1){

			obj.sys_pPath=locary[1];

		}

		obj.skipNext=false;

		return(false);

	}





	if (locary.length>1){

//	alert(obj.sys_pPath+" > "+locary[1]+" > "+(obj.sys_pPath!=locary[1]));

		if ((obj.sys_pPath!=locary[1])&&(obj.sys_pPath!=locary[1]+"&page=1")&&(obj.sys_pPath+"&page=1"!=locary[1])){

	//if (console){console.log("fn: getInfoFromLocation");}





			//spliting

			commandtag=locary[1];

			commands=commandtag.split("&");

			for (i=0;i<commands.length;i++){

				kvpair=commands[i];

				kvpairary=kvpair.split("=");

				switch(kvpairary[0]){

					case "mode":

						obj.sys_mode=kvpairary[1];

						break;

					case "cat":

						obj.sys_cat=kvpairary[1];

						break;

					case "item":

						obj.sys_item=parseInt(kvpairary[1]);

						break;

					case "page":

						obj.sys_page=parseInt(kvpairary[1]);

						break;

					case "filter":

						obj.sys_filter=new Array();

						_filter=kvpairary[1].split(",");

						for (j=0;j<_filter.length;j++){

							filterkvpairs=_filter[j].split(":");

							obj.sys_filter[filterkvpairs[0]]=unescape(filterkvpairs[1]);

						}

						break;

					case "select":

						obj.sys_select=new Array();

						_select=kvpairary[1].split(",");

						for (j=0;j<_select.length;j++){

							obj.sys_select.push(_select[j]);

						}

						break;

					case "add":

						obj.sys_add=new Array();

						_add=kvpairary[1].split(",");

						for (j=0;j<_add.length;j++){

							obj.sys_add.push(_add[j]);

						}

						break;

				}//switch

			}//for

			obj.setLocationFromInfo();

			if (ajax_field_loaded){

				obj.renderContent();

				obj.renderTab();

			}

		}//if



		if (ajax_field_loaded){

			obj.sys_pPath=locary[1];

		}

		

	}else{

		obj.sys_mode="index";

		obj.setLocationFromInfo();



		if (ajax_field_loaded){

			obj.renderContent();

			obj.renderTab();

		}

	}



//	return(0);

	setTimeout(function(){obj.getInfoFromLocation(obj)},350);





}



URLctrl.prototype.setLocationFromInfo=function(){



	str="";



	if (this.sys_mode!=""){

		str+="mode="+this.sys_mode;

	}



	if (this.sys_cat!=""){

		str+="&cat="+this.sys_cat;

	}



	if (this.sys_item>=0){

		str+="&item="+this.sys_item;

	}



	if (this.sys_page>=0){

		str+="&page="+this.sys_page;

	}





	if (this.countFilter()>0){

		str+="&filter="+this.buildFilter();

	}

/*

	if (this.sys_select.length>0){

		str+="&select=";

		delimiter="";

		for (i=0;i<this.sys_select.length;i++){

			str+=delimiter+this.sys_select[i];

			delimiter=",";

		}

	}

	if (this.sys_add.length>0){

		str+="&add=";

		delimiter="";

		for (i=0;i<this.sys_add.length;i++){

			str+=delimiter+this.sys_add[i];

			delimiter=",";

		}

	}

*/

	str=this.sys_path+"#"+str;



	document.location=str;

}









URLctrl.prototype.renderContent=function(){



	//if (console){console.log("fn: renderContent");}

	

	this.ajax_content_loaded=false;

//	alert("render");

	var cont=new AJAXManager();







	if ((this.sys_mode=="compare")&&(this.sys_select.length<=0)){

		this.sys_mode="list";

	}

	if ((this.sys_mode=="favor")&&(this.sys_add.length<=0)){

		this.sys_mode="list";

	}





	switch(this.sys_mode){







		case "list":

			if (this.sys_cat==""){

				this.sys_mode="index";

				this.renderContent();

				return(false);

			}

			if(this.sys_pCat!=this.sys_cat){

				if (this.sys_pCat!="") this.sys_select=new Array();

				this.sys_pCat=this.sys_cat;

				this.sys_page=1;

			}

			cont.sendRequest("consumerguide/fn/fn_getItemList.php", "cat="+this.sys_cat+"&filter="+this.buildFilter(), "post", this._render, {t:"cont", obj:this});

			pageTracker._trackPageview("/appliance_guide : list "+this.sys_cat);

			break;

		case "detail":

			cont.sendRequest("consumerguide/fn/fn_getItemDetail.php", "item="+this.sys_item, "post", this._render, {t:"cont", obj:this});

			break;

		case "compare":

			cont.sendRequest("consumerguide/fn/fn_getItemDetail.php?order="+this.sortorder+"&sort="+this.sortfield, "item="+this.sys_select.join(","), "post", this._render, {t:"cont", obj:this});

			pageTracker._trackPageview("/appliance_guide : compare "+this.sys_cat);

			break;

		case "favor":

			cont.sendRequest("consumerguide/fn/fn_getItemDetail.php", "item="+this.sys_add.join(","), "post", this._render, {t:"cont", obj:this});

			break;



		case "preface":

			this._render("{}",{t:"cont", obj:this});

			break;

		case "tips":

			cont.sendRequest("consumerguide/tips.html", "", "get", this._render, {t:"tips", obj:this});

			pageTracker._trackPageview("/appliance_guide : tips "+this.sys_cat);

			break;

		case "appendix":

//			this._render("{}",{t:"cont", obj:this});

			cont.sendRequest("consumerguide/lowcarbon.html", "", "get", this._render, {t:"tips", obj:this});

			break;

		case "faq":

//			this._render("{}",{t:"cont", obj:this});

			cont.sendRequest("consumerguide/technotes.html", "", "get", this._render, {t:"tips", obj:this});

			break;

		case "index":

		default:

			this.sys_mode="index";

			this.ajax_content_loaded=true;

			this._render("{}",{t:"cont", obj:this});

			break;

	}



}





URLctrl.prototype._render=function(result, param){

	

	var obj=param.obj;

/*

	var param=new Object();

	

	var obj=ctrl;

	param.t="";

	if (result[0]=="{"){

		var temptest=JSON.parse(result);

		if (temptest.item){

			param.t="cont";

		}else{

			param.t="info";

		}

	}

	if (result[0]=="<"){

		param.t="tips";

	}

	

	console.log(obj.sys_cat);

*/	

	if (param.t=="info"){

//		alert("??"+obj.ajax_info_loaded);

		obj.ajax_info_result=JSON.parse(result);

		obj.ajax_info_loaded=true;

//		alert("!!"+obj.ajax_info_result);

	}

	if (param.t=="cont"){

		obj.ajax_content_result=JSON.parse(result);

		obj.ajax_content_loaded=true;

	}



	if (param.t==""){

//	alert(result);

		obj.skipNext=true;	

	}



	if (param.t=="tips"){

//	alert(result);

		obj.ajax_content_loaded=true;

		obj.ajax_raw_result=result;

	}







//alert("param.t: "+param.t+"\n"+obj.ajax_info_loaded+"\n"+obj.ajax_content_loaded);



//	console.log ((obj.ajax_info_loaded)+" :"+(obj.ajax_content_loaded));





	if ((obj.ajax_info_loaded)&&(obj.ajax_content_loaded)){





		var outtext="";

	

		switch(obj.sys_mode){

			case "list":

//alert(param.obj.ajax_info_result);

				tipBack="list";

//				console.log("update to list");

				obj.sys_cat_p=obj.sys_cat;

				var info = obj.ajax_info_result;

				var product = obj.ajax_content_result;

				

				

				pulldown='';

				var cnt=1;

				var vcnt=0;

				var tfilter="";

				

				tempary=unescape(obj.sys_filter["p"+cnt]).split("___");

				

				for (i in info[obj.sys_cat].filter){



					if (info[obj.sys_cat].filter[i].length>0){



						for (j in info[obj.sys_cat].filter[i]){

							esctext=info[obj.sys_cat].filter[i][j].replace('"', '%22');

							//pulldown+='<option value="'+esctext+'"';

							//alert("["+obj.sys_filter["p"+cnt]+"]["+info[obj.sys_cat].filter[i][j]+"]");

							//pulldown+=(obj.sys_filter["p"+cnt]==info[obj.sys_cat].filter[i][j])?' selected="1"':'';

							pulldown+='<option value="'+vcnt+'"';

							pulldown+=(tempary[0]==vcnt)?' selected="1"':'';



							pulldown+='>'+info[obj.sys_cat].filter[i][j]+'</option>';

							tfilter=info[obj.sys_cat].filter[i][j];

							vcnt++;

						}

					}

				}

	

				outtext+='<div id="listHeader">';

				outtext+='<div id="listTitle"><img src="consumerguide/tips/'+obj.sys_cat+'.jpg"/></div>';

				outtext+='<div id="listFunc">';

				outtext+='<form>';

	

				outtext+='<a href="javascript:'+obj.varname+'.goTips('+"''"+')"><img src="consumerguide/images/btn_lowCarbonTips.jpg"/></a>';

//				outtext+='<a href="consumerguide/pdf/'+obj.sys_cat+'.pdf" target="_blank" '+((vcnt>=1)?'':'style="margin-right:10px;"')+'><img src="consumerguide/images/btn_downloadPDF.jpg"/></a>';

				outtext+='<a href="javascript:PDF('+"'"+obj.sys_cat+"'"+')" '+((vcnt>=1)?'':'style="margin-right:10px;"')+'><img src="consumerguide/images/btn_downloadPDF.jpg"/></a>';





				if (vcnt>1){

					outtext+='<span class="defaultfont">Select '+field_data.subcatename[obj.sys_cat]+': </span>';

					outtext+='<select onChange="'+obj.varname+'.setFilter('+"'p1'"+', this.value)">';

					outtext+='<option value="">=== ALL ===</option>';

					outtext+=pulldown;

					outtext+='</select>';

							

				}

				if (vcnt==1){

					outtext+='<span class="defaultfont">Type: '+tfilter+'</span>';

				}

					

					

				

				outtext+='</form>';

				outtext+='</div>';

				outtext+='</div>';



				var hrtext="";



				outtext+='<div id="listTable">';

				outtext+='<table>';



				for (i=(obj.sys_page-1)*obj.sys_itemperpage;i<product.item.length&&i<obj.sys_page*obj.sys_itemperpage;i++){

					

					outtext+=hrtext;

					

					outtext+='<tr>';

					outtext+='<td class="productImg"><a href="javascript:'+obj.varname+'.itemDetail('+product.item[i].idx+')"><img src="consumerguide/'+((product.item[i].img!="")?product.item[i].img:'noImage.jpg')+'" class="product"/><br/>more <img src="consumerguide/images/quickNav_cross.jpg"></a></td>';

					

					

					outtext+='<td class="productDesc"><a href="javascript:'+obj.varname+'.itemDetail('+product.item[i].idx+')">'+product.item[i].brand+' '+product.item[i].model_no+'</a></td>';

					outtext+='<td class="productBtn">';



//alert("debug mode\n\n"+product.item[i].model_no+"\n["+product.item[i].img+"]");



					var finder=-1;

					for (j=0;j<obj.sys_select.length;j++){

						if (obj.sys_select[j]==product.item[i].idx){

							finder=j;

						}

					}

					if (finder<0){

						outtext+='<a href="javascript:'+obj.varname+'.itemSelect('+product.item[i].idx+','+"'"+product.item[i].cat+"'"+')"><img id="btn_compare_'+product.item[i].idx+'" src="consumerguide/images/btn_addCompare_on.jpg"/></a>';

					}else{

						outtext+='<a href="javascript:'+obj.varname+'.itemSelect('+product.item[i].idx+','+"'"+product.item[i].cat+"'"+')"><img id="btn_compare_'+product.item[i].idx+'" src="consumerguide/images/btn_addCompare_off.jpg"/></a>';

					}					

					

					

					outtext+='</td>';

					outtext+='</tr>';

					

					hrtext='<tr><td colspan="3" class="hr"></td></tr>';

				}

				outtext+='</table>';

				

				//paging

				if (Math.ceil(product.item.length/obj.sys_itemperpage)>1){

					outtext+='<div id="listPaging">';

					for (i=1; i<=Math.ceil(product.item.length/obj.sys_itemperpage); i++){

						if (obj.sys_page!=i){

							outtext+=' <a href="javascript:'+obj.varname+'.pageGo('+i+')">'+i+'</a>';

						}else{

							outtext+=' <a><u>'+i+'</u></a>';

						}

					}

					outtext+='</div>';

					outtext+='<br style="clear:both;"/>';

				}



















				outtext+='<div>';

				outtext+='<div style="float:left;">';

				outtext+='<a href="javascript:'+obj.varname+'.sessionGo('+"'index'"+')"><img src="consumerguide/images/btn_backAppHome.jpg" /></a>';				

				outtext+='</div>';

				outtext+='<div style="float:right;padding-right:10px;">';

				outtext+='<a href="javascript:'+obj.varname+'.sessionGo('+"'compare'"+')"><img src="consumerguide/images/btn_compare.jpg"></a>';	

				outtext+='</div>';

				outtext+='</div>';

				outtext+='<br style="clear:both;"/>';		











/*

				//button

				outtext+='<div class="footerBtn">';

//				outtext+='<div style="float:left;width:650px;font-size:11px;color:#999999;">'+info[obj.sys_cat].remarks+'</div>';

//				outtext+='<div style="float:left;">';

				outtext+='<a href="javascript:'+obj.varname+'.sessionGo('+"'compare'"+')"><img src="consumerguide/images/btn_compare.jpg"></a>';

//				outtext+='</div>';

				

				outtext+='</div>';

				outtext+='<br style="clear:both;"/>';

*/

				outtext+='</div>';

				obj.contentDiv.innerHTML=outtext;

				

				break;

			case "detail":





				var info = obj.ajax_info_result;

				var product = obj.ajax_content_result;

		



				if (product.item.length==0){

					obj.sessionGo("list");

				}





				outtext+='<img src="consumerguide/tips/'+obj.sys_cat+'.jpg"/>';

				

				outtext+='<div id="detailTable">';

				outtext+='<table>';

				outtext+='<tr>';

				





				

				outtext+='<td valign="top" align="center">';

				outtext+='<img src="consumerguide/'+((product.item[0].img!="")?product.item[0].img:'noImage.jpg')+'"/>';

//				outtext+='<img src="consumerguide/images/Sunset.jpg" class="pImg"/>';

				outtext+='<br/>'+product.item[0].brand+' '+product.item[0].model_no+'</td><td>';



				outtext+='<table border="0">';

				var cnt=0;

				for (j in info[product.item[0].cat].field){

					outtext+='<tr>';

					outtext+='<td class="left">'+j+'</td>';

					outtext+='<td class="right">'+obj.addImg(product.item[0].param[cnt])+'</td>';

					outtext+='</tr>';

					cnt++;

				}

				outtext+='</table>';



				outtext+='</td>';

				outtext+='</tr>';

				outtext+='</table>';





				//button

				outtext+='</div>';



				outtext+='<div style="font-size:11px;color:#999999;">'+obj.addImg(info[obj.sys_cat].remarks)+'</div>';





				//button

				outtext+='<div class="footerBtn">';



				//Edited ny Kin



				var finder=-1;

					for (j=0;j<obj.sys_select.length;j++){

						if (obj.sys_select[j]==product.item[0].idx){

							finder=j;

						}

					}

					if (finder<0){

						outtext+='<a href="javascript:'+obj.varname+'.itemSelect('+product.item[0].idx+','+"'"+product.item[0].cat+"'"+')"><img id="btn_compare_'+product.item[0].idx+'" src="consumerguide/images/btn_addCompare_on.jpg"/></a>';

					}else{

						outtext+='<a href="javascript:'+obj.varname+'.itemSelect('+product.item[0].idx+','+"'"+product.item[0].cat+"'"+')"><img id="btn_compare_'+product.item[0].idx+'" src="consumerguide/images/btn_addCompare_off.jpg"/></a>';

					}





				outtext+='</div>';

				outtext+='<br style="clear:both;"/>';				



				outtext+='<div>';

				outtext+='<div style="float:left;">';

				outtext+='<a href="javascript:ctrl.tipbk(tipBack);"><img src="consumerguide/images/btn_back.jpg" /></a>';				

				outtext+='</div>';

				outtext+='<div style="float:right;padding-right:10px;">';

				outtext+='<a href="javascript:window.print()"><img src="consumerguide/images/btn_print.jpg" /></a> ';				

				outtext+='<a href="javascript:'+obj.varname+'.savedoc()"><img src="consumerguide/images/btn_saveProductDetails.jpg" /></a>';				

				outtext+='</div>';

				outtext+='</div>';

				outtext+='<br style="clear:both;"/>';				





				obj.contentDiv.innerHTML=outtext;



				break;

			case "compare":





				var info = obj.ajax_info_result;

				var product = obj.ajax_content_result;



				obj.sys_cat=obj.sys_cat_p;



	

				//outtext+='<img src="consumerguide/images/compare.jpg"/>';

				

				outtext+='<div id="compareTable">';

				

				outtext+='<div id="compareHolder">';





				if (obj.sys_altTarget){

					sys_comparePrintsize=5;

				}else{

					sys_comparePrintsize=99;

				}



				for (tblcnt=0;tblcnt<Math.ceil(product.item.length/sys_comparePrintsize);tblcnt++)

				{



					//if (console){console.log(tblcnt);}

	

					outtext+='<table border="0" class="compareCont">';

					outtext+='<tr>';

					outtext+='<th class="white" valign="bottom" style="vertical-align:bottom;" nowrap="1">Click <img src="consumerguide/images/rightArrow.gif"  align="absmiddle"/> to rank products</th>';

					for (i=0+tblcnt*sys_comparePrintsize;(i<product.item.length)&&(i<(tblcnt+1)*sys_comparePrintsize);i++){

						outtext+='<th productid="'+product.item[i].idx+'" class="white images" valign="top">';

						outtext+='<div style="float:left;margin-left:6px;">';

//						outtext+='<img src="consumerguide/images/Sunset.jpg" width="90"/>';

						outtext+='<img src="consumerguide/'+((product.item[i].img!="")?product.item[i].img:'noImage.jpg')+'" width="90"/>';

						outtext+='</div>';

						outtext+='<div style="float:left;margin-left:-5px;margin-top:-5px;">';

						outtext+='<a href="javascript:'+obj.varname+'.itemUnSelect('+product.item[i].idx+')"><img src="consumerguide/images/btn_remove.gif"></a>';

						outtext+='</div>';

						outtext+='<center>'+product.item[i].brand+'<br/>'+product.item[i].model_no+'</center>';



/*						

						outtext+='<div class="compareImg">';

						outtext+='<div class="compareBtn">';

						outtext+='<a href="javascript:'+obj.varname+'.itemUnSelect('+product.item[i].idx+')"><img src="consumerguide/images/btn_remove.gif"></a>';

						outtext+='</div>';

						outtext+='<div class="compareProd">';

	

						outtext+='<a href="javascript:'+obj.varname+'.itemDetail('+product.item[i].idx+')">';

	//					outtext+='<img src="consumerguide/'+product.item[i].img+'"/><br/>';

						outtext+='<img src="consumerguide/images/Sunset.jpg" class="pImg"/>';

						outtext+='</a>';

						outtext+='<br/>'+product.item[i].brand+'<br/>'+product.item[i].model_no;

						outtext+='</div>';

						outtext+='</div>';

*/						

						outtext+='</th>';

					}

					outtext+='</tr>';

	

					var tempclass=' class="white"';

	

					var cnt=0;

					for (j in info[product.item[0].cat].field){

//						console.log(obj.sortfield+" "+(cnt+1));

						outtext+='<tr>';



						tempclass=((obj.sortfield==cnt+1)?' class="sorted"':tempclass);

						

						outtext+='<th '+tempclass+'><div>';

						if ((field_data.sortable[j]=="asc")||(field_data.sortable[j]=="desc")){

							outtext+='<table><tr><td class="white" style="vertical-align:top;padding:0px;border:0px;width:13px;padding-top:4px;"><a class="sortable" href="javascript:'+obj.varname+'.sortCompare('+(cnt+1)+', '+"'"+field_data.sortable[j]+"'"+')"><img src="consumerguide/images/rightArrow.gif"  align="absmiddle"/></a></td>';

							outtext+='<td  class="white" style="vertical-align:top;padding:0px;border:0px;text-align:left;"><a class="sortable" href="javascript:'+obj.varname+'.sortCompare('+(cnt+1)+', '+"'"+field_data.sortable[j]+"'"+')">'+j+'</a></td></tr></table>';

						}else{

							outtext+=j;

						}

						outtext+='</div></th>';

						for (i=0+tblcnt*sys_comparePrintsize;(i<product.item.length)&&(i<(tblcnt+1)*sys_comparePrintsize);i++){

							//if (console){console.log(tblcnt+" : "+i);}

							outtext+='<td productid="'+product.item[i].idx+'" '+tempclass+'>'+obj.addImg(product.item[i].param[cnt])+'</td>';

						}

						outtext+='</tr>';

						tempclass="";

						cnt++;

					}

	

	

					outtext+='<tr>';

					outtext+='<th class="white"></th>';

					for (i=0+tblcnt*sys_comparePrintsize;(i<product.item.length)&&(i<(tblcnt+1)*sys_comparePrintsize);i++){

						outtext+='<td productid="'+product.item[i].idx+'" class="white images">';

						var finder=-1;

						for (j=0;j<obj.sys_add.length;j++){

							if (obj.sys_add[j]==product.item[i].idx){

								finder=j;

							}

						}

						if (finder<0){

							outtext+='<a href="javascript:'+obj.varname+'.itemAdd('+product.item[i].idx+')"><img id="btn_add_'+product.item[i].idx+'" src="consumerguide/images/btn_addFavor_on.jpg"/></a>';

						}else{

							outtext+='<img src="consumerguide/images/btn_addFavor_off.jpg"/>';

						}

						outtext+='</td>';

					}

					outtext+='</tr>';

		

					outtext+='</table>';



					

				}



				outtext+='</div>';

				

				outtext+='</div>';

				outtext+='<br style="clear:both;"/>';

				outtext+='<div style="font-size:11px;color:#999999;">'+obj.addImg(info[obj.sys_cat].remarks)+'</div>';

				outtext+='<br style="clear:both;"/>';











				if (obj.sys_altTarget){

					obj.sys_altTarget.value=outtext;

					delete(obj.sys_altTarget);

				}else{

					

					outtext+='<div style="float: right; padding-right: 10px;padding-bottom: 10px;">';

					outtext+='<a href="javascript:'+obj.varname+'.itemUnSelect(-1)"><img src="consumerguide/images/btn_deleteAll.jpg" /></a>';

					outtext+='</div>';

					outtext+='<br style="clear: both;" />';

					outtext+='<div>';

					outtext+='<div style="float:left;">';

					outtext+='<a href="javascript:ctrl.tipbk(tipBack);"><img src="consumerguide/images/btn_back.jpg" /></a> ';				

			

					outtext+='</div>';

					outtext+='<div style="float:right;padding-right:10px;">';

					outtext+='<a href="javascript:'+obj.varname+'.compareprint()"><img src="consumerguide/images/btn_print.jpg" /></a> ';				

					outtext+='<a href="javascript:'+obj.varname+'.savedoc()"><img src="consumerguide/images/btn_savehtml.jpg" /></a>';				

					outtext+='</div>';

					outtext+='</div>';

					outtext+='<br style="clear:both;"/>';	



					

					obj.contentDiv.innerHTML=outtext;

				}

				

				delete(obj.sys_altTarget);

				obj.sortfield="";

				

				break;

			case "favor":





				var info = obj.ajax_info_result;

				var product = obj.ajax_content_result;

		

	

				outtext+='<img src="consumerguide/images/favorite.jpg"/>';

				

				outtext+='<div id="favorTable">';

/*

				outtext+='<table border="1">';



				for (i=(obj.sys_page-1)*obj.sys_itemperpage;i<product.item.length&&i<obj.sys_page*obj.sys_itemperpage;i++){

					outtext+='<tr productid="'+product.item[i].idx+'">';

					outtext+='<td><img src="consumerguide/'+product.item[i].img+'"/><br/>'+product.item[0].brand+'<br/>'+product.item[0].model_no+'</td>';

					outtext+='<td><a href="javascript:'+obj.varname+'.itemDetail('+product.item[i].idx+')">Item Detail</a></td>';

					outtext+='<td><a href="javascript:'+obj.varname+'.itemRemove('+product.item[i].idx+')">Remove from favourite</a></td>';

					outtext+='</tr>';

				}

				outtext+='</table>';

*/





				outtext+='<table>';



				for (i=(obj.sys_page-1)*obj.sys_itemperpage;i<product.item.length&&i<obj.sys_page*obj.sys_itemperpage;i++){

					outtext+='<tr>';

					outtext+='<td class="productImg">';

					outtext+='<a href="javascript:'+obj.varname+'.itemRemove('+product.item[i].idx+')" class="close"><img src="consumerguide/images/btn_remove.gif"/></a><br/>';

					outtext+='<a href="javascript:'+obj.varname+'.itemDetail('+product.item[i].idx+')"><img src="consumerguide/'+((product.item[i].img!="")?product.item[i].img:'noImage.jpg')+'" class="pImg"/>';

//					outtext+='<img src="consumerguide/images/Sunset.jpg" class="pImg"/>';

					outtext+='<br/>more <img src="consumerguide/images/quickNav_cross.jpg"></a></td>';

					

					

//					outtext+='<td class="productDesc">'+product.item[i].brand+' '+product.item[i].model_no+'</td>';

					outtext+='<td class="productDesc">';





					outtext+='<table border="0">';

					outtext+='<tr>';

					outtext+='<td class="left">Brand</td>';

					outtext+='<td class="right">'+product.item[i].brand+'</td>';

					outtext+='</tr>';

					outtext+='<tr>';

					outtext+='<td class="left">Model</td>';

					outtext+='<td class="right">'+product.item[i].model_no+'</td>';

					outtext+='</tr>';



					var cnt=0;

					for (j in info[product.item[i].cat].field){

						if (field_data.showdetail[j]==""){

							outtext+='<tr>';

							outtext+='<td class="left">'+j+'</td>';

							outtext+='<td class="right">'+product.item[i].param[cnt]+'</td>';

							outtext+='</tr>';

						}

						cnt++;

					}

					outtext+='</table>';





					outtext+='</td>';

					

					

//					outtext+='<td class="productBtn"><a href="javascript:'+obj.varname+'.itemRemove('+product.item[i].idx+')">Remove from favourite</a></td>';

//					outtext+='<td><a href="javascript:'+obj.varname+'.itemAdd('+product.item[i].idx+')">Add to favourite</a></td>';

					outtext+='</tr>';

				}

				outtext+='</table>';	

				

				

				//paging

				if (Math.ceil(product.item.length/obj.sys_itemperpage)>1){

					outtext+='Page';

					for (i=1; i<=Math.ceil(product.item.length/obj.sys_itemperpage); i++){

						outtext+=' <a href="javascript:'+obj.varname+'.pageGo('+i+')">'+i+'</a>';

					}

					outtext+='<br/>';

				}

				

				outtext+='</div>';





				outtext+='<div>';

				outtext+='<div style="float:left;">';

				outtext+='<a href="javascript:ctrl.tipbk(tipBack);"><img src="consumerguide/images/btn_back.jpg" /></a>';				

				outtext+='</div>';

				outtext+='<div style="float:right;padding-right:10px;">';

				outtext+='<a href="javascript:window.print()"><img src="consumerguide/images/btn_print.jpg" /></a> ';				

				outtext+='<a href="javascript:'+obj.varname+'.savedoc()"><img src="consumerguide/images/btn_saveFav.jpg" /></a>';				

				outtext+='</div>';

				outtext+='</div>';

				outtext+='<br style="clear:both;"/>';	



				obj.contentDiv.innerHTML=outtext;



				break;

			case "preface":

				outtext+='<h3>preface</h3>';

				obj.contentDiv.innerHTML=outtext;



				break;

			case "tips":



//console.log("start tips as "+tipBack);





				var info = obj.ajax_info_result;



				outtext+='<div id="listHeader">';







				outtext+='<div id="listTitle"><img src="consumerguide/images/smartTips.jpg"/></div>';

				

/*				

				if (!obj.sys_showtips){

					outtext+='<div id="listFunc">';

					outtext+='<form>';

							outtext+='<select onChange="'+obj.varname+'.setTips(this.value)">';

								outtext+='<option value="">Select tips</option>';

//								outtext+='<option value="air_con">air_con</option>';

//								outtext+='<option value="tv">tv</option>';



								for (j in info){

//									outtext+='<tr>';



									outtext+='<option value="'+j+'">'+info[j].name+'</option>';



								}





							outtext+='</select>';

					outtext+='</form>';

					outtext+='</div>';

				

				}

*/





				outtext+='</div>';

				if (!obj.sys_showtips){

					obj.sys_cat="";

					

					

					

/*

					var temptext=obj.ajax_raw_result;

					while (temptext.indexOf('div class="none" id="')>-1){

						temptext=temptext.replace('div class="none" id="', 'div id="');

					}

					outtext+=temptext;

*/

					outtext+='<p style="margin-top:30px;">The Low Carbon Appliances Guide shows you how to be a climate-friendly consumer by selecting the appliances with low carbon impact, but choosing the energy efficient appliances is only half the story. The smart usage of the appliances is equally important to Low Carbon Living.  This requires a better understanding of the appliances. How well do you know about them?</p>';



					outtext+='<center><img src="consumerguide/tips/index.jpg" border="0" usemap="#tipsmap"/></center>';

					







				}else{

					

					outtext+=obj.ajax_raw_result.replace('div class="none" id="tips_'+obj.sys_cat, 'div id="tips_'+obj.sys_cat);

				}

//				console.log(outtext);

				obj.contentDiv.innerHTML=outtext;



//				obj.sys_showtips=false;





				break;

			case "appendix":

			case "faq":

				img_name=(obj.sys_mode!="faq")?"faq":"notes";

			



				outtext+='<div id="listHeader">';

				outtext+='<div id="listTitle"><img src="consumerguide/images/'+img_name+'.jpg"/></div><br style="clear:both;"/><br style="clear:both;"/>';

				outtext+=obj.ajax_raw_result;

				outtext+='</div>';



				obj.contentDiv.innerHTML=outtext;



				break;

			case "index":

				obj.setFilter("p1","");

				outtext+='<p><img src="consumerguide/images/consumerGuide.jpg"/></p>';

				outtext+='<div style="height:290px;"><div style="float:left;width:295px;">';

				outtext+='<p>As over 60% of greenhouse gases are emitted from electricity generation in Hong Kong, smart energy use is a vital part that defines Low Carbon Living.</p>';

				outtext+='<p>This "Low Carbon Living Appliances Guide" introduces twelve types of energy saving electrical appliances (plus the gas water heaters!) available in Hong Kong. Here you can compare and rank the appliances according to their energy efficiency, energy consumption, carbon emissions and learn more low carbon tips on the smart use of these appliances. By choosing appliances with low carbon impact and using them in a smart way, you are already part of a community of leaders that are tackling climate change!</p>';

				outtext+='<p>You can find out more ways to make this Low Carbon Lifestyle change easy and fun at <a href="http://www.climateers.org">www.climateers.org</a>. Interested in staying in touch? <a href="http://www.climateers.org/eng/contents/registration.php">Join us</a> now as a Climateer.</p>';

				outtext+='</div>';

				outtext+='<div style="float:left;width:389px;margin-left:10px;">';



				outtext+='<iframe marginheight="0" marginwidth="0" width="389" height="420" frameborder="0" src="consumerguide/iframe.html"></iframe>';



				//outtext+='<object width="360" height="291"><param name="movie" value="consumerguide/images/10catagories.swf?r='+Math.random()+'"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="consumerguide/images/10catagories.swf?r='+Math.random()+'" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="360" height="291"></embed></object>';

				

				/*outtext+='<script type="text/javascript">AC_FL_RunContent( "codebase","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0","width","360","height","291","src","consumerguide/images/10catagories?r='+Math.random()+'","quality","high","pluginspage","http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash","movie","consumerguide/images/10catagories?r='+Math.random()+'" );</script>';

				*/

				//outtext+='<iframe id="flashobject"></iframe>';

				outtext+='</div>';

				outtext+='</div>';

				

//				outtext+='<a href="javascript:startCat('+"'#mode=list&cat=tv'"+')">123</a>';





				

				outtext+='<br style="clear:both;"/>';

				outtext+='<div style="float:right;"><a href="consumerguide/pdf/LowCarbon_web.pdf" target="_blank"><img src="consumerguide/images/btn_downlad.jpg"></a></div>';

				outtext+='<br style="clear:both;"/>';

				obj.contentDiv.innerHTML=outtext;

				

				//setTimeout(updateCont, 1000);

				

				break;

		}

		

		

	}



	obj.setLocationFromInfo();

	obj.renderTab();



}



function updateCont(){

	alert("!");

	var div=document.getElementById("flashobject");

	alert(div);

	div.open();

	div.write('<script type="text/javascript">AC_FL_RunContent( "codebase","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0","width","360","height","291","src","consumerguide/images/10catagories?r='+Math.random()+'","quality","high","pluginspage","http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash","movie","consumerguide/images/10catagories?r='+Math.random()+'" );</'+'script>');

	div.close();

}

URLctrl.prototype.initTab=function(){

	var e;

	e=document.getElementById("cg_index").getElementsByTagName("a");

	e[0].setAttribute("href", "javascript:"+this.varname+".sessionGo('index')");

	e=document.getElementById("cg_tips").getElementsByTagName("a");

	e[0].setAttribute("href", "javascript:{"+this.varname+".sys_showtips=false;"+this.varname+".sessionGo('tips');}");

	e=document.getElementById("cg_appendix").getElementsByTagName("a");

	e[0].setAttribute("href", "javascript:"+this.varname+".sessionGo('appendix')");

	e=document.getElementById("cg_faq").getElementsByTagName("a");

	e[0].setAttribute("href", "javascript:"+this.varname+".sessionGo('faq')");

	e=document.getElementById("cg_compare").getElementsByTagName("a");

	e[0].setAttribute("href", "javascript:"+this.varname+".sessionGo('compare')");

	e=document.getElementById("cg_favor").getElementsByTagName("a");

	e[0].setAttribute("href", "javascript:"+this.varname+".sessionGo('favor')");

}



URLctrl.prototype.renderTab=function(){

	var tempmode=(this.sys_mode=="list")?"index":this.sys_mode;

	var e;

	var f;

	var temptext;

	e=document.getElementById("cg_"+this.pTab);

	if (e){

		e.className=e.className.replace("on", "");

	}

	this.pTab=tempmode;



	e=document.getElementById("cg_"+this.pTab);

	if (e){

		e.className=e.className+" on";

	}

	

	e=document.getElementById("cg_compare");

	if (e){

		f=e.getElementsByTagName("a");

		temptext=f[0].innerHTML.split(" (");

		f[0].innerHTML=temptext[0];

		if (this.sys_select.length<=0){

			if (e.className.indexOf("off")==-1){

				e.className=e.className+" off";

			}

		}else{

			e.className=e.className.replace("off", "");

			f[0].innerHTML+=" ("+this.sys_select.length+")";

		}

	}



	e=document.getElementById("cg_favor");

	if (e){

		f=e.getElementsByTagName("a");

		temptext=f[0].innerHTML.split(" (");

		f[0].innerHTML=temptext[0];

		if (this.sys_add.length<=0){

			if (e.className.indexOf("off")==-1){

				e.className=e.className+" off";

			}

		}else{

			e.className=e.className.replace("off", "");

			f[0].innerHTML+=" ("+this.sys_add.length+")";

		}

	}



}









//===================================================================================

//===================================================================================

//===================================================================================

//===================================================================================

//============  RunTime function

//===================================================================================

//===================================================================================

//===================================================================================

//===================================================================================





URLctrl.prototype.countFilter=function(){

	var cnt=0;

	for (i in this.sys_filter){

		cnt++;

	}

	return(cnt);

}



URLctrl.prototype.buildFilter=function(){

	var delimiter="";

	var tempstr="";

	for (i in this.sys_filter){

		tempstr+=delimiter+i+":"+this.sys_filter[i];

		delimiter=",";

	}

	return(tempstr);

}



URLctrl.prototype.setFilter=function(key, value){

	if (value==""){

		delete(this.sys_filter[key]);

	}else{

		this.sys_filter[key]=unescape(value);

	}

	this.sys_page=1;

	this.setLocationFromInfo();

}



URLctrl.prototype.setTips=function(value){

//	alert(value);

	document.location="#tips_"+value;

}



URLctrl.prototype.goTips=function(e){

	if (e!=""){

		this.sys_cat=e;

	}

	this.sys_showtips=true;

//	this.sys_mode="";

	this.sessionGo("tips");

}





URLctrl.prototype.itemDetail=function(idx){

	this.sys_mode="detail";

	this.sys_item=idx;

	this.setLocationFromInfo();

}



URLctrl.prototype.itemSelect=function(idx, cat){

	if ((this.sys_select.length==0)||(this.sys_select_cat=="")){

		this.sys_select_cat=cat;

	}







	var finder=-1;

	for (i=0;i<this.sys_select.length;i++){

		if (this.sys_select[i]==idx){

			finder=i;

		}

	}

	if (finder<0){



		if (this.sys_select.length<this.sys_select_max){

			if (cat==this.sys_select_cat){



				this.sys_select.push(idx);

				this.setLocationFromInfo();

				this.renderTab();

				var e=document.getElementById("btn_compare_"+idx);

				if(e){

					e.src=e.src.replace("_on", "_off");

				}



			}else{

				alert("You can only select items from the same catalogy");

			}

		}else{

			//alert("You can only select "+this.sys_select_max+" items for compare");

			alert("Compare list is full! Please clear comparison.");

		}





	}else{

		//alert("This idx has already added");

		this.itemUnSelect(idx);

	}









}

URLctrl.prototype.itemUnSelect=function(idx){

	if (idx==-1){

		this.sys_select=new Array();

		this.sessionGo("list");

	}else{

		var finder=-1;

		for (i=0;i<this.sys_select.length;i++){

			if (this.sys_select[i]==idx){

				finder=i;

			}

		}

		if (finder>=0){

			var e=document.getElementById("btn_compare_"+idx);

			if(e){

				e.src=e.src.replace("_off", "_on");

			}

			this.sys_select.splice(finder, 1);

			this.renderTab();

		}else{

			alert("Warning: "+idx+" not found");

		}

//		if(this.sys_mode == 'detail'){ // Edited By Kin

			

		//}else

		if ((this.sys_select.length<=0)&&(this.sys_mode == 'compare')){

			this.sessionGo("list");

		}else {

			/*

			var e=document.getElementById("compareTable");

			if (e){

				var f=e.getElementsByTagName("td");

				for (var i=0;i<f.length;i++){

					if (parseInt(f[i].getAttribute('productid'))==idx){

						f[i].style.display="none";

					}

				}

			}

			*/

			//alert("flip!");

			if (this.sys_mode == 'compare'){

				this.sys_mode="";

				this.sessionGo("compare");

			}

		}

	}

}





URLctrl.prototype.itemAdd=function(idx){

	var finder=-1;

	for (i=0;i<this.sys_add.length;i++){

		if (this.sys_add[i]==idx){

			finder=i;

		}

	}

	if (finder<0){

		this.sys_add.push(idx);

		this.renderTab();

		var e=document.getElementById("btn_add_"+idx);

		if(e){

			e.src=e.src.replace("_on", "_off");

		}

	}else{

		alert("This item is already in your favourite list");

	}

		

}



URLctrl.prototype.itemRemove=function(idx){

	var finder=-1;

	for (i=0;i<this.sys_add.length;i++){

		if (this.sys_add[i]==idx){

			finder=i;

		}

	}

	if (finder>=0){

		this.sys_add.splice(finder, 1);

		this.renderTab();

	}else{

		alert("Warning: "+idx+" not found");

	}

	if (this.sys_add.length<=0){

		this.sessionGo("compare");

	}else{

		this.sys_mode="";

		this.sessionGo("favor");

	}

}



URLctrl.prototype.pageGo=function(pageno){

	if (this.sys_page!=pageno){

		this.sys_page=pageno;

		this._render("{}",{t:"", obj:this});

		this.getInfoFromLocation(this);

	}

}



URLctrl.prototype.sessionGo=function(mode){

	if (this.sys_mode!=""){

		tipBack=this.sys_mode;

	}

//	console.log(tipBack);

	var changeSession=true;

//	if (this.sys_mode!=mode){

//	console.log("swap to mode "+mode);



		if ((mode=="compare")&&(this.sys_select.length<=0)){

			

			if(this.sys_mode == "list"){

				alert("Compare List empty. Please add products to Compare List.");

				changeSession=false;

			}else{

			//alert("Please select something to compare");

				mode="list";

			}

			//changeSession=false;

		}

		if ((mode=="favor")&&(this.sys_add.length<=0)){

			alert("You have nothing in your favourite list");

			changeSession=false;

		}

		if (changeSession){

//	console.log("real jump");

			this.sys_page=1;

			this.sys_mode=mode;

			this.renderContent();

		}

//	}

}









//========================

// print and save 

// =====================





URLctrl.prototype.savedoc=function(){

	var e=document.getElementById("workarea");

	var f=document.getElementById("frm_save");

	f.cont.value=e.innerHTML;

	f.action="consumerguide/fn/saveas.php";

	f.submit();

}



URLctrl.prototype.compareprint=function(){

	var f=document.getElementById("frm_save");



	this.sys_altTarget=f.cont;

	f.cont.value="";

	this.sys_mode="";

//	alert(f.cont.value);

	this.sessionGo("compare");

	

	this._print();

	

}





URLctrl.prototype._print=function(){

	var f=document.getElementById("frm_save");



	if(f.cont.value==""){

		setTimeout(this.varname+"._print()",500);

	}else{

		f.action="consumerguide/fn/print.php";

		f.submit();

	}

}



URLctrl.prototype._setupFields=function(result){

	ajax_field_loaded=true;

	field_data=JSON.parse(result);

//	console.log("fieldsetup"+field_data);

}



URLctrl.prototype.sortCompare=function(v, order){

	this.sortfield=v;

	this.sortorder=order;

	this.sys_mode="";

	this.sessionGo("compare");

}



URLctrl.prototype.addImg=function(text){

	for (j in field_data.img){

//		text=text.replace(j, '<img src="consumerguide/images/'+field_data.img[j]+'"/>');

		text=text.replace(j, field_data.img[j]);

		text=text.replace(j, field_data.img[j]);

		text=text.replace(j, field_data.img[j]);

		text=text.replace(j, field_data.img[j]);

		text=text.replace(j, field_data.img[j]);

	}

	return(text);

}



URLctrl.prototype.tipbk=function(v){



	if (this.sys_mode==v){

		if (this.sys_mode=="compare") {v="list";}

		if (this.sys_mode=="list") {v="index";}

	}







	this.sys_mode="";

	if (v=="favor"){

		v="list";

	}

	if (v=="tips"){

		this.sys_cat="";

		this.sys_showtips=false;

	}

	this.sessionGo(v);

}





function startCat(v){



	var loc=""+document.location;

	locary=loc.split("#");

	document.location=locary[0]+v;

	

}





function PDF(v){

	//alert("Under construction");

	window.open('consumerguide/pdf/'+v+'.pdf');

}