var photos = [];

function $(id) { return document.getElementById(id); }

function toggleChecked(clicked, optionsName) {
	var options = document.getElementsByName(optionsName);
	for (i=0; i<options.length; i++) {
		if (options[i].getAttribute("selected") == "true") {
			options[i].removeAttribute("selected");
		}
	}
	clicked.setAttribute("selected", "true");
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return '';
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function clearCookies() {
	eraseCookie('userName');
	eraseCookie('settings')
	eraseCookie('sortBy');
	eraseCookie('NSID');
}

function resetCookies() {
	userName = readCookie('userName');
	settings = readCookie('settings');
	sortBy = readCookie('sortBy');
	NSID = readCookie('NSID');
	clearCookies();
	if (userName != null && userName != '') {
		createCookie('userName',userName,300);
	}
	if (settings != null && settings != '') {
		createCookie('settings',settings,300);
	}
	if (sortBy != null && sortBy != '') {
		createCookie('sortBy',sortBy,300);
	}
	if (NSID != null && NSID != '') {
		createCookie('NSID',NSID,300);
	}
}

function updateSettings() {
	userName = readCookie('userName');
	settings = readCookie('settings');
	sortBy = readCookie('sortBy');
	options = document.getElementsByName('options');
	sort_options = document.getElementsByName('sort_options');
	if (userName != null && userName != '') {
		document.getElementById('settingsUsername').value = userName;
	} else {
		document.getElementById('settingsUsername').value = '';
	}
	if (settings != null && settings != '') {
		for (i=0; i<options.length; i++) {
			if (options[i].title == settings) {
				options[i].setAttribute("selected", "true");
			} else {
				options[i].removeAttribute("selected");
			}
		}
	} else {
		for (j=0; j<options.length; j++) {
			options[j].removeAttribute("selected");
		}
		options[2].setAttribute("selected", "true");
	}
	if (sortBy != null && sortBy != '') {
		for (k=0; k<sort_options.length; k++) {
			if (sort_options[k].title == sortBy) {
				sort_options[k].setAttribute("selected", "true");
			} else {
				sort_options[k].removeAttribute("selected");
			}
		}
	} else {
		for (l=0; l<sort_options.length; l++) {
			sort_options[l].removeAttribute("selected");
		}
		sort_options[4].setAttribute("selected", "true");
	}
}

function saveSettings() {
	userName = document.getElementById('settingsUsername').value;
	oldUserName = readCookie('userName');
	if (userName != oldUserName)
		getNSID(userName);
	options = document.getElementsByName('options');
	for (i=0; i<options.length; i++) {
		if (options[i].getAttribute("selected") == "true") {
			photosPerPage = options[i].title;
		}
	}
	oldSettings = readCookie('settings');
	sort_options = document.getElementsByName('sort_options');
	for (j=0; j<sort_options.length; j++) {
		if (sort_options[j].getAttribute("selected") == "true") {
			sortBy = sort_options[j].title;
		}
	}
	oldSortBy = readCookie('sortBy');
	if (userName != null && userName != '') {
		if (userName != oldUserName) {
			createCookie('userName', userName, 300);
		}
	}
	if (photosPerPage != 0 && photosPerPage != null && photosPerPage != '') {
		if (photosPerPage != oldSettings) {
			createCookie('settings', photosPerPage, 300);
		}
	}
	if (sortBy != null && sortBy != '') {
		if (sortBy != oldSortBy) {
			createCookie('sortBy', sortBy, 300);
		}
	}
	resetCookies();
	alert("Settings saved!");
}

function getNSID(userName) {
	if (userName != null && userName != '') {
		var request = new XMLHttpRequest();
		request.onreadystatechange=function() {
			if (request.readyState == 4) {
				var NSID = request.responseText;
				oldNSID = readCookie('NSID');
				if (NSID != null && NSID != '') {
					if (NSID != oldNSID) {
						createCookie('NSID',NSID,300);
					}
				} else {
					createCookie('NSID','',300);
					createCookie('userName','',300);
					alert('Invalid User Name. Please try another user name. If you believe your user name is correct, please visit the FAQ to see how you can fix the problem.');
				}
			}
		}
		var getNSID = "./searches/getNSID.php?username="+encodeURIComponent(userName);
		request.open("GET",getNSID,true);
		request.send(null);
	} else {
		createCookie('NSID','',300);
		createCookie('userName','',300);
	}
}

function forgetSettings() {
	clearCookies();
	alert("Settings erased!");
}

function clearField(id) {
	field = document.getElementById(id);
	field.value = '';
	field.focus();
}

var timerID = 0;
function showControls() {
	clearTimeout(timerID);
	var elem1, style1, elem2, style2, id1, id2;
	var id1 = "photoNav";
	var id2 = "toolbar"
	elem1 = document.getElementById(id1);
	elem2 = document.getElementById(id2);
	style1 = elem1.style;
	style2 = elem2.style;
	if (style1.display != style2.display) {
		style1.display = style2.display;
	}
	if (style1.display == 'none' || style1.display == '' ) {
		style1.display='block';
	} else {
		style1.display='none';
	}
	if (style2.display == 'none' || style2.display == '' ) {
		style2.display='block';
	} else {
		style2.display='none';
	}
	timerID = setTimeout("hideControls('"+id1+"','"+id2+"');",5000);
}

function keepControls() {
	clearTimeout(timerID);
	var elem1, style1, elem2, style2, id1, id2;
	var id1 = "photoNav";
	var id2 = "toolbar"
	elem1 = document.getElementById(id1);
	elem2 = document.getElementById(id2);
	style1 = elem1.style;
	style2 = elem2.style;
	style1.display='block';
	style2.display='block';
	timerID = setTimeout("hideControls('"+id1+"','"+id2+"');",5000);
}

function hideControls(id1,id2) {
	var elem1, style1, elem2, style2;
	elem1 = document.getElementById(id1);
	elem2 = document.getElementById(id2);
	style1 = elem1.style;
	style2 = elem2.style;
	var toolbar = document.getElementById('toolbar');
	if (toolbar) {
		var canHide = toolbar.getAttribute("canHide");
		if (canHide) {
			if (canHide == 'true') {
				style2.display='none';
			}
		}
	}
	style1.display='none';
}

var showTimer = 0;
function playPauseShow(index) {
	var playPause = document.getElementById("playPause");
	var playOrPause = (playPause.getAttribute("alt")).toLowerCase();
	if (playOrPause == "play")
	{
		playPause.setAttribute("src","./images/pause.png");
		playPause.setAttribute("alt","pause");
		setTimeout("nextPhoto("+(++index)+")",3000);
	}
	else
	{
		playPause.setAttribute("src","./images/play.png");
		playPause.setAttribute("alt","play");
		clearTimeout(showTimer);
	}
	
}

function showPhoto(index) {
	var largePhotoURL = photos[index]["url"];
	var title = photos[index]["title"];
	var owner = photos[index]["owner"];
	var photoID = photos[index]["photoID"];
	var count = parseInt(index);
	var share = "mailto:?"+photos[index]["share"];
	var largePhotoDiv = document.getElementById("largePhoto");
	var largePhoto = document.getElementById("bigPhoto");
	var moreFromUser = "searches/gallery.php?NSID="+owner;
	var openInNewPage = "window.open(\"http://www.flickr.com/"+owner+"/"+photoID+"/\");";
	var image = "<img class='large' alt='"+title+"' src='"+largePhotoURL+"' title ='"+title+"'/>";
	largePhoto.innerHTML = image;
	(document.getElementById("openInNewPage")).setAttribute("onclick",openInNewPage);
	(document.getElementById("moreFromUser")).setAttribute("href",moreFromUser);
	largePhotoDiv.setAttribute("title",title);
	(document.getElementById("pageTitle")).innerHTML=title;
	largePhotoDiv.setAttribute("extrahref",share);
	(document.getElementById("extraButton")).setAttribute("href",share);
	(document.getElementById("prevPhoto")).setAttribute("onclick","showPhoto("+(count-1)+");");
	$("getTags").setAttribute("href","searches/get_tags.php?photoID="+photoID);
	$("getDescription").setAttribute("href","searches/get_description.php?photoID="+photoID);
	if (count == 0)
		(document.getElementById("prevPhoto")).setAttribute("onclick","showPhoto("+(photos.length-1)+");");
	(document.getElementById("nextPhoto")).setAttribute("onclick","showPhoto("+(count+1)+");");
	if (count == (photos.length-1))
		(document.getElementById("nextPhoto")).setAttribute("onclick","showPhoto(0);");
	(document.getElementById("playPause")).setAttribute("onclick","playPauseShow("+count+");");
	if (count == (photos.length-1))
	{
		preloadNextImage(0);
	} else {
		preloadNextImage((count+1));
	}
}

function preloadNextImage(index) {
	var nextPhoto = photos[index]["url"];
	var preloader = document.getElementById("preloader");
	preloader.style.backgroundImage = "url("+nextPhoto+")";
}

function stopShow() {
	clearTimeout(showTimer);
	var playPause = document.getElementById("playPause");
	playPause.setAttribute("src","./images/play.png");
	playPause.setAttribute("alt","play");
}

function nextPhoto(index) {
	showPhoto(index);
	if (index == (photos.length-1))
		index = -1;
	showTimer = setTimeout("nextPhoto("+(++index)+")",4500);
}

function getPhotos(id) {
	photos.length = 0;
	var smallPhotos = document.getElementById(id);
	var link = smallPhotos.getElementsByTagName("a");
	for (var i = 0; i < link.length; i++)
	{
		if (link[i].getAttribute("type")=="image")
		{
			var photo = new Array();
			photo["url"] = link[i].getAttribute("q");
			photo["title"] = link[i].getAttribute("caption");
			photo["owner"] = link[i].getAttribute("owner");
			photo["share"] = link[i].getAttribute("share");
			photo["photoID"] = link[i].getAttribute("photoID");
			photos.push(photo);
		}
	}
}
