var z7referencesTemp = {oldProjectsSort: 'date', oldCustomersSort: 'name'};

/**
 * Sort project reference list by new parameters.
 * 
 * @param string sorting
 * @param string contentElement
 * @return void
 */
function z7referencesProjectsSortStart(sorting, contentElement) {

	var sortArray = (new Array()).concat(z7referencesProjectsSort[sorting]); // copy by value
	var completeHTML = '';
	var desc = false;
	var cssClass = 'z7-reference-sortlink-asc';
	
	if(z7referencesTemp.oldProjectsSort == sorting && !z7referencesTemp.oldProjectsSortDESC) {
		desc = true;
		cssClass = 'z7-reference-sortlink-desc';
		sortArray.reverse();
	}
	
	for(i=0, n=sortArray.length; i<n; i++) {
		var blockHTML = z7referencesProjectsBlockHTML;
		var itemHTML = '';
		
		for(j=0, m=sortArray[i].projects.length; j<m; j++) {
			itemHTML = itemHTML+z7referencesProjects[sortArray[i].projects[j]];
		}

		blockHTML = blockHTML.split('###TITLE###').join(sortArray[i].title);
		blockHTML = blockHTML.split('###ITEMS###').join(itemHTML);
		completeHTML = completeHTML+blockHTML;
	}
	
	document.getElementById(contentElement).innerHTML = completeHTML;
	
	// restore old link
	document.getElementById('z7-reference-sortlink-'+z7referencesTemp.oldProjectsSort).className = 'z7-reference-sortlink';
	
	// remember current stuff
	document.getElementById('z7-reference-sortlink-'+sorting).className = cssClass;
	z7referencesTemp.oldProjectsSort = sorting;
	z7referencesTemp.oldProjectsSortDESC = desc;
	
	if(typeof(sIFRallReplaces) == 'function') {
		sIFRallReplaces();
	}
}


/**
 * Sort customer reference list by new parameters.
 * 
 * @param string sorting
 * @param string contentElement
 * @return void
 */
function z7referencesCustomersSortStart(sorting, contentElement) {
	
	var sortArray = (new Array()).concat(z7referencesCustomersSort[sorting]); // copy by value
	var completeHTML = '';
	var desc = false;
	var cssClass = 'z7-reference-sortlink-asc';
	
	if(z7referencesTemp.oldCustomersSort == sorting && !z7referencesTemp.oldCustomersSortDESC) {
		desc = true;
		cssClass = 'z7-reference-sortlink-desc';
		sortArray.reverse();
	}
	
	for(i=0, n=sortArray.length; i<n; i++) {
		var blockHTML = z7referencesCustomersBlockHTML;
		var itemHTML = '';
		
		for(j=0, m=sortArray[i].customers.length; j<m; j++) {
			itemHTML = itemHTML+z7referencesCustomers[sortArray[i].customers[j]];
		}

		blockHTML = blockHTML.split('###TITLE###').join(sortArray[i].title);
		blockHTML = blockHTML.split('###ITEMS###').join(itemHTML);
		completeHTML = completeHTML+blockHTML;
	}
	
	document.getElementById(contentElement).innerHTML = completeHTML;
	
	// restore old link
	document.getElementById('z7-reference-sortlink-'+z7referencesTemp.oldCustomersSort).className = 'z7-reference-sortlink';
	
	// remember current stuff
	document.getElementById('z7-reference-sortlink-'+sorting).className = cssClass;
	z7referencesTemp.oldCustomersSort = sorting;
	z7referencesTemp.oldCustomersSortDESC = desc;
	
	if(typeof(sIFRallReplaces) == 'function') {
		sIFRallReplaces();
	}
}


/**
 * Hide the current tool tip and show a new one.
 * 
 * @param string elementId
 * @return void
 */
function z7referencesShowToolTip(ref) {
	
	// hide old tooltip
	z7referencesHideToolTip();
	
	// find tooltip
	for(i=0, n=ref.childNodes.length; i<n; i++) {
		if(ref.childNodes[i].className == 'reference-tooltip') {
			z7referencesTemp.tooltip = ref.childNodes[i];
			break;
		}
	}
	
	// show
	z7referencesTemp.tooltip.style.display = 'block';
}


/**
 * Hide and forget current tool tip.
 * 
 * @return void
 */
function z7referencesHideToolTip() {
	if(z7referencesTemp.tooltip) {
		z7referencesTemp.tooltip.style.display = 'none';
	}
	z7referencesTemp.tooltip = false;
}
