function simpleGallery(settingarg) {
	var slideshow = this;
	var setting = slideshow.setting = settingarg;
	setting.fadeduration = parseInt(setting.fadeduration);
	setting.curimage = setting.slideindex || 0;	
	setting.ispaused = !setting.autoplay[0];
	setting.currentstep = 0;
	setting.totalsteps = setting.imagearray.length * setting.autoplay[2];
	setting.fglayer = 0, setting.bglayer = 1;
	setting.oninit = setting.oninit || function(){}
	setting.onslide = setting.onslide || function(){}
	setting.pageready = false;
	setting.imageloaded = false;
	setting.slideshowstarted = false;
	setting.initEvent = "IG" + Math.floor(Math.random() * 0xffffff);
	setting.currwidth = 0;
	setting.currheight = 0;
	
	$(document).bind(setting.initEvent, function(e) {
	    $(document).unbind(setting.initEvent);
        setting.imageloaded = true;
        startSlideShow();
    });
    
    jQuery.each (setting.imagearray, function (e) 
	{
		var src = "";		
		if(setting.imagearray[e][0].substring(0,4) == "svg:")
		{					
			if(Modernizr.svg)
			{			
				src = setting.imagearray[e][0].substring(4,jQuery.inArray(",",setting.imagearray[e][0]));				
			}	
			else
			{
				src = setting.imagearray[e][0].substring(jQuery.inArray(",",setting.imagearray[e][0]) + 1);
			}
		}
		else
		{			
			src = setting.imagearray[e][0];
			
		}
		
		if(setting.curimage != -1)
		{
			if(e == setting.curimage)
			jQuery.fn.cacheResource(src, setting.initEvent);
			else
			jQuery.fn.cacheResource(src);
		}
		else
		{
			jQuery.fn.cacheResource(src, setting.initEvent);
		}
    	
    });
    
	if(setting.curimage == -1)
		setting.curimage = 0;
		
	$(document).ready(function() {
	    setting.currwidth = setting.dimensions[0];
	    setting.currheight = setting.dimensions[1];
		setting.$wrapperdiv = $('#' + setting.wrapperid).css({position:'relative', visibility:'visible', background:'white', overflow:'hidden', width:setting.currwidth, height:setting.currheight});
		if (setting.$wrapperdiv.length == 0) {
		    alert("Error: DIV with ID \"" + setting.wrapperid + "\" not found");
		    return;
		}

	    setting.pageready = true;
		startSlideShow();
	});
	
	function startSlideShow() {
	    if(!setting.slideshowstarted && setting.pageready && setting.imageloaded) {
	        setting.slideshowstarted = true;
			setting.$wrapperdiv.empty();
			setting.$gallerylayers = $('<div class="gallerylayer"></div><div class="gallerylayer"></div>').css({position:'absolute', left:0, top:0}).appendTo(setting.$wrapperdiv);
			setting.gallerylayers = setting.$gallerylayers.get();
            slideshow.showslide(setting.curimage);
            
            try {
                setting.oninit.call(slideshow);
            } catch(e) {
                alert("Error in \"oninit\" event. " + e)
            }
	    }
	}
}

simpleGallery.prototype={
	getHTMLContent:function(imgindex){
		var slideshow = this;		
		return (slideshow.setting.imagearray[imgindex][1]).replace(/&amp;/ig,"&").replace(/&lt;/ig,"<").replace(/&gt;/ig,">").replace(/&quot;/ig,"\"");
	},
	
	navigate:function(keyword){
	    var slideshow = this;
	    var setting = slideshow.setting;
	    
	    clearTimeout(setting.timerID);
	    
	    if (!isNaN(parseInt(keyword)))
			slideshow.showslide(parseInt(keyword))
		else if (/(prev)|(next)/i.test(keyword))
			slideshow.showslide(keyword.toLowerCase())
		else if (/(pause)/i.test(keyword))
            setting.ispaused = true;
	},

	showslide:function(keyword) {
	    var slideshow = this;
	    var setting = slideshow.setting;
	    //alert(setting.curimage);
		var totalimages = setting.imagearray.length;
		var imgindex = (keyword == "next") ? (setting.curimage < totalimages - 1 ? setting.curimage + 1 : 0) 
		             : (keyword == "prev") ? (setting.curimage > 0 ? setting.curimage - 1 : totalimages - 1)
		             : (keyword == "current") ? setting.curimage
		             : Math.min(keyword, totalimages - 1);
		
		var src = "";	
		var IsSvg = false;		
		if(setting.imagearray[imgindex][0].substring(0,4) == "svg:")
		{
			IsSvg = true;
			if(Modernizr.svg)
			{			
				src = setting.imagearray[imgindex][0].substring(4,jQuery.inArray(",",setting.imagearray[imgindex][0]));				
			}	
			else
			{
				src = setting.imagearray[imgindex][0].substring(jQuery.inArray(",",setting.imagearray[imgindex][0]) + 1);
			}
		}
		else
		{			
			src = setting.imagearray[imgindex][0];
		}
		
		var image = jQuery.fn.getCachedResource(src);
		
		if(image == null) {
		    setting.currentstep++;
		    setting.curimage = imgindex;
		    setting.timerID = setTimeout(function(){slideshow.showslide('next')}, 0);
		    return;
		}
		
		$(setting.gallerylayers[setting.bglayer]).empty();
		
				
		
		if(!IsSvg)
		{
			jQuery(slideshow.getHTMLContent(imgindex)).append($(image).css({border:0, width:setting.currwidth, height:setting.currheight})).appendTo($(setting.gallerylayers[setting.bglayer]));		
		}
		else
		{	
			jQuery($(image).css({border:0, width:setting.currwidth, height:setting.currheight})).appendTo($(setting.gallerylayers[setting.bglayer]));
		}
		$(setting.gallerylayers[setting.bglayer]).stop().css({zIndex:1, opacity:0}).animate({opacity:1}, setting.fadeduration, function() {
		    $(setting.gallerylayers[setting.bglayer]).html("");
		    
            try {
                setting.onslide.call(slideshow, setting.gallerylayers[setting.fglayer]);
            } catch(e) {
                alert("Error in \"onslide\" event. " + e)
            }
            
		    setting.currentstep++;
			if (!setting.ispaused) {
				if (setting.currentstep < setting.totalsteps)
				    setting.timerID = setTimeout(function(){slideshow.showslide('next')}, setting.autoplay[1]);
			}
		});
		
		$(setting.gallerylayers[setting.fglayer]).css({zIndex:0});
		setting.fglayer = setting.bglayer;
		setting.bglayer = (setting.bglayer==0) ? 1 : 0;
		setting.curimage = imgindex;
	},
	
	switchtoFullScreen:function(wrapper) {
    	var slideshow = this;
	    var setting = slideshow.setting;
	    
	    var Id = $(wrapper).attr("id").replace("Panel", "");
	    var panelHeight = $(wrapper).height() - setting.$wrapperdiv.height();
	    var dummyDIV = jQuery("<div></div>").css({border:0, width:$(wrapper).width(), height:$(wrapper).height()}).insertBefore($(wrapper));

	    var fullScreenImageHeight = $(window).height() - panelHeight;
	    var fullScreenImageWidth = (setting.currwidth / setting.currheight) * fullScreenImageHeight;
	    
	    if(fullScreenImageWidth > $(window).width()) {
	        fullScreenImageWidth = $(window).width();
	        fullScreenImageHeight = (setting.currheight  / setting.currwidth) * fullScreenImageWidth;
	    }
	    
	    $(wrapper).dialog({
	        autoOpen: true,
	        modal: true,
	        resizable:false,
	        width: fullScreenImageWidth,
            open: function(event, ui) {
                $(this).siblings().eq(0).remove();
                $(this).parent().removeClass();
                $(this).removeClass();
                $(this).dialog({ height: fullScreenImageHeight + panelHeight });
                $(this).dialog("option", "position", [($(window).width() - fullScreenImageWidth)/2, ($(window).height() - fullScreenImageHeight - panelHeight)/2]);
	            setting.currwidth = fullScreenImageWidth;
	            setting.currheight = fullScreenImageHeight;
                $(this).children().eq(0).css({width:setting.currwidth, height:setting.currheight});
                $(this).children().eq(1).css({width:setting.currwidth});
                slideshow.showslide('current');
                $('#' + Id + 'NormalScreen').show();
                $('#' + Id + 'FullScreen').hide();
            },
            close: function (event, ui) {
				$(this).dialog("destroy");
				$(this).insertAfter($(dummyDIV));
				$(this).removeAttr("class");
				$(this).removeAttr("style");
				$(this).css({display:"inline"});
				$(dummyDIV).remove();
	            setting.currwidth = setting.dimensions[0];
	            setting.currheight = setting.dimensions[1];
                $(this).children().eq(0).css({width:setting.currwidth, height:setting.currheight});
                $(this).children().eq(1).css({width:setting.currwidth});
                slideshow.showslide('current');
                $('#' + Id + 'NormalScreen').hide();
                $('#' + Id + 'FullScreen').show();
			}
	    });
	}
}

