window.gallery_onloadOld = window.onload?window.onload:function(){};
window.onload = gallery_onload;

window.accesslevel = "default";
window.SimpleQuick_slideshow_gallery_current = 0;

function upload(form, file, name, description, realname, galleryid) {
	var framenumber = 1;
	while(document.getElementById("upload_fileframe"+framenumber))
		framenumber++;
	
	var upload_frame = document.createElement("iframe");
	upload_frame.setAttribute('src', 'about:blank');
	upload_frame.setAttribute("name", "upload_fileframe"+framenumber);
	upload_frame.name = "upload_fileframe"+framenumber;
	upload_frame.id = "upload_fileframe"+framenumber;
	form.target = upload_frame.name;
	
	
	upload_frame.style.cssText = "position:absolute; visibility:hidden; display:none; left:-999em; height:0px; width:0px;";
	upload_frame.style.display = "none";
	upload_frame.height = "0";
	upload_frame.width = "0";
	upload_frame.style.left = "-999em";
	upload_frame.params = "image_file="+file+"&image_description="+description+"&image_name="+name+"&image_realname="+realname+"&image_galleryid="+galleryid;
	document.body.appendChild(upload_frame);
	upload_frame.onload = function() {
		xmlhttp_post(site_root+"gallery/?ext=upload_check&sid="+Math.random(), this.params, upload_frame.id, "upload_completed(\""+upload_frame.id+"\");");
	};
	
	var iFrameID = upload_frame.id;
	//if(document.all)
		//captureEvent('load', xmlhttp_post(site_root+"gallery/?ext=upload_check&sid="+Math.random(), this.params, upload_frame.id, "upload_completed(\""+upload_frame.id+"\");") , upload_frame); 
	if(self.frames[iFrameID].name != iFrameID) {
		/* *** IMPORTANT: This is a BUG FIX for Internet Explorer *** */
		self.frames[iFrameID].name = iFrameID;
	}
	
	if(framenumber==1)
		document.getElementById('image_statustext').innerHTML = 'Uploading image '+(document.getElementById('image_name').value.length>0?document.getElementById('image_name').value:document.getElementById('image_realname').value)+', please wait...';
	else {
		var cnt=0;
		var iframes = document.getElementsByTagName('iframe');
		for(var i in iframes)
			if(iframes[i] && iframes[i].id && iframes[i].id.indexOf('upload_fileframe')==0)
				cnt++;
		document.getElementById('image_statustext').innerHTML = "Please Wait, uploading "+cnt+" images...";
	}
	
	/*
	document.getElementById('image_name').disabled = true;
	document.getElementById('image_description').disabled = true;
	*/
	setTimeout("document.getElementById('image_name').value = ''; document.getElementById('image_description').value = '';", 100);
}

function upload_completed(frameid) {
	var JSONtext = xmlhttp_postdata[frameid].responseText;
	var JSON = eval('('+xmlhttp_postdata[frameid].responseText+')');
	
	setTimeout("document.body.removeChild(document.getElementById('"+frameid+"'));",700);

	document.getElementById('image_statustext').innerHTML = JSON["message"];
	//var iframes = document.getElementsByTagName('iframe'); var cnt=0; for(var i in iframes) { if(iframes[i] && iframes[i].id && iframes[i].id.indexOf('upload_fileframe')==0) cnt++; }
	setTimeout("var iframes = document.getElementsByTagName('iframe'); var cnt=0; for(var i in iframes) { if(iframes[i] && iframes[i].id && iframes[i].id.indexOf('upload_fileframe')==0) cnt++; } if(cnt>0) { document.getElementById('image_statustext').innerHTML = 'Please Wait, uploading '+cnt+' images...'; } else { document.getElementById('image_statustext').innerHTML = ''; }", 1050);
	
	//alert(JSONtext);
	//alert(document.getElementById('gallery_display_image_'+JSON['galleryid']).src);
	if(document.getElementById('gallery_display_image_'+JSON['galleryid']) && document.getElementById('gallery_display_image_'+JSON['galleryid']).className=="gallery_display_image_noimages") {
		document.getElementById('gallery_display_image_'+JSON['galleryid']).className = "gallery_display_image";
		document.getElementById('gallery_display_image_'+JSON['galleryid']).src = "?ext=thumb&size=100&id="+JSON['id'];
	}
	/*
	document.getElementById('image_name').disabled = false;
	document.getElementById('image_description').disabled = false;
	document.getElementById('image_name').value = '';
	document.getElementById('image_description').value = '';
	*/
}



function newgallery(iname, idescription) {
	var unique = Math.floor(Math.random()*999999);
	var params = "newgallery_name="+escape(iname)+"&newgallery_description="+escape(idescription)+"&ext=new_gallery";
	xmlhttp_post(site_root+"gallery/?ext=new_gallery&sid="+Math.random(), params, unique, "gallery_created("+unique+");");
	document.getElementById('newgallery_statustext').innerHTML = "Creating Gallery, Please Wait...";
	document.getElementById('newgallery_name').disabled = "disabled";
	document.getElementById('newgallery_description').disabled = "disabled";
}

function gallery_created(xmlhttpid) {
	var JSONtext = xmlhttp_postdata[xmlhttpid].responseText;
	var JSON = eval('('+xmlhttp_postdata[xmlhttpid].responseText+')');
	document.getElementById('newgallery_statustext').innerHTML = JSON["message"];
	setTimeout("document.getElementById('newgallery_statustext').innerHTML = '';", 1000);
	if(JSON['result']=="failed")
		return false;
	//var newHTML = "<div id=\"gallery_display_row_"+JSON['id']+"\" class=\"gallery_display_row\" onmouseover=\"className+=' hover';\" onmouseout=\"className=className.substring(0, className.indexOf(' hover'));\">\n";
	var newDiv = document.createElement("div");
	newDiv.id = "gallery_display_row_"+JSON['galleryid'];
	newDiv.className = "gallery_display_row";
	newDiv.onmouseover = function() { this.className+=' hover'; };
	newDiv.onmouseout = function() { if(this.className.indexOf(' hover') > -1) this.className=this.className.substring(0, this.className.indexOf(' hover')); };
	var newHTML = "<span class=\"gallery_display_name\">"+JSON['name']+"</span>\n";
	newHTML += "<img class=\"gallery_display_image_noimages\" id=\"gallery_display_image_"+JSON['galleryid']+"\" src=\"gallery_noimages.gif\" />\n";
	newHTML += "<span class=\"gallery_display_created\">"+JSON['created']+"</span>";
	newHTML += "</div>\n";
	//document.getElementById("gallery_display").innerHTML += newHTML;
	newDiv.innerHTML += newHTML;
	document.getElementById("gallery_display").appendChild(newDiv);
	document.getElementById("image_galleryid").innerHTML += "\t<option id=\"image_galleryid_option_"+JSON['galleryid']+"\" value=\""+JSON['galleryid']+"\">"+JSON['name']+"</option>\n";
	
	document.getElementById('newgallery_name').disabled = null;
	document.getElementById('newgallery_description').disabled = null;
	document.getElementById('newgallery_name').value = '';
	document.getElementById('newgallery_description').value = '';

	var c = document.getElementById("gallery_display_row_"+JSON['galleryid']);
	c.onclick = galleryItemClick;
	c.onmousedown = galleryItemMousedown;
	c.onmouseup = galleryItemMouseup;
	c.onmousemove = galleryItemMousemove;
	c.oncontextmenu = function(e) { return false; };
}


function deletegallery(galleryid) {
	if(window.accesslevel!="superadmin")
		return false;
	var x = confirm("Permanently delete this gallery?");
	if(x!=true)
		return false;
	var unique = galleryid+Math.random();
	var params = "id="+galleryid+"&ext=delete_gallery";
	xmlhttp_post(site_root+"gallery/?ext=delete_gallery&sid="+Math.random(), params, unique, "gallery_deleted(\""+unique+"\");");
}

function gallery_deleted(xmlhttpid) {
	var JSONtext = xmlhttp_postdata[xmlhttpid].responseText;
	var JSON = eval('('+xmlhttp_postdata[xmlhttpid].responseText+')');
	document.getElementById("gallery_display").removeChild(document.getElementById("gallery_display_row_"+JSON['galleryid']));
	document.getElementById("image_galleryid").removeChild(document.getElementById("image_galleryid_option_"+JSON['galleryid']));
}





function deleteimage(imageid) {
	if(window.accesslevel!="admin" && window.accesslevel!="superadmin")
		return false;
	
	if(document.getElementById('slideshow_showpic_frame')) {
		var oldcurrent = currentimage;
		if(images.length==1) {
			showpic_stop();
			alert2("There are no longer any images in this gallery.");
			//return false;
		}
		else if(currentimage == images.length-1)
			setimage(0);
		else
			setimage(currentimage+1);
	}
	
	setTimeout("image_delete_process("+imageid+","+oldcurrent+");", 1000);
}

function image_delete_process(imageid,oldcurrent) {
	var oldlength = images.length;
	var oldImage = images[oldcurrent];
	var newImages = new Array();
	var newDescriptions = new Array();
	var newTitles = new Array();
	for(var i in images) {
		if(i != oldcurrent) {
			newImages.push(images[i]);
			newDescriptions.push(descriptions[i]);
			newTitles.push(titles[i]);
		}
	}
	window.images = newImages;
	window.descriptions = newDescriptions;
	window.titles = newTitles;
	window.max = images.length - 1;
	currentimage = images.indexOf(oldImage);
	imgLast = images.indexOf(imgLast)>-1 ? images.indexOf(imgLast) : 0;

	var unique = imageid+Math.random();
	var params = "id="+imageid+"&ext=delete_image";
	xmlhttp_post(site_root+"gallery/?ext=delete_image&sid="+Math.random(), params, unique, "image_deleted(\""+unique+"\","+imageid+");");
}

function image_deleted(xmlhttpid,imageid) {
	/*
	var JSONtext = xmlhttp_postdata[xmlhttpid].responseText;
	var JSON = eval('('+xmlhttp_postdata[xmlhttpid].responseText+')');
	if(document.getElementById('slideshow_showpic_frame')) {
		if(images.length==1) {
			showpic_stop();
			alert2("There are no longer any images in this gallery.");
			return false;
		}
		else if(currentimage == images.length-1)
			setimage(0);
		else
			setimage(currentimage+1);
		var oldImage = images[currentimage];
		var newImages = new Array();
		var newDescriptions = new Array();
		var newTitles = new Array();
		var t=0;
		for(var i in images) {
			if(i != currentimage) {
				t++;
				newImages[t] = images[i]
				newDescriptions[t] = descriptions[i];
				newTitles[t] = titles[i];
			}
		}
		images = newImages;
		descriptions = newDescriptions;
		titles = newTitles;
		newImages = null;
		newDescriptions = null;
		newTitles = null;
		currentimage = images.indexOf(oldImage);
		//showpic_stop();
		//setTimeout("document.title=\""+document.title+"\"; SimpleQuick_slideshow("+window.SimpleQuick_slideshow_gallery_current+");", 1000);
		//document.title += " [deleting image "+imageid+"]";
	}
	*/
}




window.currentKeyDowns = new Array();

function gallery_onload() {
	
	window.onKeyDownEvents.push(function(newkey){ if(newkey==17) document.getElementById('controlKeyMessage').style.display='block'; });
	window.onKeyUpEvents.push(function(newkey){ if(newkey==17) document.getElementById('controlKeyMessage').style.display='none'; });
		// CTRL+G = show/hide gallery creation dialog
	window.onKeyDownEvents.push(function(newkey){ if(window.isKeyDown(17) && newkey==71) { showHideCreateGalleryBox(); return "preventDefault"; } });
		// CTRL+I = show/hide gallery creation dialog
	window.onKeyDownEvents.push(function(newkey){ if(window.isKeyDown(17) && newkey==73) { showHideImageUploadBox(); return "preventDefault"; } });
		// CTRL+J = open image selection dialog
	window.onKeyDownEvents.push(function(newkey){ if(window.isKeyDown(17) && newkey==74 && window.imageUploadBox_visible==true) { document.getElementById('image_file').focus(); return "preventDefault"; } });
		// CTRL+ENTER = submit image/gallery form
	window.onKeyDownEvents.push(function(newkey){ if(window.isKeyDown(17) && newkey==13) { if(window.createGalleryBox_visible==true) document.getElementById('newgallery_submit').onclick(); else if(window.imageUploadBox_visible==true) document.getElementById('image_submit').click();  return "preventDefault"; } });
		// [right arrow key] = next image
	window.onKeyDownEvents.push(function(newkey){ if(newkey==39 && document.getElementById("slideshow_showpic_frame") && !slideshow_isPreloading && !setting_image) { md_bounceicon(4,2); previmage(); return "preventDefault"; } });
		// [left arrow key] = previous image
	window.onKeyDownEvents.push(function(newkey){ if(newkey==37 && document.getElementById("slideshow_showpic_frame") && !slideshow_isPreloading && !setting_image) { md_bounceicon(0,2); previmage(); return "preventDefault"; } });
		// [esc] = close slideshow
	window.onKeyDownEvents.push(function(newkey){ if(newkey==27 && document.getElementById("slideshow_showpic_frame") && !slideshow_isPreloading && !setting_image) { showpic_stop(); return "preventDefault"; } });
		// [v] = download iamge
	window.onKeyDownEvents.push(function(newkey){ if(newkey==86 && document.getElementById("slideshow_showpic_frame") && !slideshow_isPreloading && !setting_image) { imagePOP(); return "preventDefault"; } });
		// [d] = download iamge
	window.onKeyDownEvents.push(function(newkey){ if(newkey==68 && document.getElementById("slideshow_showpic_frame") && !slideshow_isPreloading && !setting_image) { slideshow_imageDL(); return "preventDefault"; } });
		// [del] = delete image
	window.onKeyDownEvents.push(function(newkey){
		if(newkey==46 && document.getElementById("slideshow_showpic_frame") && !slideshow_isPreloading && !setting_image){
			deleteimage( parseInt(images[currentimage].substring(images[currentimage].lastIndexOf("id=")+3, images[currentimage].length)) );
			return "preventDefault";
		}
	});
	
	document.oncontextmenu = function(e) { return false; };
	//document.onmousedown = function(e) { if(!e) e=window.event; if(e.returnValue) e.returnValue=false; return false; };
	document.getElementById("gallery_display").onselectstart = function() { return false; };
	document.getElementById("gallery_display").onmousedown = function(e) { if(!e) e=window.event; if(e.returnValue) e.returnValue=false; return false; };
	
	xmlhttp_get(site_root+"gallery/?ext=accesslevel&sid="+Math.random(), "accesslevel", "setAccessLevel();");
	window.setAccessLevel = function() {
		window.accesslevel = xmlhttp_data["accesslevel"].responseText;
	};
	
	var divs = document.getElementsByTagName("div");
	for(var n in divs) {
		var c = divs[n];
		if(c && c.className && c.className.indexOf("gallery_display_row") > -1) {
			c.onclick = galleryItemClick;
			c.onmousedown = galleryItemMousedown;
			c.onmouseup = galleryItemMouseup;
			c.onmousemove = galleryItemMousemove;
			c.oncontextmenu = function(e) { return false; };
		}
		else if(c && c.className && c.id.indexOf("gallery_display_image") > -1) {
			c.onclick = galleryImageClick;
			c.onmousedown = galleryImageMousedown;
			c.onmouseup = galleryImageMouseup;
			c.onmousemove = galleryImageMousemove;
			c.oncontextmenu = function(e) { return false; };
		}
	}
	window.gallery_onloadOld();
}

// gallery displays:

function galleryItemClick(e) {
	if(!e) e=window.event;

	if(e.returnValue)
		e.returnValue = false;
	return false;
}

function galleryItemMousedown(e) {
	if(!e) e=window.event;
	
	if(e.returnValue)
		e.returnValue = false;
	return false;
}

function galleryItemMouseup(e) {
	if(!e) e=window.event;
	//if((e.which&&e.which==2)||(e.button&&e.button==2)) {		//this would be for right clicking. let's do CNTRL-click (keyCode=17)
	if(window.isKeyDown(17) || ((e.which&&e.which==2)||(e.button&&e.button==2))) {
		/*
		if(window.gallery_contextmenu_current != null) {
			document.body.removeChild(window.gallery_contextmenu_current);
			document.onmousedown = window.gallery_contextmenu_current.onmousedownOld;
			window.gallery_contextmenu_current = null;
		}
		*/
		var idParts = this.id.split("_");
		this.itemId = parseInt(idParts[idParts.length-1]);
		this.contextMenu = document.createElement("div");
		this.contextMenu.id = "gallery_contextMenu_"+this.itemId;
		this.contextMenu.className = "galleryItemContextMenu";
		this.contextMenu.style.position = "absolute";
		this.contextMenu.style.left = (e.pageX?e.pageX:(e.clientX+document.body.scrollLeft))+"px";
		this.contextMenu.style.top = (e.pageY?e.pageY:(e.clientY+document.body.scrollTop))+"px";
		window.gallery_contextmenu_current = this.contextMenu;
		window.gallery_contextMenu_onmousedownOld = document.onmousedown ? document.onmousedown : function(e) {};
		setTimeout("document.onmousedown = function() { setTimeout(\"if(document.getElementById('gallery_contextMenu_"+this.itemId+"')) { document.getElementById('gallery_contextMenu_"+this.itemId+"').location_parentElement.removeChild(document.getElementById('gallery_contextMenu_"+this.itemId+"')); } document.onmousedown = window.gallery_contextMenu_onmousedownOld;\", 200); return false; };", 200);
		var iHTML = "<div class=\"contextMenuItem\" onclick=\"SimpleQuick_slideshow("+this.itemId+"); window.SimpleQuick_slideshow_gallery_current="+this.itemId+";\" onmouseover=\"className+=' hover';\" onmouseout=\"if(className.indexOf(' hover') > -1) className=className.substring(0, className.indexOf(' hover'));\">View Slideshow</div>";
		if(window.accesslevel=="superadmin")
			iHTML += "<div class=\"contextMenuItem\" onclick=\"deletegallery("+this.itemId+");\" onmouseover=\"className+=' hover';\" onmouseout=\"if(className.indexOf(' hover') > -1) className=className.substring(0, className.indexOf(' hover'));\">Delete Gallery</div>";
		iHTML += "<div class=\"contextMenuItem\" onclick=\"showHideImageUploadBox("+this.itemId+");\" onmouseover=\"className+=' hover';\" onmouseout=\"if(className.indexOf(' hover') > -1) className=className.substring(0, className.indexOf(' hover'));\">Add Images</div>";
		iHTML += "<div class=\"contextMenuItem\" onclick=\"gallery_about("+this.itemId+");\" onmouseover=\"className+=' hover';\" onmouseout=\"if(className.indexOf(' hover') > -1) className=className.substring(0, className.indexOf(' hover'));\">About...</div>";
		this.contextMenu.innerHTML = iHTML;
		
		this.contextMenu.location_parentElement = document.body;
		this.contextMenu.location_parentElement.appendChild(this.contextMenu);
		//document.body.appendChild(this.contextMenu);
	}
	else {
		var idParts = this.id.split("_");
		setTimeout("document.getElementById(\""+this.id+"\").onmouseout();", 1000);
		SimpleQuick_slideshow( parseInt(idParts[idParts.length-1]) );
		window.SimpleQuick_slideshow_gallery_current = parseInt(idParts[idParts.length-1]);
	}
	if(e.returnValue)
		e.returnValue = false;
	return false;
}

function galleryItemMousemove(e) {
	if(!e) e=window.event;
	
	if(e.returnValue)
		e.returnValue = false;
	return false;
}


// gallery images:

function galleryImageClick(e) {
	if(!e) e=window.event;
	if((e.button&&e.button==2) || (e.which&&e.which==2)) {
		//alert(e.pageX + "," + e.pageY);
	}
	else {
		SimpleQuick_slideshow();
	}
}

function galleryImageMousedown(e) {
	if(!e) e=window.event;
	
}

function galleryImageMouseup(e) {
	if(!e) e=window.event;
	
}

function galleryImageMousemove(e) {
	if(!e) e=window.event;
	
}



window.imageUploadBox_visible = false;
function showHideImageUploadBox(forceGalleryid) {
	//window.showHideImageUploadBox_bodyOverflowOld = document.documentElement ? document.documentElement.style.overflow : document.body.style.overflow;
	//document.documentElement ? document.documentElement.style.overflow = "hidden" : document.body.style.overflow = "hidden";
	
	if(window.imageUploadBox_visible==false) {
		window.imageUploadBox_visible = true;
		if(window.createGalleryBox_visible==true)
			showHideCreateGalleryBox();
		document.getElementById("gallery_display").style.overflow = "hidden";
		window.showHideImageUploadBox_dimmer = document.createElement("div");
		window.showHideImageUploadBox_dimmer.style.cssText = "position:absolute; top:0px; left:0px; width:100%; height:100%; background:#000000; opacity:0.8; filter:alpha(opacity=80); display:block; z-index:999;";
		window.showHideImageUploadBox_dimmer.onclick = showHideImageUploadBox;
		document.getElementById('w3c').appendChild(window.showHideImageUploadBox_dimmer);

		var box = document.getElementById('create_image');
		box.style.cssText = "position:absolute; display:block; top:100px; left:50%; border:4px solid #88BBFF; background:#FFFFFF; width:22em; height:auto; text-align:center; z-index:1000; margin-left:-11em;";
		box.style.display="block";
		if(forceGalleryid) {
			var opts = document.getElementById("image_galleryid").getElementsByTagName("option")
			for(var i in opts) {
				if(opts[i] && opts[i].value && opts[i].value==forceGalleryid)
					opts[i].selected = true;
				else
					opts[i].selected = false;
			}
		}
				
	}
	else {
		window.imageUploadBox_visible = false;
		document.getElementById("gallery_display").style.overflow = "auto";
		document.getElementById('w3c').removeChild(window.showHideImageUploadBox_dimmer);
		
		var box = document.getElementById('create_image');
		box.style.display="none";
	}
}


window.createGalleryBox_visible = false;
function showHideCreateGalleryBox() {
	//window.showHideCreateGalleryBox_bodyOverflowOld = document.documentElement ? document.documentElement.style.overflow : document.body.style.overflow;
	//document.documentElement ? document.documentElement.style.overflow = "hidden" : document.body.style.overflow = "hidden";
	
	if(window.createGalleryBox_visible==false) {
		window.createGalleryBox_visible = true;
		if(window.imageUploadBox_visible==true)
			showHideImageUploadBox();
		document.getElementById("gallery_display").style.overflow = "hidden";
		window.showHideCreateGalleryBox_dimmer = document.createElement("div");
		window.showHideCreateGalleryBox_dimmer.style.cssText = "position:absolute; top:0px; left:0px; width:100%; height:100%; background:#000000; opacity:0.8; filter:alpha(opacity=80); display:block; z-index:999;";
		window.showHideCreateGalleryBox_dimmer.onclick = showHideCreateGalleryBox;
		document.getElementById('w3c').appendChild(window.showHideCreateGalleryBox_dimmer);

		var box = document.getElementById('create_gallery');
		box.style.cssText = "position:absolute; display:block; top:50%; left:50%; border:4px solid #88BBFF; background:#FFFFFF; width:22em; height:14em; text-align:center; z-index:1000; margin-top:-7em; margin-left:-11em;";
		box.style.display="block";
		//box.style.display = box.style.display=="block" ? "none" : "block";
	}
	else {
		window.createGalleryBox_visible = false;
		document.getElementById("gallery_display").style.overflow = "auto";
		document.getElementById('w3c').removeChild(window.showHideCreateGalleryBox_dimmer);
		
		var box = document.getElementById('create_gallery');
		box.style.display="none";
	}
}

function gallery_about(galleryid, xmlhttpid) {
	if(!xmlhttpid) {
		xmlhttp_get(site_root+"gallery/?ext=json_gallery_list&sid="+Math.random(), "gallery_about_"+galleryid, "gallery_about("+galleryid+",\"gallery_about_"+galleryid+"\");");
		return true;
	}
	var JSONtext = xmlhttp_data[xmlhttpid].responseText;
	var JSON = eval('('+JSONtext+')');
	var gallery = JSON["galleries"][galleryid];
	var desc = gallery['description'];
	while(desc.indexOf("\\'") > -1)
		desc = desc.replace("\\'","'");
	alert2("<div style=\"font-weight:bold; border-bottom:1px solid #777777;\">"+gallery['name']+":</div>"+escape(desc));
}

