net_lemats_gallery_Preview = Class.create();
net_lemats_gallery_Preview.AJAX_REQ_ID = 'preview';
net_lemats_gallery_Preview.prototype = {

    initialize : function(/*String*/ previewID, /*String*/ varName, /*Element*/ parent) {
    	this.albumID = previewID;
    	this.varName = varName;
    	this.parent = parent;
    	
    	this._currImageID = null;
    	this._currThumbID = null;    	
    	
    	this._imageMap  = new net_lemats_gallery_ImageMap();
    	this._imageList = new net_lemats_gallery_ImageList();
    	this._thumbList = new net_lemats_gallery_ImageList();
    	
    	this.init(varName);
    },
    
    init : function(varName) {
    	this.view = new net_lemats_gallery_PreviewView(this.parent, varName);
    	net_lemats_gallery_ajax.register(net_lemats_gallery_Preview.AJAX_REQ_ID, this);
    	net_lemats_gallery_ajax.send(this.albumID, 'previewStart', '');
    },

    next : function() {
    	net_lemats_gallery_ajax.send(this.albumID, 'previewNext', this.view.getCurrImage());
    },

    prev : function() {
    	net_lemats_gallery_ajax.send(this.albumID, 'previewPrev', this.view.getCurrImage());
    },
    
    openGallery : function(imageID) {
    	if (imageID == null)
    		GalleryIFrame.open(this.albumID);
    	else
    		GalleryIFrame.open(this.albumID, imageID);
    },
    
    ajaxUpdate : function(/*Element*/ response) {
		for (i = 0; i < response.childNodes.length; i++) {
			var child = response.childNodes[i];
			if (child.nodeName == 'img') {
				this._handleImg(child);
			}		
			else if (child.nodeName == 'error') {
				this._handleError(child);
			}
		}
    },    
    
    _handleImg : function(/*Element*/ node) {
    	var img = new net_lemats_gallery_Image();
    	img.id       = node.getAttribute('id');
    	img.url      = node.getAttribute('url');
    	img.thumbUrl = node.getAttribute('thumbUrl');
    	img.title    = node.getAttribute('title');
    	//img.title    = node.getAttribute('title').replace(/&amp;/, "&");
    	img.width    = node.getAttribute('width');
    	img.height   = node.getAttribute('height');
    	img.imageID  = node.getAttribute('imgid');
    	
    	this._imageMap.add(img);
    	this.view.showImage(img);
    },

    _handleError : function(/*Element*/ node) {
    	var code = node.getAttribute('code');
    	var msg = node.getAttribute('message');
    	if (code != 0) {
    		msg = "[" + code + "] " + msg;
    	}
    	alert(msg);
    }    

}
