/**
 * @(#)default7/view.js
 *
 * Copyright 1999-2007(c) MijnWinkel B.V.
 *
 * $Revision: 2306 $
 * 
 * $Date: 2009-09-23 23:06:41 +0200 (Wed, 23 Sep 2009) $
 *
 * (COMPACT)
 */

/* 
 * Product variations functions
 */
function getActiveRow(){return __activeRow}
function setActiveRow(i){__activeRow=i}
 
function FieldSelection(){
	var me=this,fld=[],fldsel=[];
	me.set=function(col,lst){fld[col]=lst};
	me.setActive=function(col,v){fldsel[col]=v};
	me.get=function(i){return fld[i]};
	me.active=function(i){return fldsel[i]};
}
function Selection(){
	var me=this,ins=[];
	me.has=function(oid,col){return self._fs&&_fs[oid]&&_fs[oid].get(--col)};
	me.get=function(oid,col,first){
		if(first==null)first=false;
		var sel=_fs[oid].get(--col);
		if(first)sel=sel[0];
		else if(sel.length<3&&sel[0].indexOf(';')!=-1){
			sel=sel[0].split(';');
			sel[sel.length]="";
			if(!ins[oid])ins[oid]=[];
			ins[oid][col]=true;
		}
		return sel
	};
	me.active=function(oid,col){return _fs[oid].active(--col)};
	me.enabled=function(oid){return self._fs&&_fs[oid]};
	me.isInlineSelection=function(oid,col){return(ins[oid]&&ins[oid][--col])?ins[oid][col]:false};
	me.reset=function(oid){ins[oid]=[]}; 
}
var selection=new Selection();

function parseDocument(doc,rel){
	function get(c){
		var v="";
		try{v=c.firstChild.nodeValue}
		catch(e){}
		return v
	}
	function getAttr(c,n){
		var v="";
		try{v=c.getAttribute(n)}
		catch(e){}
		return v
	}
	function getCols(r){return r.getElementsByTagName('col')}
	 
	var index=0,rows=doc.getElementsByTagName('row'),type,done=[];
	for(;index<rows.length;index++){
		row=rows[index];
		type=row.getAttribute("type")
	 	if(!done[type]&&type=="catalog"){
	 		done[type]=true;
			var cols=row.getElementsByTagName('col'),s="",v,item=[],l=cols.length,c;
			item[0]=row.getAttribute("number");
			for(var i=0;i<l;i++){
				v=cols[i].firstChild.nodeValue;
				if(v)item[i+1]=v;
				else item[i+1]="";
			}
			setCtlVal("_oid",_i(item[0]+1));
			_d[getActiveRow()]=item;
			__rowData=_d[getActiveRow()];

		}
		else if(!done[type]&&type=="catalog_replace"){
	 		done[type]=true;
			var cols=row.getElementsByTagName('col'),l=cols.length,n,c,i=0;
			for(;i<l;i++){
				c=cols[i];
				n=c.getAttribute("number");
				v=c.firstChild.nodeValue;
				if(v!=null&&v!='*'){
					if(n)setRaw(n,v);
					else{
						n=c.getAttribute("name");
						if(n&&n=="stock")_rel.setStock(v);
					}
				}
			}
		}
		else if(type=="catalog_selection"){
			if(this.selection)selection.reset();
			var cols=row.getElementsByTagName('col'),l=cols.length,col,i=0,opts,optsl,opti,opt,oid=_i(row.getAttribute("number"))+1;
			var info=new FieldSelection();
			_fs[oid]=info;
			for(;i<l;i++){
				col=cols[i];
				colNr=cols[i].getAttribute("number");
				opts=cols[i].getElementsByTagName('option');
				optsl=opts.length;
				var lst=[],sel="";
				for(opti=0;opti<optsl;opti++){
					opt=opts[opti];
					lst[opti]=opt.firstChild.nodeValue;
					if(sel==""&&opt.getAttribute("selected")){
						sel=opt.getAttribute("inline");
						if(sel=="")sel=lst[opti];
					}
				}
				lst[optsl]="";
				info.set(colNr,lst);
				info.setActive(colNr,sel);
			}
		}
		else if(!done[type]&&type=="catalog_localstock"){
	 		done[type]=true;
			var cols=row.getElementsByTagName('col'),l=cols.length,n,c,i=0;
			for(;i<l;i++){
				c=cols[i];
				v=_i(c.firstChild.nodeValue);
				if(v!=null&&v!='*')setRaw(getStockFld(),v);
			}
		}
	}
}
function response(doc){
	if(doc){
		parseDocument(doc,true);
		view.refreshProduct();
	}
}
function _selectProduct(ctl,i,oid,callback,count){
	if(!selection.isInlineSelection(oid,i)){
		var n=(count=="")?"":count+"_";
		for(var f=getData(),c;i<getNrOfFields();i++){
			c=f['_selection'+n+oid+'_'+i];
			if(c!=null)c.selectedIndex=-1;
		}
		setCtlVal("_oid",oid);
		new Remote().request(callback,"catalog_item_data","_oid",oid,"counter",count)
	}
}
function selectProduct(ctl,i,oid,row){
	setActiveRow(row);
	_selectProduct(ctl,i,oid,self.response,"")
}

function orderTriggered(extra,oid,count){
	var f=getData(),s=new SB(),ss=new SB(),sep1='',sep2='',v,l;
	if(f){
		if(!oid)oid=getOID();
		if(selection.enabled(oid)){
			if(count!=null&&count!="")count+="_";
			else count="";
			for(var index=0,c,i=1;i<getNrOfFields();i++){
				if(selection.isInlineSelection(oid,i)){
					c=f['_selection'+count+oid+'_'+(i-1)];
					if(c){
						if(c.selectedIndex!=-1)index=c.selectedIndex;
						v=trim(c.options[index].value);
						l=fieldLabel(i);
						s.append(sep1,l," ",v);
						ss.append(sep2,l,"%3d",v);
						sep1=',';
						sep2=';';
					}
				}
			}
			if(extra){
				extra['_xd']=s.toString();
				extra['_xds']=ss.toString();
			}
		}
		c=f["productcount"];
		if(c&&extra)extra['_xc']=c.value;
	}
}
/*
 * Product variations end
 */
 
 var view={
	"getFieldValue":function(i){
		var s=new SB();
		if(selection.has(getOID(),i)){
			var list=selection.get(getOID(),i),n=0,len=list.length-1,active=selection.active(getOID(),i);
			if(len>1){
				if(selection.isInlineSelection(getOID(),i))s.append('<input type=hidden name="_selectionall',getOID(),'_',(i-1),'" value="',selection.get(getOID(),i,true),'">');
				s.append('<select onchange="selectProduct(this,',i,',\''+getOID()+'\',',getActiveRow(),');" name="_selection',getOID(),'_',(i-1),'">');
				for(;n<len;n++)s.append('<option value="',escape(list[n]),'" ',((list[n]==active)?' selected ':''),'>',list[n],'</option>');
				s.append('</select>');
			}else s.append(list[0]);
		}else s.append(fieldPlain(i));
		return s.toString();
	},
	"getId":function(n){return ' id="'+n+getCID()+'.'+getActiveRow()+'" '},
	"getPart":function(n,columns,picture){
		var s="";
		switch(n){
			case "title":{
				if(!empty(fieldTitle()))s+=fieldTitle();
			}
			break;
			case "image":{
				if(!empty(picture))s+=getPicture(picture);
			}
			break;
			case "info":{
				var noRows=(getFieldPresentation()==2),sep='',t=getTitleIndex();
				s+='<table border="0" cellspacing="0" cellpadding="2">';
				if(noRows)s+='<td valign=top>';
				var showLabel=(getFieldPresentation()!=1),val,i=1;
				for(;i<columns;i++){
					if(i!=picture&&i!=t&&getColShow(i)){
						if(noRows){
							s+=sep;
							s+=(isImage(i))?getPicture(i):view.getFieldValue(i);
							sep=', ';
						}else{
							val=fieldRaw(i);
							if(val!=null&&val!=''){
								s+='<tr><td width="10"><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
								if(showLabel)s+='<td width="1" valign="top" nowrap><b><nobr>'+fieldLabel(i)+'</nobr></b>&nbsp;</td><td valign="top">'+view.getFieldValue(i)+'</td>';
								else s+='<td valign=top>'+view.getFieldValue(i)+'</td>'; //my[3]+=fieldFormated(i);
								s+='<td width="10"><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td></tr>';
							}
						}
					}
				}
				if(noRows)s+='</td></tr>';
				
				if(hasOrder()&&getQFType()==1){
					if(checkStock()&&getStockVal(null,getOID())<1);
					else{
						if(noRows)s+='<td valign=baseline><b>'+getQFLabel()+'&nbsp;</b>';
						else{
							s+='<tr><td width="10"><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
							s+='<td width="1" valign=top nowrap><b>'+getQFLabel()+'&nbsp;</b>';
							if(showLabel)s+='</td><td valign="top">';
						}
						s+='<input name="quantity'+getOID()+'" type="text" onclick="javascript:return false;" value="'+getInfoQuantity("quantity"+getOID())+'" maxlength="6" size="2" onkeypress="javascript:return keyPress(arguments[0],this,'+getOID()+');" onkeyup="javascript:return keyUp(this);"/>';
						if(self.getMetric)s+='<span style="height:100%;vertical-align:top;">&nbsp;'+getMetric()+'</span>';
						s+='</td><td width="10"><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td></tr>';
					}
				}
				s+='</table>';
			}
			break;
			case "actions":{
				if(hasInfo())s+='<a href="JavaScript:info('+getOID()+');"><img align="absmiddle" src="'+__cmd+getLanguage()+'/b-infolist.gif" alt="'+getLabel("info")+'" border="0"></a>&#160;';
				if(hasQuotationLink()){
					if(getQFType()==1)s+=makeCmd(null,'placeOrder(null,'+getOID()+',\'quantity'+getOID()+'\')','b-quotationlist.gif',m('quotation'))+'&nbsp;';
					else s+='<a href="javascript:order('+getOID()+');"><img align="absmiddle" src="'+__cmd+getLanguage()+'/b-quotationlist.gif" alt="'+getLabel("quotation")+'" border="0"></a>&#160;';
				}
				if(hasOrderLink()){
					if(checkStock()&&getStockVal(null,getOID())<1)s+='&nbsp;';
					else{
						if(getQFType()==1)s+=makeCmd(null,'placeOrder(null,'+getOID()+',\'quantity'+getOID()+'\')','b-orderlist.gif',m('order'))+'&nbsp;';
						else s+='<a href="JavaScript:order('+getOID()+');"><img align="absmiddle" src="'+__cmd+getLanguage()+'/b-orderlist.gif" alt="'+m("order")+'" border="0"></a>';
					}
				}
			}
			break;
		}
		return s
	},
	"refreshProduct":function(){
		var row=getCID()+'.'+getActiveRow(),cols=getNrOfFields(),pic=getPictureIndex();
		function getId(n){return n+row}
		function update(n){
			var c=getElementOnId(getId(n));
			if(c)c.innerHTML=view.getPart(n,cols,pic);
		}
		update("title");
		update("image");
		update("info");
		update("actions");
	}
}
 

function getItemIndex(count,oid,cid){
	if(cid==null)cid=getCID();
	if(oid==null)oid=getOID();
	else{
		var i=(""+oid).indexOf("__");
		if(i!=-1)oid=oid.substr(i+2);
	}
	if(count==null&&self.getActiveRow)count=getActiveRow();
	return cid+"."+oid+"."+count;
}
function BasketInfo(){
	var me=this,id2ProductId=new HashMap(),quantity=new HashMap();
	var it=__b.iterator("s.order","article.id"),id,productId;
	while(it.next()){
		id=getItemIndex(0,it.get('oid'),it.get('cid'));
		productId=it.get('id');
		id2ProductId.set(id,productId);
		quantity.increment(productId,it.getNumber("quantity"));
	}
	me.getProductQuantity=function(oid,cid){
		var v=quantity.get(id2ProductId.get(getItemIndex(0,oid,cid)));
		return(isNaN(v))?0:v;
	};
}
var __basketInfo=null;
function getBasketInfo(){
	if(__basketInfo==null)__basketInfo=new BasketInfo();
	return __basketInfo
}
function resetBasketInfo(){__basketInfo=null}

function getStockVal(count,oid){
	var v=-1,n=(oid==null)?__rowData[0]:(_i(oid)-1);
	if(self._stc&&_stc[n]!=null)v=_stc[n];
	if(v==-1)v=fieldRaw(getStockFld());
	v-=getBasketInfo().getProductQuantity(oid,getCID());
	return parseFloat(v=="*")?-1:v;
}


var my=[],myDoUpdate=false;
var myCols;

function pageNavigatorStart(){
	if(getNrOfItems()<getColsPerPage())myCols=getNrOfItems();
	else myCols=getColsPerPage();

	var s='<center><table bgcolor="#FFFFFF" border="0" cellspacing=0 cellpadding=0>';
	s+='<tr><td><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
	s+='<td><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
	
	for(var j=1;j<=myCols;j++){
		s+='<td width="9"><img src="/pic/leeg.gif" width="9" height="1" border="0" alt=""></td>';
		s+='<td><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
		s+='<td width="9"><img src="/pic/leeg.gif" width="9" height="1" border="0" alt=""></td>';
		s+='<td><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
	}
	s+='</tr>';
	if(getPage()>0&&(getNrOfItems()/getColsPerPage())>2){
		s+='<tr><td>&nbsp;</td>';
		s+='<td><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
		s+='<td valign="top" background="/views/default7/b_left.gif"><img src="/views/default7/b_leftup.gif" height="9" width=9></td>';
		s+='<td bgcolor="#FFFFFF" class="repeatbackgroud" colspan="'+((myCols*4)-3)+'" align="center">';
		s+='<img src="/views/default7/spacer.gif" height="3" width="1"/><br/>';
		s+=writeNavTop();
		s+='</td><td valign="top" background="/views/default7/b_right.gif"><img src="/views/default7/b_rightup.gif" width=9></td>';
		s+='<td><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
		s+='</tr><tr><td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';
		s+='<td><img src="/pic/leeg.gif" width="1" height="1" border="0" alt=""></td>';
		s+='<td><img height=9 src="/views/default7/b_leftunder.gif" width=9></td>';
		s+='<td colspan="'+((myCols*4)-3)+'" background="/views/default7/b_bottom.gif" height=9><img height=9 src="/views/default7/spacer.gif" width="9"/></td>';
		s+='<td><img height=9 src="/views/default7/b_rightunder.gif" width=9></td>';
		s+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td></tr>';
	}
	s+='<tr>';
	s+='<td>&nbsp;</td><td>&nbsp;</td>';
	s+='<td colspan="'+(myCols*4)+'">&nbsp;</td>';
	s+='</tr>';			
	return s
}
function rowStart(row,maxRows){
	for(var i=0;i<6;)my[i++]='<td width="20%"><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';
	return ''
}
function buildBlock(columns){
	var getPart=view.getPart;
	myDoUpdate=true;
	
	my[0]+='<td width="9" bgcolor='+getFGColor()+' valign="top" background="/views/default7/b_left.gif"><img height=9 src="/views/default7/b_leftup.gif" width=9></td>';
	my[0]+='<td width="600" bgcolor='+getFGColor()+' rowspan="2" class="repeatbackgroud" class=top_header valign=top align="center"><table border="0" cellspacing="1" cellpadding="5"><tr><td colspan=2 align=center><b style="color:'+getFGTColor()+'" '+view.getId('title')+'>';
	my[0]+=getPart("title");
	my[0]+='</b></td></tr></table></td>';

	my[0]+='<td width="9" bgcolor='+getFGColor()+' valign="top" background="/views/default7/b_right.gif"><img height=9 src="/views/default7/b_rightup.gif" width=9></td>';
	my[0]+='<td width="20%"><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';	

	if(!fieldIsEmpty(getTitleIndex())){
		my[1]+='<td bgcolor='+getFGColor()+' width="9" background="/views/default7/b_left.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';	
		my[1]+='<td bgcolor='+getFGColor()+' width="9" background="/views/default7/b_right.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';	
		my[1]+='<td>&nbsp;</td>';
	}
	else my[1]+='<td class=top>&nbsp;</td><td>&nbsp;</td>';

	var p=getPictureIndex();
	my[2]+='<td width="9" background="/views/default7/b_left.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';	
	my[2]+='<td align="center" class="middle"><table border=0><tr><td valign=top align=center>';
	my[2]+='<span '+view.getId('image')+'>';
	my[2]+=view.getPart("image",columns,p);
	my[2]+='</span></td></tr></table></td>';
	my[2]+='<td width="9" background="/views/default7/b_right.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';	
	my[2]+='<td>&nbsp;</td>';
	
	my[3]+='<td width="9" background="/views/default7/b_left.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';	
	my[3]+='<td align="center" valign=top class="middle">';
	my[3]+='<span '+view.getId('info')+'>';
	my[3]+=view.getPart("info",columns,p);
	my[3]+='</span></td>';
	my[3]+='<td width="9" background="/views/default7/b_right.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';	
	my[3]+='<td>&nbsp;</td>';

	if(hasInfo()||hasQuotation()||hasOrder()){
		my[4]+='<td width="9" background="/views/default7/b_left.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';	
		my[4]+='<td align="center" class=bottom><img height=9 src="/views/default7/spacer.gif" height="5"/><br>';
		my[4]+='<span '+view.getId('actions')+'>';
		my[4]+=view.getPart("actions");
		my[4]+='</span><br/><img src="/views/default7/spacer.gif" height="3"/></td>';
		my[4]+='<td width="9" background="/views/default7/b_right.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';	
		my[4]+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';
	}

	my[5]+='<td><img height=9 src="/views/default7/b_leftunder.gif" width=9></td>';
	my[5]+='<td background="/views/default7/b_bottom.gif" height=9><img height=9 src="/views/default7/spacer.gif" width="9"/></td>';
	my[5]+='<td><img height=9 src="/views/default7/b_rightunder.gif" width=9></td>';
	my[5]+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';	

	return ''
}
function rowEnd(row,maxRows){
	var s='';
	if(myDoUpdate){
		s='<tr><td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';
		for(var i=0;i<4;i++)s+=my[i]+'</tr><tr><td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';
		if (my[4]!=""){
			s+=my[4];			
			s+='</tr><tr><td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';
		}
		s+=my[5];		
		s+='</tr></tr><tr>';
		s+='<td>&nbsp;</td><td>&nbsp;</td>';
		s+='<td colspan="'+(myCols*4)+'">&nbsp;</td>';
		s+='</tr>';	
		myDoUpdate=false
	}return s
}

function colSpawning(nrOfCols){return ''}
function pageNavigatorEnd(){
	var s='';
	s+='<tr><td colspan="30" valign="top" nowrap=""></td>';
	if(hasResult()){
		s+='<tr><td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';
		s+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';		
		s+='<td valign="top" background="/views/default7/b_left.gif"><img src="/views/default7/b_leftup.gif" height="9" width=9></td>';
		s+='<td rowspan="2" class="repeatbackgroud" bgcolor="#FFFFFF" colspan="'+((myCols*4)-3)+'" align="center">';
		s+='<img src="/views/default7/spacer.gif" height="3" width="1"/><br/>';
		s+=writeNavBottum();
		s+='</td><td valign="top" background="/views/default7/b_right.gif"><img src="/views/default7/b_rightup.gif" width=9></td>';
		s+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';	
		s+='</tr><tr>';
		s+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';		
		s+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';		
		s+='<td background="/views/default7/b_left.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';
		s+='<td background="/views/default7/b_right.gif"><img src="/views/default7/spacer.gif" height="1" width="9"/></td>';
		s+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';	
		s+='</tr><tr><td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';
		s+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';		
		s+='<td><img height=9 src="/views/default7/b_leftunder.gif" width=9></td>';
		s+='<td colspan="'+((myCols*4)-3)+'" background="/views/default7/b_bottom.gif" height=9><img height=9 src="/views/default7/spacer.gif" width="9"/></td>';
		s+='<td><img height=9 src="/views/default7/b_rightunder.gif" width=9></td>';
		s+='<td><img src="/views/default7/spacer.gif" height="1" width="1"/></td>';	

		s+='</tr><tr></tr></table><br><br>';
	}
	else s+='<table width=100% bgcolor='+getBGColor()+' class="middle" border=0><tr><td align=center><b>'+getLabel('noresult')+'</b><td></tr></table>';
	s+='</td></tr></table></center>';
	return s
}

