/**
 * @(#)default1/view.js
 *
 * Copyright 1999-2007(c) MijnWinkel B.V.
 *
 * Version 7.5.0 8-jun-2007
 */

/* 
 * 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={
	"getCellFunction":function(t,styleText){
		var s="";
		switch(t){
			case "info":s='<a href="javascript:info('+getOID()+');"'+styleText+'>'+getLabel('info')+'</a>&nbsp;';
			break;
			case "quotation":s='<a href="javascript:order('+getOID()+');"'+styleText+'>'+getLabel('quotation')+'</a>&nbsp;'
			break;
			case "quotationq":s='<a '+styleText+' href="javascript:placeOrder(null,'+getOID()+',\'quantity'+getOID()+'\');">'+m('quotation')+'</a>';
			break;
			case "quantity":s='<input style="width:32px" 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>';
			break;
			case "orderq":s='<a '+styleText+' href="javascript:placeOrder(null,'+getOID()+',\'quantity'+getOID()+'\');">'+m('order')+'</a>';
			break;
			case "order":s='<a href="javascript:order('+getOID()+');"'+styleText+'>'+m('order')+'</a>&nbsp;';
			break;
		}
		return s
	},
	
	"getCellId":function(row,col){return (row+col)+'" '},
	
	"getCellData":function(s,i){
		var rd=fieldRaw(i);
		if(rd!=null&&rd!=''){
			if(isImage(i))s.append(getPicture(i));
			else 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));
		}else s.append('&nbsp');
	},
	
	"refreshProduct":function(){
		var row='id'+getCID()+'.'+getActiveRow()+'.',i,c;
		var styleText=makeStyle("font-family",getFontName("Verdana,Arial"),"font-size",getFontSize(9)+"pt","vertical-align","top")
		function getId(col){
			return row+col 
		}
		function updateCell(n){
			var c=getElementOnId(getId(n));
			if(c)c.innerHTML=view.getCellFunction(n,styleText);
		}
		updateCell("info");
		updateCell("quotation");
		updateCell("quotationq");
		updateCell("orderq");
		updateCell("quantity");
		updateCell("order");
		for(i=1;i<getNrOfFields();i++){
			if(getColShow(i)){
				c=getElementOnId(getId(i));
				if(c!=null){
					s=new SB();
					view.getCellData(s,i)
					c.innerHTML=s.toString();
				}
			}
		}
	}
}
 
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(v=="*")?-1:v;
}


var myClass='topleft';
 
function pageNavigatorStart(){
	var styleTitle=makeStyle("color",getFGTColor(),"font-family",getFontName("Verdana,Arial,Helvetica,sans-serif"),"font-size",getFontSize(9)+"pt","font-weight","bold");
	var s='<center><table width="100%" border="0" cellspacing="0" cellpadding="0">'+((!hasISB())?'<tr colspan=99><td>&nbsp;</td></tr>':'')+'<tr><td width="15">&nbsp;</td><td>';
	s+='<table border=0 cellpadding=2 cellspacing=0 width=100%><tr>';
	if(getPage()>0&&getNrOfItems()>4){
		s+='<td colspan="99" align="center" bgcolor="#FFFFFF" class="border">';
		s+=writeNavTop();
		s+='</td></tr><tr><td colspan="99">&nbsp</td></tr><tr>';
	}
	if(hasInfo()){
		s+='<td class="'+myClass+'" nowrap bgcolor="'+getFGColor()+'">&nbsp;</td>';
		myClass='top';
	}
	if(hasQuotationLink()){
		s+='<td class="'+myClass+'" nowrap bgcolor="'+getFGColor()+'">&nbsp;</td>';
		if(!hasOrderLink()){
			if(getQFType()==1)s+='<td class="'+myClass+'" valign=top nowrap bgcolor="'+getFGColor()+'"'+styleTitle+'>'+getQFLabel()+'&nbsp;</td>';
		}	
		myClass='top';
	}
	if(hasOrderLink()){
		s+='<td class="'+myClass+'" nowrap bgcolor="'+getFGColor()+'">&nbsp;</td>';
		if(getQFType()==1)s+='<td class="'+myClass+'" valign=top nowrap bgcolor="'+getFGColor()+'"'+styleTitle+'>'+getQFLabel()+'&nbsp;</td>';
		myClass='top';
	}
	for(var i=1;i<getExcelCols();i++)if(getColShow(i)){
		s+='<td class="'+myClass+'" valign=top '+getColFormat(i)+' nowrap bgcolor="'+getFGColor()+'"'+styleTitle+'>'+fieldLabel(i)+'&nbsp;</td>';
		myClass='top';
	}
	return s+'</tr>';
}

function rowStart(row,maxRows){return ''}

function buildBlock(columns){
	var row=' id="id'+getCID()+'.'+getActiveRow()+'.',s=new SB();
	var fontSize=getFontSize(9),styleText=makeStyle("font-family",getFontName("Verdana,Arial"),"font-size",fontSize+"pt","vertical-align","top");
	var getCellId=view.getCellId;
	
	s.append('<tr>');
	myClass='wleft';
	if(hasInfo()){
		s.append('<td',getCellId(row,"info"),'valign=top class="',myClass,'" nowrap>',view.getCellFunction("info",styleText),'</td>');
		myClass='w';
	}
	if(hasQuotationLink()){
		if(getQFType()==1){
			s.append('<td',getCellId(row,"quotationq"),'valign=top class="',myClass,'" nowrap>',view.getCellFunction("quotationq",styleText),'</td>');
		}
		else{
			s.append('<td',getCellId(row,"quotation"),'valign=top class="',myClass,'" nowrap>',view.getCellFunction("quotation",styleText),'</td>');
		}
		if(!hasOrderLink()){
			s.append('<td',getCellId(row,"quantity"),' valign=top class="',myClass,'">',view.getCellFunction("quantity",styleText),'</td>');
		}
		myClass='w';
	}
	if(hasOrderLink()){
		if(checkStock()&&getStockVal(null,getOID())<1){
			if(getQFType()==1){
				s.append('<td',getCellId(row,"orderq"),'valign=top class="',myClass,'" nowrap>&nbsp;</td>');
				s.append('<td',getCellId(row,"quantity"),' valign=top class="',myClass,'">&nbsp;</td>');
			}
			else s.append('<td',getCellId(row,"order"),'valign=top class="',myClass,'">&nbsp;</td>');
		}
		else{
			if(getQFType()==1){
				s.append('<td',getCellId(row,"orderq"),'valign=top class="',myClass,'" nowrap>',view.getCellFunction("orderq",styleText),'</td>');
				s.append('<td',getCellId(row,"quantity"),' valign=top class="',myClass,'">',view.getCellFunction("quantity",styleText),'</td>');
			}
			else s.append('<td',getCellId(row,"order"),'valign=top class="',myClass,'">',view.getCellFunction("order",styleText),'</td>');
		}
		myClass='w';
	}
	for(var rd,i=1;i<columns;i++){
		if(getColShow(i)){
			setActiveClass(myClass);
			s.append('<td',getCellId(row,i),'class="',myClass,'" ',styleText,'>');
			view.getCellData(s,i);
			s.append('</td>');
			myClass='w';
		}
	}
	
	s.append('</tr>');
	return s.toString();
}

function rowEnd(row,maxRows){return ''}
function colSpawning(nrOfCols){return ''}

function pageNavigatorEnd(){
	var s='';
	s+='<tr><td colspan="99" bgcolor='+getBGColor()+'>&nbsp;</td></tr>';
	s+='<tr><td width="30%" colspan="30" valign="top" nowrap=""></td>';
	if(hasResult()){
		s+='<tr><td bgcolor="#FFFFFF" class="border" colspan="100" align="center">';
		s+=writeNavBottum();
		s+='</td></tr></table></td><td width="15">&nbsp;</td></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>';
	return s
}

