/**
 * Manage the ModelGallery's Ajax requests and Page changes
 */
function ModelGallery(contextPath, imagePath, modelImage, modelLink, modelNameSpan, modelTelSpan, imageSize) {

// image path helpers
var urlPrefix = contextPath; 
var imageUrlPrefix = imagePath;
var modelImages;

// elements
var modelImageElement = modelImage;
var modelLinkElement = modelLink;
var modelNameSpanElement =  modelNameSpan;
var modelTelSpanElement =  modelTelSpan;

// keys
var nextKey = '';
var prevKey = '';
var crntKey = '';
var currentModelImage = 0;

var modelname = '';



this.next = function() {
	modelNameSpanElement.innerHTML = 'Model wird geladen...';
	Seam.Component.getInstance("productGallery").getModel(nextKey, this.getModelCallback);
}

this.prev = function() {
	modelNameSpanElement.innerHTML = 'Model wird geladen...';
	Seam.Component.getInstance("productGallery").getModel(prevKey, this.getModelCallback);
}

this.getModelCallback = function(result) {
	crntKey = result.crntKey;
	modelId = result.modelId;
	prevKey = result.prevKey;
	nextKey = result.nextKey;
	modelname = result.modelName;
	modelImages = result.modelImages;
	document.location.hash = result.crntKey;
	modelImageElement.src = imageUrlPrefix + '/' + result.imageUrl + imageSize;
	modelLinkElement.href = urlPrefix + '/modelcard/' + crntKey + '-' + modelId ;
	modelNameSpanElement.innerHTML = crntKey;
	modelTelSpanElement.innerHTML = result.telefonNumer;
	
	modelNameSpanElement.innerHTML = modelname + ' aus ' + result.town;
	modelTelSpanElement.innerHTML = result.phoneNumber;
}

this.prevImage = function() { 
	var newImageId = currentModelImage - 1
	if(newImageId < 0) {
		newImageId = modelImages.length - 1;
	}
	modelImageElement.src = imageUrlPrefix + '/' + modelImages[newImageId] + imageSize;
	currentModelImage = newImageId;
}

this.nextImage = function() { 
	var newImageId = currentModelImage + 1
	if(newImageId >= modelImages.length) {
	newImageId =0;
	}
	modelImageElement.src = imageUrlPrefix + '/' + modelImages[newImageId] + imageSize;
	currentModelImage = newImageId;
	}

// restore view from url
this.handleHashOnLoad = function() {
	var hash = document.location.hash;
	if(hash.length > 1) {
		Seam.Component.getInstance("productGallery").getModel(hash.substring(1),  this.getModelCallback);
	} else {
		Seam.Component.getInstance("productGallery").getModel("", this.getModelCallback);
	}
}
}
