(function() {
	
	var compatNode = function (node) {
		if (typeof node.addEventListener == 'undefined') node.addEventListener = function (eventType, callback, dummy) {
			node.attachEvent ('on' + eventType, function() {
				callback (compatEvent()); 
			});
		}
		return node;
	};
	
	var opacity = function (node, value) {
		node.style.opacity = value;
	}
    /*@cc_on 
	var opacity = function (node, value) {
		node.style.filter = 'alpha(opacity=' + (value * 100) + ')'; 
	}
    @*/
  	
	 		
	var compatEvent = function (event) {
		var e = event || window.event;
		e.target = e.target || e.srcElement;
		if (typeof e.preventDefault != 'function') {
			e.preventDefault = function() { this.returnValue = false; }
		}
		if (typeof e.stopPropagation != 'function') {
			e.stopPropagation = function() { this.cancelBubble = true; }
		}
		return e;
	};
	
	var transform = function (toImg) {
		mainImageEl.src = toImg;
		
		var transformSteps = 10;
		var transformDelta = 0.1;
		var transformValue = 1;
		var opacityMaker = function() {
			transformValue -= transformDelta;
			opacity (transformImageEl, transformValue);
			if (transformValue <= 0) {
				clearInterval (interval);
				transformImageEl.src = toImg;
				opacity (transformImageEl, 1);
			}
		}
		
		var interval = setInterval (opacityMaker, transformDelay);
		
	}
	
	var imageClick = function (index) {
		return function() {
			transform (imageMap[index].image);
			imageMap[selectedIndex].link.parentNode.className = '';
			imageMap[index].link.parentNode.className = 'selectedImage';
			selectedIndex = index;
			currentAutorotate = autorotateValue;
		}
	}
	
	var autorotateCheck = function() {
		if (currentAutorotate == 0) {
			imageClick ((selectedIndex + 1) % imageMap.length)();
		}
		currentAutorotate--;
	}
	
	var selectedIndex;
	var autorotateValue, currentAutorotate;
	var transformDelay;
	var imageMap = [];
	var mainImageEl, transformImageEl, smallImages;
	
	Vurtel = {
		setup : function (mainImage, transformImage, smallImagesContainer, autoRotate, transfDelay) {
			transformDelay = transfDelay || 40;
			autorotateValue = autoRotate || 10;
			currentAutorotate = 0;
			mainImageEl = document.getElementById (mainImage);
			transformImageEl = document.getElementById (transformImage);
			
			smallImages = document.getElementById (smallImagesContainer).getElementsByTagName ('A');
			for (var i = 0; i < smallImages.length; i++) {
				var si = smallImages[i];
				var img = si.getElementsByTagName ('IMG')[0];
				imageMap[i] = { link : si, image : img.src.replace (/\.jpg$/, "_big.jpg") };
				compatNode (si).addEventListener ('click', imageClick (i), true);
			}
			selectedIndex = smallImages.length - 1;
			setInterval (autorotateCheck, 1000);
			autorotateCheck();
		}
	}
	
})();