$(function(){
	indexPreload();
	artistGallery();
	exhibitionsGallery();
	setUIDialog();
	seriesHandler();
	artonair();
	// past();
});

function indexPreload(){
	if ($('ul.slideshow').length == 1) {
		// hide slideshow images
	    $('ul.slideshow li').css({opacity: 0.0});

		// but show the one with the loading spinner
		$('#firstImage').parent().css({opacity: 1});

		// preload the top bar
	    QueryLoader.selectorPreload = "#topBar";
	
		// starts the preloader - calls indexInit when done
	    QueryLoader.init();
	}
}

function indexInit(){
	// preload the first image
	source = "/assets/home/G&M_Still-from-Revolution-1.jpg";

	$('<img  title="1" />').attr('src', source).load(function(){
		// fade in the first image
		$('#firstImage').css('display', 'none').removeClass('loading').html($(this)).fadeIn('medium');
		
		// append the rest of the pictures
		$('li.show').after(restOfThePictures);

		// turn off all opacities
		$('ul.slideshow li').css({opacity: 0.0});

		// start the slideshow
		slideShow(5000);
	});
}

var restOfThePictures = "\
	<li class='slide'><a href='#'><img title='2' src='/assets/home/G&M_Still-from-Revolution-2.jpg' width='600' height='480' alt='G&M_Still from Revolution 2'></a></li>\
	<li class='slide'><a href='#'><img title='3' src='/assets/home/Lida-Abdul_Performance_ApexArt.jpg' width='600' height='450' alt='Lida Abdul_Performance_ApexArt'></a></li>\
	<li class='slide'><a href='#'><img title='4' src='/assets/home/Keecheeree-Performance_ApexArt.jpg' width='375' height='500' alt='Keecheeree Performance_ApexArt'></a></li>\
	<li class='slide'><a href='#'><img title='5' src='/assets/home/Sandalee-Installation_ApexArt.jpg' width='600' height='450' alt='Sandalee Installation_ApexArt'></a></li>\
	<li class='slide'><a href='#'><img title='6' src='/assets/home/ALMAGUL-MENLIBAEVA_Apa.jpg' width='600' height='388' alt='ALMAGUL MENLIBAEVA_Apa'></a></li>\
	<li class='slide'><a href='#'><img title='7' src='/assets/home/Elena-&-Viktor-Vorobaeva-Winter-Sublimating-Subject-2003.jpg' width='333' height='500' alt='Winter Sublimating Subject 2003'></a></li>\
	<li class='slide'><a href='#'><img title='8' src='/assets/home/GEORGY-TRYAKIN-BUKHAROV,-Horse,-2002,-assemblaggio-di-materiali-vari,-cm-150x110x80.jpg' width='600' height='450' alt='GEORGY TRYAKIN BUKHAROV, Horse'></a></li>\
	<li class='slide'><a href='#'><img title='9' src='/assets/home/Roya-Ghiasy_I-dream-of-Orient-Express.jpg' width='314' height='500' alt='Roya Ghiasy_I dream of Orient Express'></a></li>\
	<li class='slide'><a href='#'><img title='10' src='/assets/home/Rustam-Khalfin-2.jpg' width='600' height='409' alt='Rustam Khalfin 2'></a></li>\
	<li class='slide'><a href='#'><img title='11' src='/assets/home/G&M_Shadows.jpg' width='600' height='398' alt='G&M_Shadows'></a></li>\
	<li class='slide'><a href='#'><img title='12' src='/assets/home/Saken-Narynov_20KG-of-Good-and-Evil_1999_2.jpg' width='600' height='400' alt='Saken Narynov_20KG of Good and Evil_1999_2'></a></li>\
	<li class='slide'><a href='#'><img title='13' src='/assets/home/Mariam-Ghani_pomknife.jpg' width='600' height='400' alt='Mariam Ghani_pomknife'></a></li>\
	<li class='slide'><a href='#'><img title='14' src='/assets/home/Shailo-D_Asphalt_01.jpg' width='507' height='500' alt='Shailo D_Asphalt_01'></a></li>\
	<li class='slide'><a href='#'><img title='15' src='/assets/home/Shailo-D_Asphalt_03.jpg' width='507' height='500' alt='Shailo D_Asphalt_03'></a></li>\
	<li class='slide'><a href='#'><img title='16' src='/assets/home/Erbossyn-M_Wolfsheep.jpg' width='600' height='450' alt='Erbossyn M_Wolfsheep'></a></li>\
	<li class='slide'><a href='#'><img title='17' src='/assets/home/Vorobayevas_Knife_2003_4.jpg' width='600' height='400' alt='Vorobayevas_Knife_2003_4'></a></li>\
	<li class='slide'><a href='#'><img title='18' src='/assets/home/Stefan-Eins.jpg' width='600' height='400' alt='Stefan Eins'></a></li>\
	<li class='slide'><a href='#'><img title='19' src='/assets/home/Reasonable-Doubt.jpg' width='600' height='483' alt='Reasonable Doubt'></a></li>\
";

function artistGallery(){
	if ($('#thumbs').length != 0 && $('#artistName').length != 0) {
		// Turn on the slideshow content
		$('div.content').css('display', 'block');

		// Initially set opacity on thumbs and add
		// additional styling for hover effect on thumbs
		var onMouseOutOpacity = 0.5;
		$('#thumbs ul.thumbs li').opacityrollover({
			mouseOutOpacity:   onMouseOutOpacity,
			mouseOverOpacity:  1.0,
			fadeSpeed:         'fast',
			exemptionSelector: '.selected'
		});

		// Initialize Galleriffic Gallery
		$('#thumbs').galleriffic({
			imageContainerSel: '#slideshow',
			captionContainerSel: '#galleryCaption',
			numThumbs: 16
		});
	}
}

function exhibitionsGallery(){
	if ($('#exhibitionsThumbs').length != 0) {
		// We only want these styles applied when javascript is enabled
		$('div.content').css('display', 'block');

		// Initially set opacity on thumbs and add
		// additional styling for hover effect on thumbs
		var onMouseOutOpacity = 0.5;
		$('#exhibitionsThumbs ul.thumbs li, a.pageLink').opacityrollover({
			mouseOutOpacity:   onMouseOutOpacity,
			mouseOverOpacity:  1.0,
			fadeSpeed:         'fast',
			exemptionSelector: '.selected'
		});
		
		// Initialize Advanced Galleriffic Gallery
		var gallery = $('#exhibitionsThumbs').galleriffic({
			numThumbs:                 7,
			imageContainerSel:         '#slideshow',
			captionContainerSel:       '#galleryCaption',
			enableTopPager:            false,
			enableBottomPager:         false,
			renderSSControls:          false,
			renderNavControls:         true,
			nextPageLinkText:          'Next &rsaquo;',
			prevPageLinkText:          '&lsaquo; Prev',
			onSlideChange:             function(prevIndex, nextIndex) {
				// 'this' refers to the gallery, which is an extension of $('#thumbs')
				this.find('ul.thumbs').children().eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end().eq(nextIndex).fadeTo('fast', 1.0);

				// Update the photo index display
				this.$captionContainer.find('div.photo-index')
					.html('Photo '+ (nextIndex+1) +' of '+ this.data.length);
			},
			onPageTransitionOut:       function(callback) {
				this.fadeTo('fast', 0.0, callback);
			},
			onPageTransitionIn:        function() {
				var prevPageLink = this.find('a.prev').css('display', 'none');
				var nextPageLink = this.find('a.next').css('display', 'none');
				
				// Show appropriate next / prev page links
				if (this.displayedPage > 0)
					prevPageLink.fadeIn('medium');

				var lastPage = this.getNumPages() - 1;
				if (this.displayedPage < lastPage)
					nextPageLink.fadeIn('medium');

				this.fadeTo('fast', 1.0);

				// set caption position
				height = $('.advance-link img').height();
				position = $('#gallery').position();

				$('#galleryCaption').css('top', height + position.top + 5).css('left', position.left);
			}
		});

		/**************** Event handlers for custom next / prev page links **********************/

		gallery.find('a.prev').click(function(e) {
			gallery.previousPage();
			e.preventDefault();
		});

		gallery.find('a.next').click(function(e) {
			gallery.nextPage();
			e.preventDefault();
		});
	}
}

// initialize the dialog
function setUIDialog(){
	if ($('.veniceSeries').length != 0) {
		$dialog = $('<div></div>').dialog({
			autoOpen: false,
			modal: true,
			width: 650
		});
	} else {
		$dialog = $('<div></div>').dialog({
			autoOpen: false,
			modal: true,
			width: 650
		});
	}
}

// open the dialog
function seriesHandler(){
	if ($('#seriesContainer').length != 0) {	
		var onMouseOutOpacity = 0.5;
		$('#seriesContainer a').opacityrollover({
			mouseOutOpacity:   onMouseOutOpacity,
			mouseOverOpacity:  1.0,
			fadeSpeed:         'fast',
			exemptionSelector: '.selected'
		});

		$('#seriesContainer a').click(function(){
			var title = $(this).next('.seriesTitle').html();
			var series = $(this).next('.seriesTitle').attr('id');
			var artist = $('#artist').html();
			var artist_id = $('#artist_id').html();

			// get the contents of the series with ajax
			$.ajax({
				url: "/api/getSeries.php?artist_id=" + artist_id + '&series=' + series + '&artist=' + artist,
				success: function(data) {
					// populate and open the dialog
					$dialog.html('<h1>' + title + '</h1><a href="#" onclick="return false;" class="dialogClose" style="outline: none;">close</a><br><br>' + data).dialog("option", "position", 'top').dialog('open');
				
					// add the hidden area for loading images
					$('.ui-dialog-content').append('<div id="imageSandbox"></div>');

					// preload if not ie
					if (jQuery.browser.msie) {
						$('.loading').each(function(){
							$(this).replaceWith('<img src="' + $(this).attr('title') + '" alt="image" width="' + $(this).width() + '" height="' + $(this).height() + '">');
						});
					} else {
						// start preloading the images
						$('.loading').each(function(index){
							// add a new image with the index id
							$('#imageSandbox').append('<img id="image' + index + '" />');

							$('#image' + index).attr('src', $(this).attr('title')).load(function(){
								$('#loading' + index).removeClass('loading').css('opacity', 0).html($(this)).animate({opacity: 1}, 300);
							});
						});
					}
				
					// set the close functions
					dialogClosers();
				}
			});
		});
	}
}

function artonair(){
	$('.artonair').click(function(){
		content = $(this).nextAll('.artonairContent:first');

		if (content.css('display') == 'none') {
			content.slideDown('medium');
		} else {
			content.slideUp('medium');
		}
	});
}

function past(){
	if ($('.pastLink').length != 0) {
		$('.pastLink').click(function(){
			$('#past').slideDown('medium');
		});
	}
}


// =========================================
// = Functions called from other functions =
// =========================================

// global valid flag
var valid = true;

function validateContact(){
	// get variables from form
	var email = $('#contactEmail').val();
	var website = $('#contactWebsite').val();
	var message = $('#contactMessage').val();
	
	// set valid flag
	valid = true;
	
	if (emailIsValid(email) == false){
		valid = false;
		$('#contactEmailError').html('<br>Your email address is invalid.<br><br>');
	} else {
		$('#contactEmailError').html('');
	}
	
	if (website != '') {
		valid = false;
	}
	
	if (message == '') {
		valid = false;
		$('#contactMessageError').html('<br>The message is blank - don\'t you want to say something?<br><br>');
	} else {
		$('#contactMessageError').html('');
	}
	
	if (valid == false) {
		return false;
	} else {
		// send email
		$.ajax({
			type: 'POST',
			data: "from=" + email + "&message=" + message,
			url: "/api/contactEmail.php",
			success: function(data) {
				if (data == '1') {
					$('#contactFlash').css('display', 'none').css('color', 'green').html('Your message was sent successfuly. Thank you!').fadeIn('medium');
				} else {
					alert(data);
				}
			}
		});
	}
}

// validate email list
function validateEmailList(sign){
	var email = $('#mailingListEmail').val();

	// set valid flag
	valid = true;
	
	if (emailIsValid(email) == false){
		valid = false;
		$('#mailingEmailError').html('<br>Your email address is invalid.<br><br>');
	} else {
		$('#mailingEmailError').html('');
	}

	if (valid) {
		// signing up or removing?
		if (sign == 'signup') {
			url = '/api/emailList.php?signup=' + email;
		} else {
			url = '/api/emailList.php?remove=' + email;
		}

		// send email
		$.ajax({
			url: url,
			success: function(data) {
				if (data == '0') {
					$('#contactFlash').css('display', 'none').css('color', '#f00').html('That email isn\'t signed up for our email list.').fadeIn('medium');
				} else if (data == '1') {
					$('#contactFlash').css('display', 'none').css('color', 'green').html('Thanks for signing up!').fadeIn('medium');
				} else if (data == '3') {
					$('#contactFlash').css('display', 'none').css('color', '#f00').html('That email is already signed up.').fadeIn('medium');
				} else if (data == '4') {
					$('#contactFlash').css('display', 'none').css('color', 'green').html('You have been removed from our email list. Thanks for reading!').fadeIn('medium');
				}
			}
		});
	}
}

// validate mailing list
function validateMailingList(sign){
	var name = $('#name').val();

	// set valid flag
	valid = true;

	// signing up or removing?
	if (sign == 'signup') {
		var address = $('#address').val();
	
		if (name == ''){
			valid = false;
			$('#nameError').html('<br>Please enter your name.<br><br>');
		} else {
			$('#nameError').html('');
		}
	
		if (address == ''){
			valid = false;
			$('#addressError').html('<br>Please enter your address.<br><br>');
		} else {
			$('#addressError').html('');
		}
	
		addressEncoded = escape(address);
		url = '/api/mailingList.php?name=' + name + '&address=' + addressEncoded;
	} else {
		if (name == ''){
			valid = false;
			$('#nameError').html('<br>Please enter your name.<br><br>');
		} else {
			$('#nameError').html('');
		}

		url = '/api/mailingList.php?remove=' + name;
	}

	if (valid) {
		// send email
		$.ajax({
			url: url,
			success: function(data) {
				if (data == '0') {
					$('#contactFlash').css('display', 'none').css('color', '#f00').html('That name isn\'t signed up for our mailing list.').fadeIn('medium');
				} else if (data == '1') {
					$('#contactFlash').css('display', 'none').css('color', 'green').html('Thanks for signing up!').fadeIn('medium');
				} else if (data == '3') {
					$('#contactFlash').css('display', 'none').css('color', '#f00').html('That name is already signed up.').fadeIn('medium');
				} else if (data == '4') {
					$('#contactFlash').css('display', 'none').css('color', 'green').html('You have been removed from our mailing list. Thanks for reading!').fadeIn('medium');
				}
			}
		});
	}
	
	return false;
}

// is the string a valid email address?
function emailIsValid(str) {
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
		//alert("Invalid E-mail ID")
		return false;
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		//alert("Invalid E-mail ID")
		return false;
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		//alert("Invalid E-mail ID")
		return false;
	}
	if (str.indexOf(at,(lat+1))!=-1){
		//alert("Invalid E-mail ID")
		return false;
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		//alert("Invalid E-mail ID")
		return false;
	}
	if (str.indexOf(dot,(lat+2))==-1){
		//alert("Invalid E-mail ID")
		return false;
	}
	if (str.indexOf(" ")!=-1){
		//alert("Invalid E-mail ID")
		return false;
	}
 	return true;			
}

// close the dialog by clicking on the overlay
function dialogClosers(){
	$('.ui-widget-overlay, .dialogClose').click(function(){
		$dialog.dialog("close"); 
	});
}
