// Enable/disable different debuging info
var DEBUG = false;

// DEFAULTS RESULT DISPLAY
var ZOOM = '0';
var SIZE = 'small';
var AUTOCROP  = '&autocrop=1';
var INDEXSTART = 0;
var MAXITEMSONPAGE_SMALL = 10;
var MAXITEMSONPAGE_LARGE = 5;
var ZOOMFONT = '700';
var SIZEFONT = '700';
var THUMB_PX_SMALL = 35;
var THUMB_PX_LARGE = 80;
var TITLE_PX_SMALL = 110;
var TITLE_PX_LARGE = 80;
var CURRENTPAGE = 1;

var analytics_state = ''; ///textiles/collection/fabric/Campas 3
//DEFAULTS ERROR HANDLING
var EREZFAILURE = false;

// CONTROL VARS
var zoomlevel = ZOOM;
var sizelevel = SIZE;
var autocrop = AUTOCROP;
var thumbPixelSize = THUMB_PX_SMALL;
var titlePixelWidth = TITLE_PX_SMALL;

var sizeSMarked = 700;
var sizeLMarked = 100;
var zoom50Marked = 700;
var zoom100Marked = 100;

var zoomFont = ZOOMFONT;
var sizeFont = SIZEFONT;

var zoom50Class = 'on';
var zoom100Class = '';
var sizeSmallClass = 'on';
var sizeLargeClass = '';

var pageNum = CURRENTPAGE;

// On image load failure switch to true and display errMsg
var erezFailure = EREZFAILURE;

// PAGE BROWSER VARS
var maxItemsOnPage = MAXITEMSONPAGE_SMALL;
var indexStart = INDEXSTART;

// VIEWER VARS
var zVIEWER = new Array();
zVIEWER['name'] = 'fsiviewer';
zVIEWER['height'] = 415;
zVIEWER['width'] = 385;

var pANIMATION = new Array();
pANIMATION['minViewerH'] = 180;
pANIMATION['maxViewerH'] = 415;
pANIMATION['minDetailsH'] = 10;
pANIMATION['maxDetailsH'] = 250;
pANIMATION['addToHeight'] = 40;  // Changed from 50 - LM 2007.05.01
pANIMATION['speed'] = 2;
pANIMATION['heightInterval'] = 10;

// PATH
var xPATHS = new Array();
xPATHS['RESOURCES'] = 'fileadmin/templates/res/';
xPATHS['IMAGES'] = 'fileadmin/templates/images/';

// MAIN DATA ARRAY, INCOMING ARRAY
var x = new Array();

// SINGLE PRODUCT ARRAY;
var z = new Array();

//LIGHTBOX
var lightbox = new Array();
var LB = new Array();
LB['LIMIT'] = 20;


// Pre selected color
var pre_clicked = '';
var pre_clicked_idx = 0;


/*
	Check whether connection to erez server can be established
*/
function checkErez() {
	var img = new Image();
	img.src = 'http://erez.1px.com/erez4/erez?src=images/5069/F/C0400/F_5069_C0400_W120.tif';
	
	img.onerror = function (evt) {
		return 0;
	}
	img.onload = function (evt) {
		return 1;
	}
}
/*
	Calculate the height of the product details layer when animated
	Calculate also the height of the imageViewer div
*/
function setDetailsLayerHeight(dataHeight){
		var lHeight = dataHeight + pANIMATION['addToHeight'];
		pANIMATION['maxDetailsH'] = lHeight; 
		pANIMATION['minViewerH'] = pANIMATION['maxViewerH'] - lHeight;
}

/*
	Wrap the page browser
*/
function wrapResultBrowser(doAnalytics) {
	startAt = indexStart;
	limit = maxItemsOnPage;
	total = countData();
	previous_start_nr = '';
	next_start_nr = '';
	
	//Reset all values if previous page is first page
	if((indexStart-limit) < INDEXSTART){
		indexStart = INDEXSTART;
		startAt = INDEXSTART;
		currentPage = CURRENTPAGE;
	}

	numberOfPages = Math.ceil(total / limit);
	currentPage = Math.floor(indexStart / limit)+1;	
	previous_start_nr = startAt - limit;
	next_start_nr = startAt + limit;		
	first_start_nr = 0;	
	last_start_nr =  (limit*numberOfPages) - limit;
	 
	if (doAnalytics) updateAnalytics_controls('event=browse&page='+currentPage+'of'+numberOfPages);
	
	// Make link to previous page ?
	if(startAt > 0 && (startAt - limit) < total) {
    	previous_link = 'onclick="indexStart=' + previous_start_nr +'; updateResultItems(true);"';
		previous_showArr = 'style="cursor:pointer;cursor:hand;background-image:url(' + xPATHS['IMAGES'] + 'goToPre.gif );"';
		
		firstPage_link = 'onclick="indexStart=' + first_start_nr +';updateResultItems(true);"';
		firstPage_showArr = 'style="cursor:pointer;cursor:hand;background-image:url(' + xPATHS['IMAGES'] + 'goToFirst.gif );"';
	} else {
		previous_link = '';
		previous_showArr = '';
		firstPage_link = '';
		firstPage_showArr = '';
	}
	// Make link to next page?
	if((startAt + limit) < total) {
    	next_link = 'onclick="indexStart=' + next_start_nr +';updateResultItems(true);"';
		next_showArr = 'style="cursor:pointer;cursor:hand;background-image:url(' + xPATHS['IMAGES'] + 'goToNext.gif );"';
		
		lastPage_link = 'onclick="indexStart=' + last_start_nr +';updateResultItems(true);"';
		lastPage_showArr = 'style="cursor:pointer;cursor:hand;background-image:url(' + xPATHS['IMAGES'] + 'goToLast.gif );"';
	} else {
		next_link = '';
		next_showArr = '';
		lastPage_link = '';
		lastPage_showArr = '';
	
	}
	// Wrap the page browser for output
	currentPage_link = '<div class="pB-currentPage">' + currentPage + ' | ' + numberOfPages +  '</div>';
	
	var leftSide =  '<div class="pB-left">'
						+'<div class="pB-goToFirst" ' + firstPage_showArr + ' ' + firstPage_link + '></div>'
						+'<div class="pB-goToPre" ' + previous_showArr + ' ' + previous_link + '></div>'
	  				  +'</div>';
	  				  
    var centerSide =  '<div class="pB-center">' + currentPage_link + '</div>';

	var rightSide =  '<div class="pB-right">'
						+'<div class="pB-goToNext" ' +next_showArr+ ' ' + next_link + '></div>'
	  					+'<div class="pB-goToLast" ' +lastPage_showArr+ ' ' +lastPage_link + '></div>'
	  				  +'</div>';
	pre_next_table = leftSide + centerSide + rightSide;
	return pre_next_table;
}

/*
	Wrap the resultset control features
*/
function wrapControls(){
		out = '<div class="cT-sizeControls">'
				 + '<div id="small" class="cT-sizeLevel" style="font-weight:' + sizeSMarked + ';" onclick="return updateControls(this.id);">' + xLANG['controlsSmall'] + '</div>'
		 		 + '<div class="cT-sizeSplit">/</div>'
				 + '<div id="large" class="cT-sizeLevel" style="font-weight:' + sizeLMarked + ';" onclick="return updateControls(this.id);">' + xLANG['controlsLarge'] + '</div>'
		 		+'</div>'
		
		  		+'<div class="cT-center">-</div>'
		
		  		+'<div class="cT-zoomControls">'
				 + '<div id="100" class="cT-zoomLevel" style="font-weight:' + zoom100Marked + ';" onclick="return updateControls(this.id);">' + xLANG['controlsZoomMax'] + '</div>'
		  		 + '<div class="cT-zoomSplit">/</div>'
				 + '<div id="0" class="cT-zoomLevel" style="font-weight:' + zoom50Marked + ';" onclick="return updateControls(this.id);">' + xLANG['controlsZoomMin'] + '</div>'				 
				+'</div>';

		return out;
}

/*
	Create the resultset image src
*/
function createSrc(erez_id){
	
	autocrop = AUTOCROP;
	if(zoomlevel != ZOOM){
	  autocrop = '';
	}
	imgSrc = 'http://erez.1px.com/erez4/erez?src=' + erez_id + '&tmp=thumb_' + sizelevel + '&zoomlevel=' + zoomlevel + autocrop;
	return imgSrc;
}

/*
	Test if resultset image was loaded
*/
function imgLoadError(img, eID) {
 var alternativeSrc = 'clear.gif';

 var bgImg = document.getElementById(eID);
 if(bgImg) {
  img.src = alternativeSrc;
  bgImg.className = 'resultThumbs';
  erezFailure = true;
  displayErezErr();
 }
}

/*
	Display an error message when erez_server could not fetch the resultset image / images
*/
function displayErezErr() {
	var failureNotice = document.getElementById('sysMsg'); 
	clearElement('sysMsg', 'bottomCOL-border');
	var failureNotice = createElem('sysMsg', 'bottomCOL-border', 'div');
	if(failureNotice){
		failureNotice.innerHTML = xLANG['imgErr'];
		return true; 
	}
	return false;
}

/*
	Show different color when resultitem is selected
*/
function deactivate(){
	active = document.getElementById(pMarked);
	if(active) {
		active.style.background = '#F7F6F6';
		active.style.border = '1px solid #F7F6F6';
	}
	return;
}
function activateItem(item, itemEvent){
	if(!itemEvent) {
		if(item.id != pMarked) {
			item.style.background = '#F7F6F6';
			item.style.border = '1px solid #F7F6F6';
		}
		return;
	}
	item.style.background = '#fff';
    item.style.border = '1px solid #DFDBD9';
	
	return true;
	
}

/*
	Wrap the resultset items
*/
function wrapResultItems(){
	var fullWrap = '';
	var pSrc = '';
	var pTitle = '';
	var endIndex = maxItemsOnPage + indexStart;
	if(endIndex >= countData()){ endIndex = countData(); }

	for(i=indexStart;i<endIndex;i++){
		var cssClass; cssClass = 'pS-item-off';	
		pUid = x[i]['uid'];
		pSrc = createSrc(x[i]['erez_id']);
		pTitle = x[i]['productName'];
		pColor = x[i]['oldcolor'];
		
		if('item_'+pUid == pMarked) {
		  cssClass = 'pS-item-on';
		}
		
		fullWrap += '<div id="item_' + pUid + '" class="' + cssClass + ' idx' + i + '" onmouseover="return activateItem(this, 1);" onmouseout="return activateItem(this, 0);" onclick="resultSel(this.id, ' + i + ');">'
		  			  	+'<div id="thumbsDIV_' + pUid + '" class="resultThumbsBG" style="float:left;width:' + thumbPixelSize +'px;height:' + thumbPixelSize +'px;"><img onerror="imgLoadError(this, \'thumbsDIV_' + pUid + '\');"  id="img_' + i +'" src="' + pSrc + '" align="absmiddle" /></div>'
			 		  	+'<div id="pName_' + pUid + '" style="float:left;margin-left:9px;padding:12px 3px 1px 3px;width:'+ titlePixelWidth +'px;">';
	 	fullWrap += pTitle +(x[i]['outgoing']==1?' *':'')+ ' | ' + pColor.slice(2);
	 	fullWrap += '</div><div class="clearer"></div>'
					  +'</div>'
					  +'<div class="clearer"></div>';
			
		if (x[i]['pre_clicked']=='1')
		{
			pre_clicked = 'item_'+pUid;
			pre_clicked_idx = i;
		}
	}
	return fullWrap;
}

function wrapResultCount(){
  return '<h1>(' + countData() + ')</h1>';
}

/*
	Handle selection of result from the resultset
*/
var pMarked = '';
var pMarkedSettings = new Array();
pMarkedSettings['name'] = 'NoName';
pMarkedSettings['color'] = 'NoColor';

var xOne;
function resultSel(item, xIdx, eventType){
	var resultItem = document.getElementById(item);
	var currentClass = document.getElementById(item).className;
	var preResult = document.getElementById(pMarked);
	var newClass = currentClass;
	xOne = createSingleArray(x,item);
	
	
 	//if another product is clicked reset and show this product instead
	if(pMarked != item) {
		deactivate();			
		resultItem.className = 'pS-item-on';
		renderProductDetails(item, 'on', 'zoomView');
		pMarked = item;
		
	 	// LM - 2008.09.28
		pMarkedSettings['name'] = x[xIdx]['productName'];
		pMarkedSettings['color'] = x[xIdx]['oldcolor'];
		updateAnalytics_product('');

		return true;
	}
 	//otherwise if the same product is selected reset and show themeentrance
	resultItem.className = 'pS-item-off';
	renderProductDetails(item, 'off', 'none');
	pMarked = '';
	pMarkedSettings['name'] = 'NoName'; pMarkedSettings['color'] = 'NoColor';
	return false;	
}


/*======================================================================================
== Functions to send a hit to Google Analytics, everytime a new Collection choice is made
====================================================================================== */
function updateAnalytics_product(params)
{
	pTitle = pMarkedSettings['name'];
	pColor = pMarkedSettings['color'];
	uri = '/fabric/'+pTitle+"/textile/"+pTitle+'-'+pColor.slice(2);
	uri += (params!='' ? '?'+params : '');
	
	//debug: alert('/textiles/collection'+uri);
	pageTracker._trackPageview('/textiles/collection'+uri);
}

function updateAnalytics_controls(params)
{
	uri = analytics_state + (params!='' ? '/?'+params : '');
	
	//debug: alert('/textiles/collection'+uri);
	pageTracker._trackPageview('/textiles/collection'+uri);
}


/*
	Wrap the resultset header
*/
function wrapSearchHeader(){
  	out = '<div class="headline"><h1>' + xLANG['searchHeader'] + '</h1></div>'
		  +'<div class="count">' + wrapResultCount() + '</div>';
	return out;
}

/*
	Show different elements before resultset is displayed
*/
function showResultElements(){
	 // DIV HELP TEXT TO SHOW / HIDE
	var searchHelp = document.getElementById('searchHelp');
	
	 // DIV-elements to replace / output content
	var searchHeader = document.getElementById('searchHeader');
	var resultControls = document.getElementById('searchControls');
	var resultItems = document.getElementById('searchResults'); 
	var resultBrowser = document.getElementById('searchPageBrowser'); 
	
	if(searchHelp){ searchHelp.style.display = 'none'; }	 
	if(searchHeader) { searchHeader.innerHTML = wrapSearchHeader(); }
	if(resultControls){ resultControls.innerHTML = wrapControls(); }
	if(resultItems){ resultItems.innerHTML = wrapResultItems(); }
	if(resultBrowser){ resultBrowser.innerHTML = wrapResultBrowser(); }
	
	if (pre_clicked!='')
	{
		activateItem($(pre_clicked), 1);
		resultSel(pre_clicked, pre_clicked_idx);
	}
}
/*
	Display a message when no result was found
*/
function showNoResultMsg() {
	   // DIV HELP TEXT TO SHOW / HIDE
	var searchHelp = document.getElementById('searchHelp');

	 // DIV-elements to replace / output content
	var searchHeader = document.getElementById('searchHeader');
	var resultControls = document.getElementById('searchControls');
	var resultItems = document.getElementById('searchResults'); 
	var resultBrowser = document.getElementById('searchPageBrowser');
	var pDetails = document.getElementById('productDetails');
	var pLightbox = document.getElementById('lightbox'); 

	if(searchHelp){ searchHelp.style.display = 'none'; }
	if(searchHeader){ searchHeader.innerHTML = wrapSearchHeader(); }
   	if(resultControls){ resultControls.innerHTML = ''; }
   	if(resultBrowser){ resultBrowser.innerHTML = ''; }
	if(resultItems){ resultItems.innerHTML = '<div class="noResultsMsg">' + xLANG['noResults'] + '</div>'; }
/*
	if(pDetails && pLightbox){ 
	   	pDetails.style.visibility = 'hidden';
	  	pLightbox.style.display = 'none';
	  	updateViewer('none'); 
	}
*/
}

/*
	FILL DIVS WITH RESULT SET
	INIT WHAT TO DISPLAY IN DIVS
*/
var themeDoor = null;
function initData(){
	var d = document;
	var productViewer = d.getElementById('productViewer');
	if(themeDoor == null){
			themeDoor = productViewer.innerHTML;
	}

	if(x.length > 0) {
		showResultElements();
	} else {
		switch(x['EVENT']){
			case 'initialLightbox':
				pDetails = document.getElementById('productDetails');
				pLightbox = document.getElementById('lightbox');
				pDetails.style.visibility = 'visible';
				pLightbox.style.display = 'block';
				displayLightbox();
				initScrollLayers();
				initUserArea();
				serverRequest('singleProject', x['special']);
				break;
			case 'deleteLightbox':
				pDetails = document.getElementById('productDetails');
				pLightbox = document.getElementById('lightbox');
				pDetails.style.visibility = 'visible';
				pLightbox.style.display = 'block';
				displayLightbox();
				initScrollLayers();
				initUserArea();
				serverRequest('deleteProject', x['special']);
				break;
			case 'initialResult':
				showResultElements();
				break;
			case 'list':
				showNoResultMsg();
				break;
			default:
				resetData();
				break;
		}
	}
}

/* 
	Reset all views
*/
function resetData(){
	 // DIV HELP TEXT TO SHOW / HIDE
	 var searchHelp = document.getElementById('searchHelp');
	 
	 // DIV-elements to replace / output content
	 var searchHeader = document.getElementById('searchHeader');
	 var resultControls = document.getElementById('searchControls');
	 var resultItems = document.getElementById('searchResults'); 
	 var resultBrowser = document.getElementById('searchPageBrowser'); 
	 var failureNotice = document.getElementById('sysMsg'); 
	 var pDetails = document.getElementById('productDetails'); 
	 var pLightbox = document.getElementById('lightbox'); 
	 if(searchHeader){ searchHeader.innerHTML = ''; }
	 if(resultControls){ resultControls.innerHTML = ''; }
	 if(resultItems){ resultItems.innerHTML = ''; }
	 if(resultBrowser){ resultBrowser.innerHTML = ''; }
	 if(failureNotice){ failureNotice.innerHTML = ''; }
	 if(searchHelp){ searchHelp.style.display = 'block'; }
/*
if(pDetails && pLightbox){ 
		pDetails.style.visibility = 'hidden'
		pLightbox.style.display = 'none';
		updateViewer('none'); 
	}
*/
}

function countData(){
  return x.length;
}

/*
	Controls in top of result list should be updated when user clicks
*/
function updateControls(cId){
   
	switch(cId){
	  case 'small':
	  	document.getElementById('large').style.fontWeight = 100;
		document.getElementById(cId).style.fontWeight = 700;
		sizeLMarked = 100;
		sizeSMarked = 700;
		sizelevel = cId;
		maxItemsOnPage = MAXITEMSONPAGE_SMALL
		thumbPixelSize = THUMB_PX_SMALL;
		titlePixelWidth = TITLE_PX_SMALL;
		
		// LM - 2008.09.28
		updateAnalytics_controls('event=zoom&type=small');
		break;
	  case 'large':
	  	document.getElementById('small').style.fontWeight = 100;
		document.getElementById(cId).style.fontWeight = 700;
		sizeSMarked = 100;
		sizeLMarked = 700;
		sizelevel = cId;
		maxItemsOnPage = MAXITEMSONPAGE_LARGE;
		thumbPixelSize = THUMB_PX_LARGE;
		titlePixelWidth = TITLE_PX_LARGE;
		
		// LM - 2008.09.28
		updateAnalytics_controls('event=zoom&type=large');
		break;
	 
	 case '0':
	  	document.getElementById('100').style.fontWeight = 100;
		document.getElementById(cId).style.fontWeight = 700;
		zoom100Marked = 100;
		zoom50Marked = 700;
		zoomlevel = cId;
		
		// LM - 2008.09.28
		updateAnalytics_controls('event=zoom&type=viewall');
		break;
	 
	 case '100':
	  	document.getElementById('0').style.fontWeight = 100;
		document.getElementById(cId).style.fontWeight = 700;
		zoom50Marked = 100;
		zoom100Marked = 700;
		zoomlevel = 75;
		
		// LM - 2008.09.28
		updateAnalytics_controls('event=zoom&type=view75');
		break;
	 
	 default:
		return false;
	}

	updateResultItems(false);

}
/*
	Init different html items in order to make the right features display
*/
function updateResultItems(doAnalytics){
	var failureNotice = document.getElementById('sysMsg'); 
	var resultItems = document.getElementById('searchResults'); 
	var resultBrowser = document.getElementById('searchPageBrowser'); 
	
	if(resultItems){ resultItems.innerHTML = wrapResultItems(); }
	if(resultBrowser){ resultBrowser.innerHTML = wrapResultBrowser(doAnalytics); }
	if(failureNotice){ failureNotice.innerHTML = ''; }
}
/*
	Display a waiting gif to show user that data is pending
*/
function showResultDelayGif() {
	var searchHelp = document.getElementById('searchHelp');
	document.getElementById('searchResults').innerHTML = '<img src="fileadmin/templates/images/kvadrat_wait02-1.gif" />';  
}

/*
	Get a new result when clicing a new product
	Get the selection from the state array in the iframe of second column
*/
function updateResult(){						
	 var state = new Array();
	 var searchHelp = document.getElementById('searchHelp');
	 var searchHeader = document.getElementById('searchHeader');
	 var searchResults = document.getElementById('searchResults');
	 
	 if(searchHelp) { searchHelp.style.display = 'none'; }
	 if(searchResults) {
		delayInfo = '<div id="delayGif"><img src="fileadmin/templates/images/kvadrat_wait03-1.gif" />';
		delayInfo +=	'<div class="clearer"></div>';
		delayInfo += '<div id="delayMsg">' + xLANG['waitMsg'] + '</div>';
		delayInfo += '</div>';

	   searchResults.innerHTML = delayInfo;
	 }					 
	 state['SELECTED'] = document.getElementById('tckvadratdataScrollFrame').contentWindow.state;
	 state['EVENT'] = 'list';
	 xajax_jsCall(state);
}

/*
	Wrap possible downloadable files in a div each
	
	Downloads are now grouped by Filename - LM 2007.04.25
*/
function wrapDownloads(dataArray, erezArray, videoArray, product_uid ){
	var out = '';
//	return str;
		//erezSource = 'http://erez.1px.com/erez4/erez?src=' + erezArray[k]['values'] + '&tmp=main&autocrop=1';


	// Group file descriptions based on filename - LM 2007.04.30
	var wrap = '';
	
	if(typeof(dataArray) == 'object') {
		var fname = '';
		for(i=0;i<dataArray.length;i++){
		
			// var lnk = 'onmouseover="this.className=\'file-hover\'" onmouseout="this.className=\'file\'" onclick="window.location=\'http://erez.1px.com/erez4/erez?cmd=get&src=' + encodeURIComponent(dataArray[i]['url']) + '\';"';
			var lnk = 'http://erez.1px.com/erez4/erez?cmd=get&src=' + encodeURIComponent(dataArray[i]['url']);
			if (fname != dataArray[i]['filename'] || dataArray[i]['filename']=='')
			{
				fname = dataArray[i]['filename'];
				// if (i>0) wrap += '</div></div><br />'; // group close tag;
				if (i>0) wrap += '</div></div>'; // group close tag;
				wrap += '<div class="item"><div class="file">' + (fname!='' ?fname + ':<br />' : ''); // group open tag;
			}
			else if (i>0 && i<dataArray.length)
			{
				wrap += ', ';  // comma if more items;
			}
			
			// wrap += '<br /><span style="font-weight:normal;" '+lnk+'>' + dataArray[i]['description'] + '</span>';  // item tag;
			onclk = 'updateAnalytics_product(\'event=download&type='+fname.toLowerCase()+'&file='+dataArray[i]['description']+'\');';
			wrap += '<a href="'+lnk+'" onclick="'+onclk+'" target="_blank" class="file">' + dataArray[i]['description'] + '</a>';  // item tag;
			//if (i!=dataArray.length-1) wrap += ', ';  // comma if more items;
			if (i==dataArray.length-1) wrap += '</div></div>'; // final group close tag;
		}
	}


	// Download Erez image files - LM 2007.04.30
	
	if (erezArray.length>0)
	{
		out += '<div class="item">';
		
		for(var k=0;k<erezArray.length;k++){
			out += '<div class="file">' + erezArray[k]['label']+ ' images:<br />';

//			onclk = 'updateAnalytics_product(\'event=download&type='+(erezArray[k]['label']).toLowerCase()+'&file=Original\');';
//			out += '<a href="http://erez.1px.com/erez4/erez?cmd=get&src='+erezArray[k]['values']+'" onclick="'+onclk+'" class="file" target="_blank">Original</a>';
			
			onclk = 'updateAnalytics_product(\'event=download&type='+(erezArray[k]['label']).toLowerCase()+'&file=Original\');';
			out += '<a href="http://erez.1px.com/erez4/erez?cmd=get&src='+erezArray[k]['values']+'" onclick="'+onclk+'" class="file" target="_blank">Original</a>, ';

			onclk = 'updateAnalytics_product(\'event=download&type='+(erezArray[k]['label']).toLowerCase()+'&file=Original\');';
			out += '<a href="http://erez.1px.com/erez4/erez?src='+erezArray[k]['values']+'&tmp=kvadrat-low" onclick="'+onclk+'" class="file" target="_blank">Low resolution</a>';
/* EREZ 300 DPI DOWNLOAD DISABLED - 2010-11-22			onclk = 'updateAnalytics_product(\'event=download&type='+(erezArray[k]['label']).toLowerCase()+'&file=Original\');';
			out += '<a href="http://erez.1px.com/erez4/erez?cmd=download&src='+erezArray[k]['values']+'&tmp=kvadrat-300-dpi" onclick="'+onclk+'" class="file" target="_blank">300 dpi</a>';
*/
			out += '</div>';
		}
		
		// Link to generated zip file with color variants..
		if (product_uid) out += '<div class="file"><a href="/1px/farvestillinger/kvadrat-'+product_uid+'.zip" class="file">Colours (zip file)</a></div>';
		
		out += '</div>';
	}
	
	if(wrap.length > 0 || out.length > 0){
		out = '<div class="label">' + xLANG['downloads'] + '</div>' + out + wrap;
	}
	
	if (true && videoArray && videoArray.length>0)
	{
		out += '<br /><br /><div class="file">Videos<br />';
		out += '<a href="#" onclick="swfVideo(); document.getElementById(\'videoplayer_box\').style.display=\'block\'; return false;" class="file" target="_blank">'+videoArray[0]['title']+'</a>';
//				out += '<a xhref="#" xonclick="swfVideo(); return false;" class="file" target="_blank" href="/fileadmin/user_upload/images/Collection/maharam_wallcovering.flv">'+videoArray[0]['title']+'</a>';
		out += '</div><div id="videoplayer_box"><div id="videoplayer"></div><a class="videoplayer_btn" href="#" onclick="document.getElementById(\'videoplayer_box\').style.display=\'none\'; return false;">&laquo; close</a></div>';
	}
	
	return out;
}

function swfVideo()
{
	var player = new SWFObject("/fileadmin/user_upload/flvplayer/flvplayer.swf", "video_player", "525", "385", "7", "#FFFFFF");
	player.addParam("allowfullscreen", "true");
	player.addVariable("file", "/fileadmin/user_upload/images/Collection/maharam_wallcovering.flv");
	player.addVariable("height","400");
	player.addVariable("width","525");
	player.addVariable("displayheight","385");
	player.addVariable("showdigits","false");
	player.write("videoplayer");
}


/*
	Make a html element as child of another (existing element)
	Try to clear the element first so double appeareance is prevented
*/
function createElem(idName, childTo, eType){
    var d = document;
	var eObj = new Object();
	//Try to clear it first
	if(d.getElementById(idName)){
		clearElement(d.getElementById(idName), childTo);
	} 
	eObj = d.getElementById(childTo).appendChild(d.createElement(eType));
	eObj.id = idName;  
	
	return eObj;
}
/*
	Empty/remove an element before a new one is created
*/
function clearElement(delObj, parentTo){
	var d = document;
	if(parentTo && delObj ){
		d.getElementById(parentTo).removeChild(delObj);
		return true;
	}
	return false;
}

/*
	Wrap the product data in a row containing label and data
	Do empty label td's when data spans more than one line
*/
function wrapProductDetails(row) {
	/*
	LM 2007.04.25
	In general detail values of 0 will not be shown, but there are two exceptions!
	1. Shrinking and Composition are still shown, even though they are 0.
	2. Materials with 0% will be shown, but without the 0% value.
	*/
	
	if(tbodyObj && (row['values'][0]+'').substr(0, 1)!='0' || row['id']=='shrinking' || row['id']=='composition') {
		for(j=0;j<row['values'].length;j++){
			rowObj = tbodyObj.appendChild(d.createElement('tr'));
			if(row['label'].length > 0){
				labelObj = rowObj.appendChild(d.createElement('td'));
				labelObj.className = 'rowLabel';
				if(j == 0){
					labelObj.innerHTML = row['label'];
				}
			}
			colObj = rowObj.appendChild(d.createElement('td'));	
			colObj.className = 'rowData';
			
			var v = row['values'][j];
			if (row['id'] == 'composition') v = v.replace(/^0%\s/, '');
			colObj.innerHTML = v;
		}
	}
	return true;
}

/*
	Display the product data
*/
function showData(dataArray, tableClass){
	tableObj = d.getElementById('productInfo').appendChild(d.createElement('table'));
	tableObj.className = tableClass;
	tableObj.cellPadding = '0';
	tableObj.cellSpacing = '0';
	// tableObj.setAttribute("border", 2);
	tbodyObj = tableObj.appendChild(d.createElement('tbody'));
	
	for(i=0;i<dataArray.length;i++){
		wrapProductDetails(dataArray[i]);
	}
	return tableObj;
}

/*
	Show wash symbols and other kind of symbols
*/
function showSymbols(symbolsArray, tableClass){
	var d = document;
	tableObj = d.getElementById('productInfo').appendChild(d.createElement('table'));
	tableObj.className = tableClass;
	tableObj.cellPadding = '0';
	tableObj.cellSpacing = '0';
	tbodyObj = tableObj.appendChild(d.createElement('tbody'));
	trObj = tbodyObj.appendChild(d.createElement('tr'));

	for(i=0;i<symbolsArray.length;i++){
		tdObj = trObj.appendChild(d.createElement('td'));
		img = d.createElement('img');
		tdObj.appendChild(img);
		tdObj.className = 'symbolData';
		var q = escape(symbolsArray[i]);
		q = q.replace(/\+/ig, '%2B');
		//img.src = '/fileadmin/user_upload/images/symbols/' + symbolsArray[i]['erez_id'];
		img.src = '/1px/symbols/?q=' + q; //['erez_id'];
	}
	return tableObj;
}

/* 
	Update the productViewer with flash or image 
	Set the global erez[id] to keep change of imagetype view
*/
var erez = new Array();
erez['img'] = new Image();
erez['marked'] = 'erezButton-0';
erez['default'] = 0;
function changeImage(erezSource, erezID, buttonId){
	d = document;
	cImg = d.getElementById('productViewer');
	if(erezSource != undefined && erezID != undefined){
		erez['img'].src = erezSource;
		erez['id'] = erezID; 
	}
	if(buttonId != undefined){
		d.getElementById(erez['marked']).className = 'erezButton';
		deactivateButton();
		erez['marked'] = buttonId;
	}
	
	if(cImg) {
		if(pDOpen){
			cImg.style.backgroundImage = 'url(' + erezSource + ')'; //http://erez.1px.com/erez4/erez?src=' + erez + '&tmp=main&zoomlevel=0&autocrop=1)';
		} else {
			updateViewer('zoomView');
		}
		return true;
	}
	return false;
}

/* Preload the different images */
pImg = new Array();
function preLoadImage(){
 var d = document;
 var imgs = z['erezs'];
 if(d.images){
	for(i=0;i<z['erezs'].length;i++){
		pImg.push(new Image());
		pImg[pImg.length-1].src = 'http://erez.1px.com/erez4/erez?src=' + z['erezs'][i]['values'] + '&tmp=main&zoomlevel=0&autocrop=1';
	}
 return true;
 }
 return false;
}
/*
function addEvent( obj, type, fn ) {
   if ( obj.attachEvent ) {
     obj['e'+type+fn] = fn;
     obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
     obj.attachEvent( 'on'+type, obj[type+fn] );
   } else
     obj.addEventListener( type, fn, false );
}
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
     obj.detachEvent( 'on'+type, obj[type+fn] );
     obj[type+fn] = null;
  } else
     obj.removeEventListener( type, fn, false );
}
*/
/*
	Show different color when resultitem is selected
*/

function deactivateButton(){
	active = document.getElementById(erez['marked']);
	if(active) {
		active.style.background = '#e8e4e1';
		active.style.border = '1px solid #e8e4e1';
	}
	return;
}
function activateButton(item, itemEvent){
	if(!itemEvent) {
		if(item.id != erez['marked']) {
			item.style.background = '#e8e4e1';
			item.style.border = '1px solid #e8e4e1';
		}
		return;
	}

		item.style.background = '#fff';
    	item.style.border = '1px solid #333';
	
	return true;
	
}
/* 
	Show buttons to change the image into different photos of the same product
*/
function showButtons(erezObj) {
	var erezLabel = '';
	var erezSource = '';
	var erezArray = z['erezs'];
	var d = document;
	var out; out = '';
	for(k=0;k<erezArray.length;k++){
		erezLabel = erezArray[k]['label'];
		erezSource = 'http://erez.1px.com/erez4/erez?src=' + erezArray[k]['values'] + '&tmp=main&autocrop=1';
		erezID = erezArray[k]['values'];
		cssClass = 'erezButton';
		cssClassOver = '-over';
		
		if(erezArray[k]['default']){
			// alert (erez['marked']);
			// erezSource = 'http://erez.1px.com/erez4/erez?src=' + erezArray[k]['values'] + '&tmp=main&1,0.3,0.3,0.7,0.7,0&autocrop=1'; 
			erezSource = 'http://erez.1px.com/erez4/erez?src=' + erezArray[k]['values'] + '&tmp=main&InitialView=1,1,0.35,0.35,0.65,0.65,0&autocrop=1'; 
			cssClass = 'erezButton-on'; 
			cssClassOver = '';
			erez['marked'] = 'erezButton-'+k;
			erez['default'] = 1;
		}
		out += '<div id="erezButton-' + k + '" class="' + cssClass + '" onmouseover="return activateButton(this, 1);" onmouseout="return activateButton(this, 0);this.className = this.className;" onclick="activateButton(this, 1);updateAnalytics_product(\'event=picture&type='+erezLabel.toLowerCase()+'\'); changeImage(\'' + erezSource + '\', \''+erezID+'\', this.id);">' + erezLabel + '</div>';
	}
	erezObj.innerHTML = out;   
	return true;
}

/* 
	Receiver function
	Gets called from server and call wrapper functions
*/
function initSingleData() {
	var d = document;
	var countHeight = 0;

	header_fade = createElem('pD-header-fade', 'productHeader', 'div');
	header_fade.innerHTML = '';

	header = createElem('pD-header', 'productHeader', 'div');
	header.innerHTML = '<a href="#" onclick="return false;" title="' + z['name'] + (z['outgoing']==1?' *':'') + ' | ' + z['color'].slice(2) + '">' + z['name'] + ' | ' + z['color'].slice(2) + '</a>';

	if(z['erezs'].length > 0){
		erezBut = createElem('pD-erezButtons', 'productHeader', 'div');
		showButtons(erezBut);
		preLoadImage();
	}
	
	if(d.getElementById('productInfo')){ d.getElementById('productInfo').innerHTML = ''}

	if(z['list'].length > 0) {
		dataObj = showData(z['list'], 'list');
		countHeight = countHeight + dataObj.clientHeight;
	}

	if(z['comments'].length > 0){
	    dataObj = showData(z['comments'], 'comments');
	    countHeight = countHeight + dataObj.clientHeight;
	}

	// Check for outgoing products
	if (z['outgoing']==1)
	{
		tableObj = d.getElementById('productInfo').appendChild(d.createElement('table'));
		tableObj.className = 'comments';
		tableObj.cellPadding = '0';
		tableObj.cellSpacing = '0';
		tbodyObj = tableObj.appendChild(d.createElement('tbody'));
	
		rowObj = tbodyObj.appendChild(d.createElement('tr'));
		labelObj = rowObj.appendChild(d.createElement('td'));
		labelObj.className = 'rowLabel';
		labelObj.innerHTML = ' * Discontinued designs';
	
		countHeight = countHeight + tableObj.clientHeight;
	}
	
	if(z['symbols'].length > 0){
		symbolsObj = showSymbols(z['symbols'], 'symbols');
		countHeight = countHeight + symbolsObj.clientHeight;
	}

	dObj = createElem('productDownloads', 'productDetails', 'div');
	dObj.innerHTML = wrapDownloads(z['downloads'], z['erezs'], z['videos'], z['uid']);
	
	// Set the details height to include product info and downloads - LM 2007.05.01
	var dHeight = Math.max(d.getElementById('productInfo').clientHeight, d.getElementById('productDownloads').clientHeight);
	setDetailsLayerHeight(dHeight);
}

/* Get data of a single product item */
function getProductData(){
	var state = new Array();
	state['product_uid'] = xOne['product_uid'];
	state['EVENT'] = 'single';
	xajax_jsCall(state);  
}
/* Find a id of a given item array */
function getItemId(item) {
	p = item.split("_", 2);
	return p[1];
}
/*
	Create a single array of the current selected product
*/
function createSingleArray(arr,uid){
	uid = getItemId(uid);
	for (i=0;i<arr.length;i++){
		if(arr[i]['uid'] == uid){
		  return arr[i];
		}
	}
	return false;
}
/* Test is a var is an object */
function isObject(a){
     return (typeof a == 'object' && !!a);
}

/*
	Render different elements for displaying of product details
*/
function renderProductDetails(pUid, pEvent, show) {
	pDetails = document.getElementById('productDetails');
	pLightbox = document.getElementById('lightbox');
	pSaveform = document.getElementById('saveForm');
	// erezSource = 'http://erez.1px.com/erez4/erez?src=' + xOne['erez_id'] + '&tmp=main&initialview=1,1,0.3,0.3,0.7,0.7,0';
	erezSource = 'http://erez.1px.com/erez4/erez?src=' + xOne['erez_id'] + '&tmp=main';
	erezID = xOne['erez_id']; //erezArray[k]['values'];
	switch(show) {
		case 'zoomView':
			serverRequest('single', xOne);
    		resetProductDetails();
			pDetails.style.visibility = 'visible';
			pLightbox.style.display = 'block';
			displayLightbox();
			initScrollLayers();
			changeImage(erezSource, erezID);
    		break;
    	
    	case 'imageView':
			changeImage(erezSource, erezID);
			pDetails.style.visibility = 'visible';
			pLightbox.style.display = 'block';
			displayLightbox();
			initScrollLayers();
    		break;
    	
		default:
			if(pDetails){ pDetails.style.visibility = 'hidden'; }
			if(pLightbox){ pLightbox.style.display = 'none'; }
			if(pSaveform){ pSaveform.style.display = 'none'; }
			updateViewer('none');
    		break;
    	
	}
}
/*
	When viewer is closed show an image
	When the viewer is finished closing a flash will be displayed
*/
/*
function closeViewer() {
  updateViewer('imageView');
}
*/
/*
	Declare flash settings
	Create the flash object (uses SWFObject lib)
*/	
function makeFlash(erez_id,refWidth){
	var flashSettings = '';
	var d = document;
	var viewer = d.getElementById('productViewer'); 
	var flashParams = new Array();
		flashParams['file'] = 'http://erez.1px.com/erez4/fsi4/fsi.swf?FPXBase=http://erez.1px.com/erez4%2Ferez%3Fsrc%3D';
		flashParams['id'] = zVIEWER['name'];
		flashParams['width'] = zVIEWER['width'];
		flashParams['height'] = zVIEWER['height'];
		flashParams['version'] = '7';
		flashParams['background'] = '#F6F4F4';

	var flashVars = new Array();
		flashVars['FPXSrc'] = erez_id;
		flashVars['ViewerWidth'] = zVIEWER['width'];
		flashVars['ViewerHeight'] = zVIEWER['height'];
		flashVars['ZoomToViewport'] = false;
		flashVars['ImageReferenceWidth'] = refWidth; //xOne['referenceWidth'];  
		flashVars['ImageReferencePrefix'] = 'Width: ';
		flashVars['ImageReferenceSuffix'] = ' cm';
		flashVars['InitialviewPersistent'] = false;
		flashVars['InitialView'] = '1,1,0.35,0.35,0.65,0.65,0';
		flashVars['InitialMouseMode'] = 1;
		flashVars['SkinCloseURL'] = '';
		flashVars['mousemodes'] = '0';
		
		flashVars['Effects'] = '%26quality%3d85%26sharpen%3d20';

		if(erez['marked'] != 'erezButton-0'){
			flashVars['ImageReferenceWidth'] = ''; //xOne['referenceWidth'];
			flashVars['ZoomToViewport'] = true;
		}

	for(key in flashVars){
		// Fixed a conflict with prototype.js and "for x in array" - LM 2009.09.18
		if ( typeof(flashVars[key])!='function' ) flashSettings += '&amp;' + key + '=' + flashVars[key];
	}

	var so = new SWFObject(
							flashParams['file'] + flashSettings,
							flashParams['id'],
							flashParams['width'],
							flashParams['height'],
							flashParams['version'],
							flashParams['background']
							);
	if(viewer){
		flashMsg = '<div class="flashMsg">' + xLANG['flashMsg'];
		flashMsg += '<br/>';
		flashMsg += '<a href="http://www.adobe.com/go/getflashplayer" target="_blank">';
		flashMsg += '<img src="fileadmin/templates/images/get_flash_player.gif" alt="" border="0" />';
		flashMsg += '</a>';
		flashMsg += '</div>';
		viewer.innerHTML = flashMsg;
		so.write(viewer);
		
		return true;
	}
	
	return false
}

/*
	Update the viewer depending on state of product details
	Product details opened: Show image
	Product details closed: Show flash 
*/
function updateViewer(viewType){
	var viewer;
	var	viewerSrc = '';
	
	viewer = document.getElementById('productViewer');
	pDetails = document.getElementById('productDetails');
	pLightbox = document.getElementById('lightbox');
	
	if(viewer && x){
		
		switch(viewType) {
		  case 'zoomView':
			viewer.style.backgroundImage = 'none';
			flashObj = makeFlash(erez['id'], xOne['referenceWidth']);
			break;		  
				 	
		  case 'imageView':
			viewer.innerHTML = '';
			viewer.style.backgroundImage = 'url(' + erez['img'].src + ')'; 
			break;
		
		  default:
			pMarked = '';
			pMarkedSettings['name'] = 'NoName'; pMarkedSettings['color'] = 'NoColor';
			viewer.innerHTML = themeDoor;
		}
		return true;
	} 
	return false;
}

/*
	Reset display elements of product details
*/
var pDOpen = false;
var pCount = pANIMATION['minDetailsH'];
var vCount = pANIMATION['maxViewerH'];

function resetProductDetails() {
	pDOpen = false;
	pCount = pANIMATION['minDetailsH'];
	vCount = pANIMATION['maxViewerH'];
	pDetailsArr = document.getElementById('pD-arrow');
	pDetails = document.getElementById('productDetails');
	pViewer = document.getElementById('productViewer');
    pMoretxt = document.getElementById('moreinfo');
	if(zoomOnClose){
		updateViewer('zoomView'); 
	}

	if(pDetailsArr && pMoretxt){ 
	  pDetailsArr.src = xPATHS['RESOURCES'] + 'scrollbar/src/images/arrow_up.gif';
	  pMoretxt.innerHTML = xLANG['moreinfo'];
	 }
	 
	if(pDetails){ pDetails.style.height = pCount+"px"; }
	if(pViewer){ pViewer.style.height = vCount+"px"; }  
 
}

/*
	Test whether to show product details
*/
var openThis = 'productDetails';
var hasStyles = new Array();
var evt = null;
var zoomOnClose = true;
function displayProductInfo(arrEvent) {
	if (arrEvent && pDOpen){evt = 'close';zoomOnClose = true;}
	else
	{
		evt = 'open';
		updateAnalytics_product('event=moreinfo');
	}
	
	updateViewer('imageView');
	openDetails();
}
/*
	Animation of product details
	Gliding up and down
*/
function openDetails(){
	var d = document;
	var moreInfo = d.getElementById('moreinfo');
	var details = d.getElementById('productDetails');
	var viewer = d.getElementById('productViewer');
	var arrow = d.getElementById('')
	
	switch(evt){
		case 'open':
			if(pCount < pANIMATION['maxDetailsH'] && vCount > pANIMATION['minViewerH']){
				pCount = pCount + pANIMATION['heightInterval'];
				vCount = vCount - pANIMATION['heightInterval'];
				details.style.height = pCount+"px";
				viewer.style.height = vCount+"px";
				window.setTimeout('openDetails()', pANIMATION['speed']);
			} else {
				pDOpen = true;
				moreInfo.innerHTML = xLANG['lessinfo'];
				pDetailsArr.src = xPATHS['RESOURCES'] + 'scrollbar/src/images/arrow_down.gif';
				return true;
			}
		break;
		
		case 'close': 
		if(pCount > pANIMATION['minDetailsH'] && vCount < pANIMATION['maxViewerH']){
			pCount = pCount - pANIMATION['heightInterval'];
			vCount = vCount + pANIMATION['heightInterval'];
			details.style.height = pCount+"px";
			viewer.style.height = vCount+"px";
			window.setTimeout('openDetails()', pANIMATION['speed']);
		} else {
			pDOpen = false;
			resetProductDetails();
			return true;
		} 		
		break;
	}
}
/*
	Check whether the product is allready added to lightbox 
*/
function checkLightbox() {
		
	if(isObject(lightbox)){
		for(i=0;i<lightbox.length;i++){
			if(lightbox[i]['uid'] == xOne['uid']){
			 	return false; 
			}
		}
		return true;
	}
return true;
}

/*
	Handle deletion of single item from lightbox
*/
function removeFromLightbox(indexNum){
	nam = lightbox[indexNum]['productName'];
	col = lightbox[indexNum]['oldcolor'];
	col = Number(col.replace(/#/ig, ''));
	
	if(lightbox.splice(indexNum, 1)){
		updateAnalytics_product('event=lightbox&action=remove&textile='+nam+"-"+col);
		
		displayLightbox();
		
		if(lightbox.length > 0){
			lightboxSel('LIGHTBOX_' + lightbox[lightbox.length-1]['uid'], 'on');
		} 
		
		return true;
	}
	return false;
}
/*
	Handle adding product to lightbox
*/
function addToLightBox(){
	ok = true;
	
	if(!pMarked) {
	  alert(xLANG['selectBefore']);
	  ok = false;
	}
	
	if(lightbox.length == LB['LIMIT']) {
	  
	  limitMsg = xLANG['limitMsg'].replace("%n%", LB['LIMIT']);
	  alert(limitMsg);
	  ok = false;
	}
	
	if(lightbox.length != 0 && !checkLightbox() && ok) {
	  ok = false; 
	  alert(xLANG['allreadyAddedMsg']);
	}

	 
	if(ok){
		updateAnalytics_product('event=lightbox&action=add');
		
	 	lightbox.push(xOne);
		displayLightbox();
		initScrollLayers();
		return true;
	}
	return false;
}
/*
	Find whether the lightbox item is selected
*/
function findSelected(uid){
	if(isObject(xOne)){
		if(xOne['uid'] == uid){
	    	return true;
		}
	}
	return false;
}
/*
	Crop the name to display in the lightbox as there are not much space
*/
function cropName(cropName){
	newName = '';
	newName += cropName[0].substr(0,6);
	if(!isObject(cropName[1])){
		cropName.push('');
	}
	if(cropName[1].length > 6) {
		newName +=  " " + cropName[1].substr(0,4) + '...';
	} else {
		newName +=  " " + cropName[1];
	}
	
	return newName;
}

/*
	Link to order the lightbox
*/
function orderLightbox()
{
	var out = '';
	//document.location = '/textiles/collection/?tx_tckvadratdata_pi6[lightbox]='.;
}

/*
	Display the lightbox
*/
function displayLightbox() {
	var out = '';
	var add = '<table cellspacing="0" cellpadding="0" border="0"><tr><td><div id="addCurrent" class="lbElement" style="background-image:url(fileadmin/templates/images/addToLightbox.gif);" onmouseover="this.className = \'lbElement-over\'" onmouseout="this.className = \'lbElement\'" onclick="return addToLightBox();"><div class="lbText-add">' + xLANG['addCurrent'] + '</div></div></td>';
	var lbItems = document.getElementById('lb');
	var lbCounter = document.getElementById('lbCounter');		

	for(i=lightbox.length-1;i+1>0;i--){
		var cssClass = 'lbElement';	
		var remove = 'hidden';
		var cursor = '';
		var onclick = 'onclick="lightboxSel(this.id, \'on\');"';
		var newName = '';
		
		if(findSelected(lightbox[i]['uid'])) { 
		  cssClass = 'lbElement-over';
		}
		newName = cropName(lightbox[i]['productName'].split(" "));		
		
		pImageSrc = 'http://erez.1px.com/erez4/erez?src=' + lightbox[i]['erez_id'] + '&tmp=thumb_small&zoomlevel=0&autocrop=1';
		var id = lightbox[i]['uid'];
		out += '<td><div id="LIGHTBOX_' +  id + '" class="' + cssClass + '" style="background-image:url(' + pImageSrc + ');" onmouseover="this.className = \'lbElement-over\'; return showRemoveIcon(' + id + ',1);" onmouseout="this.className = \'' + cssClass + '\';return showRemoveIcon('+id+',0)" ' + onclick +'><div id="REMOVE_'+ id +'" class="removeIcon" onclick="return removeFromLightbox(' + i + ');"><img id="deleteItem" src="' + xPATHS['IMAGES'] + 'removeFromLightbox.gif" width="8" height="8" /></div><div class="lbText">' + newName + '</div></div></td>';
	}

	
	if(lbItems){ 
		lbItems.innerHTML = add + out + '</tr></table>';
		if(lbCounter){ lbCounter.innerHTML = '( ' + lightbox.length +' )'; }
		  	
		return true;
	}
	
	return false;
}
/*
	Display the icon to remove a single product from the lightbox
*/
function showRemoveIcon(id, onOff){
	removeIcon = document.getElementById('REMOVE_'+id);
	
	
	if(removeIcon) {
		removeIcon.style.visibility = 'visible';
		if(!onOff){
			removeIcon.style.visibility = 'hidden';
		} else {
			removeIcon.style.visibility = 'visible';
		}
    	return true;
	}
	
	return false;
}

/*
	Handle a selection from the lightbox
*/
lMarked = '';
function lightboxSel(item, eventType){

	var resultItem = document.getElementById(item);
	var currentClass = document.getElementById(item).className;
	
	xOne = createSingleArray(lightbox,item);
	if(resultItem) {
		resultItem.className = 'lbElement-over';
		renderProductDetails(item, 'on', 'zoomView');
		lMarked = item;
	}
}

/*
	Empty the selected items from the lightbox
*/
function clearLightbox(){
  lightbox = new Array();
  lbName = document.getElementById('lbName');
  
  if(lbName){lbName.innerHTML = '';}
  displayLightbox();
}

/*
	Convert data from input form to an array
*/
function convertXMLToArray(formValues){
    returnArray = new Array();
    working = formValues.substring(13, formValues.length-15);
    tempArray = working.split('&');
    for (i=0;i<tempArray.length;i++)
    {
        tempArray2 = tempArray[i].split('=');
        returnArray[tempArray2[0]] = tempArray2[1];
    }
    return returnArray;
}

/*
	Prepare input from login form
	Prepare the server request
*/
function handleLogin(theForm, validate)  {

  if(eval(validate)){
	formData = new Array();  	
	formData = convertXMLToArray(xajax.getFormValues(theForm.id));
	
	if(formData['projectName'] != undefined) {
		formData['lightbox'] = new Array()
		formData['lightbox'][formData['projectName']] = lightbox;
	}
	
	serverRequest('processForm', formData);
  }
  return false;
}

/*
	Focus the first element in the form
*/
function focusFormElement(){
	if(document.forms['ajaxLoginForm']){
    	document.forms['ajaxLoginForm'].elements[0].focus();
    	return true;
	}
	return false;
}

/*
	Receiver function
	Receives data from server and wraps the response
*/
function initOrderResponse(localResponse){
	initSaveResponse(localResponse, true);
}

function initSaveResponse(localResponse, do_order){
	var out = '';
	var	imageviewer = document.getElementById('productViewer');
	if(localResponse != undefined){
	  response = localResponse;
	}
	
	var need_login = (response[0].indexOf('logintype')>=0);

	if(imageviewer) { 	
		initUserArea();
		cObj = createElem('userArea', 'productViewer', 'div');
	
		hObj = createElem('header', 'userArea', 'div');  
		if (do_order)
		{
			hObj.innerHTML = need_login ? xLANG['loginorderheader'] : xLANG['orderheader'];
		}
		else
		{
			hObj.innerHTML = need_login ? xLANG['loginheader'] : xLANG['savelightbox'];
		}
		//savelightbox orderheader loginorderheader
		for(key in response){
			// Fixed a conflict with prototype.js and "for x in array" - LM 2009.09.18
			if ( typeof(response[key])!='function' ) out += '<div class="responseItem">' + response[key] + '</div>';
		}
		fObj = createElem('responseItems', 'userArea', 'div');
		fObj.innerHTML = out;
	
		focusFormElement();
	}
}

/*
	Initialize the area for displaying user information
	Put special background image here
*/
function initUserArea(){
	var div = document.getElementById('productViewer');
	if(div){ 
		evt = 'close';
		div.innerHTML = '';
		div.style.background = 'none';
		zoomOnClose = false;
		openDetails();
		return true;
	}
	return false;

}


function displayLoginInfo() {
	
	var loginMsg; loginMsg = document.getElementById('loginMsg');
	var loginLink; loginLink = document.getElementById('mainLoginLink');

	if(loginMsg && loginLink) {
		loginMsg.innerHTML = xLANG['loggedinas'] + '<div class="userName">' + xUSER['name'] + '</div>';
		loginLink.firstChild.innerHTML = xLANG['logout'];
		return true;
	}
	return false;
}

/*
	Display saved lightbox projects
	Include date and delete button
*/
function displayProjects(){
	var div = document.getElementById('productViewer');
	var out = '';
	
 	
	if(div && isObject(projectList)){
		if(projectList.length == 0){
			sys = '<span class="projectEvent">' + xLANG['nosaved'] + '</span><br/>';
		}

		initUserArea();

		cObj = createElem('userArea', 'productViewer', 'div');
		hObj = createElem('header', 'userArea', 'div');  
		hObj.innerHTML = xLANG['projectsheader'];
		for(key in projectList){
			// Fixed a conflict with prototype.js and "for x in array" - LM 2009.09.18
			if ( typeof(projectList[key])!='function' )
			{
				keySplit = key.split('~');
				projectName = keySplit[0].charAt(0).toUpperCase() + keySplit[0].substring(1);
				out += '<span class="projectEvent" onmouseout="this.style.textDecoration = \'none\'" onmouseover="this.style.textDecoration = \'underline\'" onclick="serverRequest(\'singleProject\', \'' + key + '\');lightboxName(\'' + projectName + '\');">' + unescape(projectName) + ' (' + projectList[key].length + ')</span><span> - ' + projectList[key]['saveTime'] + '</span> | [<span class="projectEvent" onmouseout="this.style.textDecoration = \'none\'" onmouseover="this.style.textDecoration = \'underline\'" onclick="return deleteProject(\'' + key + '\');">' + xLANG['deleteProject'] + '</span>]<br/>';
				sys = '';
			}
		}
   			
		fObj = createElem('responseItems', 'userArea', 'div');
		fObj.innerHTML = out + sys;
	}
//	return true;
}

function deleteProject(pKey) {
  if(confirm(xLANG['delProjectConfirmMsg'])){
  	serverRequest('deleteProject', pKey);
  	return true;
  }
  return false;
}

/*
	Display the name of a saved lightbox
*/
var lBName = false;
function lightboxName(lightboxName){
	d = document;
	if(!lBName){
		lBName = true;
		lbObj = d.getElementById('lB-controls').appendChild(d.createElement('div'));
 		lbObj.id = 'lbName';
	}
	lbObj.innerHTML = (lightboxName != undefined) ? lightboxName : '' ;

}
/*
	Prepare a request for listing of saved projects
*/
function listProjectsRequest(){
	serverRequest('listProjects', null);
}

function loadOrderpage(key){
	document.location = "/tools/sample_order/?tx_tckvadratdata_pi6[lightbox]="+escape(key);
}

/*
	Prepare a save request
*/
function saveRequest(do_order){
	if(lightbox.length < 1) {
    	response = new Array(xLANG['noitems']);
    	initSaveResponse(response, false);
    	return false;
	}
	serverRequest('saveProject');
	return true;
}
/*
	Prepare a save request
*/
function orderRequest(do_order){
	if(lightbox.length < 1) {
    	response = new Array(xLANG['noitems']);
    	initSaveResponse(response, true);
    	return false;
	}
	serverRequest('orderProject');
	return true;
}
/*
	Main function
	Request server for data
*/
function serverRequest(handler, pUid){
	var request = new Array();
	if(pUid != null) {
	  request['special'] = pUid;
	}
	request['EVENT'] = handler;
	xajax_jsCall(request);
	request;
}


// over-ride the alert method only if this a newer browser.
// Older browser will see standard alerts

if(document.getElementById) {
/*	window.alert = function(txt) {
		createCustomAlert(txt);
	}*/
}


function createCustomAlert(txt) {
	// shortcut reference to the document object
	d = document;

	// if the modalContainer object already exists in the DOM, bail out.
	if(d.getElementById("modalContainer")) return;

	// create the modalContainer div as a child of the BODY element
	mObj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div"));
	mObj.id = "modalContainer";
	 // make sure its as tall as it needs to be to overlay all the content on the page
	mObj.style.height = document.documentElement.scrollHeight + "px";

	// create the DIV that will be the alert 
	alertObj = mObj.appendChild(d.createElement("div"));
	alertObj.id = "alertBox";
	// MSIE doesnt treat position:fixed correctly, so this compensates for positioning the alert
	if(d.all && !window.opera) alertObj.style.top = document.documentElement.scrollTop + "px";
	// center the alert box
	alertObj.style.left = (d.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px";

	// create an H1 element as the title bar
	h1 = alertObj.appendChild(d.createElement("h1"));
	h1.appendChild(d.createTextNode(xLANG['alertBoxTitle']));

	// create a paragraph element to contain the txt argument
	msg = alertObj.appendChild(d.createElement("p"));
	msg.appendChild(d.createTextNode(txt));

	// create an anchor element to use as the confirmation button.
	btn = alertObj.appendChild(d.createElement("a"));
	btn.id = "closeBtn";
	btn.appendChild(d.createTextNode(xLANG['alertBoxButton']));
	btn.href = "#";
	// set up the onclick event to remove the alert when the anchor is clicked
	btn.onclick = function() { removeCustomAlert();return false; }
	
}

// removes the custom alert from the DOM
function removeCustomAlert() {
	document.getElementsByTagName("body")[0].removeChild(document.getElementById("modalContainer"));
}

// DEBUG Print of js arrays
function print_r(array){
  var out = '';
  for (key in array){
  	out += "\n"+key+"=>" + array[key];
  }
  return out;
}


