window.ycam = window.ycam || {};
window.ycam.banners = function() {

	var banner = function( responseText, responseXML ) {

		var doc, xmlChildren;

		if ( document.implementation.createDocument ) {
       		var parser = new DOMParser(),
	       		doc = parser.parseFromString( responseText.toString(), "text/xml" );
			xmlChildren = doc.childNodes[0].childNodes;

    	// MSIE
    	} else if (window.ActiveXObject) {
	       	doc = new ActiveXObject("Microsoft.XMLDOM");
	       	doc.async="false";
        	doc.loadXML( responseText.toString() );
        	xmlChildren = doc.childNodes[1].childNodes;
    	}

		var children = [];
		for (var i=0;i<xmlChildren.length; i++ ) {
			var child = xmlChildren[ i ];
			if ( child.nodeType == 1 ) {
				children.push( xmlChildren[ i ].firstChild.nodeValue );
			}
		}

		var config = {
				count: parseInt( children[ 0 ], 10 ),
				prefix: children[ 1 ],
				duration: parseInt( children[ 2 ], 10 ),
				interval: parseInt( children[ 3 ], 10 ),
				links: children[ 4 ].replace( /(\r\n|\n|\r|\t|^\s+|\s+$)/g, '' ).split( ',' )
			},
			$photo = $( 'photo' ) || false;

		if ( $photo ) {
			var	imgs = [];
			for ( var i=0; i<config.count; i++ ) {
				imgs.push( config.prefix + ( i + 1 ) + '.jpg' );
			}
			var getRandomInt = function( min, max ) {
					return Math.floor( Math.random() * ( max - min + 1 ) ) + min;  
				},
				removeFromArray = function( arr, itg ) {
					var newArr = [],
						rmCell;
					for (var j=0;j<arr.length;j++) {
						if ( j != itg ) {
							newArr.push( arr[j] );
						}
						else {
							rmCell = arr[j];
						}
					}
					return {
						cellNew: newArr,
						cellRemoved: rmCell
					};
				};
			for ( var i=0, currArr = imgs, randomizedImgs = [], newData; i<imgs.length; i++ ) {
				//newData = removeFromArray( currArr,  getRandomInt( 0, imgs.length - ( i + 1 ) ) );
				//currArr = newData.cellNew;
				//randomizedImgs.push( ( ( lang == "english" ) ? "/en/" : "/" ) + 'site_id_photos/' + newData.cellRemoved );
				randomizedImgs.push( ( ( lang == "english" ) ? "/en/" : "/" ) + 'site_id_photos/' + imgs[ i ] );
			}

			//$photo.innerHTML = '';
			var html = [];
			for ( var i=0; i<randomizedImgs.length; i++ ) {
				html.push(
					'<a href="' + ( config.links[ i ] || '/' )
					+ '"><img src="' + randomizedImgs[ i ] + '"'
					+ ' style="z-index:' + ( randomizedImgs.length - i )
					+ '" /></a>'
				);
			}
			$photo.set( 'html', html.join('') );

			var slideShowImgs = $$( '#photo img' ),
				currImg = 0,
				nextSlide = function() {
					var currSlide = slideShowImgs[ currImg ];
					currImg++;
					if ( currImg >= slideShowImgs.length ) {
						currImg = 0;
						new Fx.Tween( slideShowImgs[ currImg ], {
							duration: config.duration,
							property: 'opacity',
							onComplete: function() {
								window.setTimeout( nextSlide, config.interval );
							}
						}).start( 1, 0 );
					}
					else {
						var next = slideShowImgs[ currImg ];
						if ( next.className && ( next.className == 'loaded' ) ) {
							next.setStyles({
								display: 'block',
								visibility: 'visible',
								opacity: 1
							});
						}
						new Fx.Tween( currSlide, {
							duration: config.duration,
							property: 'opacity',
							onComplete: function() {
								currSlide.className = 'loaded';
								window.setTimeout( nextSlide, config.interval );
							}
						}).start( 1, 0 );
					}
				};
			if ( $photo.length > 1 ) {
				window.setTimeout( nextSlide,  config.interval );
			}
		}
	};
	

	window.addEvent('domready', function() {
		var $photo = $( 'photo' ) || false;
		if ( $photo ) {
			new Request({
				url: ( ( lang == "english" ) ? "/en/" : "/" ) + "site_id_photos/site_id_photos.xml",
				method: 'get',
				onSuccess: banner
			}).send();
		}
	});

}();
