var items = new Array();							//array of content arrays
var item_ids = new Array();						//array of content_ids (photo_id)
var gallery_id = null;								//current gallery_id
var blog_id = null;										//current blog_id
var num_items = null;									//number of piecies of content
var current_selected_item = null;			//currently selected photo id
var user_relation;										//string saying what relation this user is to this site (owner,moderator,friend,etc...)
var user_id;													//user_id of the user accessing this page
var loading_image_url = '';
var ajax_url = '';
var max_width = null;									//max width of photo container
var max_height = null;								//max height of photo container
var current_item_index = null;				//index number of current_selected_item in item_ids
var current_nav = null;								//index of photo to current starting gallery nav
var num_nav = null;										//number of photos to show in gallery nav
var current_site_url = null;					//CURRENT_SITE_URL of current page
var blog_owner = null;
var refresh_gallery_ads = null;
var refresh_custom_function = null;



function init_gallery(tmp_gal_id,tmp_content_id,tmp_blog_id,tmp_items,tmp_items_ids,
                      loading_image,tmp_ajax_url,tmp_user_id,tmp_user_relation,
                      tmp_max_width,tmp_max_height,tmp_start_nav,tmp_num_nav,
                      tmp_cur_site_url, tmp_blog_owner, tmp_refresh_ads, tmp_num_photos,
                      tmp_refresh_custom_function) {
	items = tmp_items;
	item_ids = tmp_items_ids;
	gallery_id = tmp_gal_id;
	current_selected_item = tmp_content_id;
	blog_id = tmp_blog_id;
	loading_image_url = loading_image;
	ajax_url = tmp_ajax_url;
	user_id = tmp_user_id;
	user_relation = tmp_user_relation;
	max_width = tmp_max_width;
	max_height = tmp_max_height;
	current_nav = tmp_start_nav;
	num_nav = tmp_num_nav;
	current_site_url = tmp_cur_site_url;
	blog_owner = tmp_blog_owner;
	refresh_gallery_ads = tmp_refresh_ads;
	refresh_custom_function = tmp_refresh_custom_function;
	
	num_items = tmp_num_photos;
	
	//preload loading_image_url
	var preload_image = new Image();
	preload_image.src = loading_image_url;
	
	//load_content();
}


function load_content() {
	showGalleryLoading();
	
	var params = 'a=load_content_item'
								+ '&gallery_id=' + gallery_id 
								+ '&photo_id=' + current_selected_item
								+ '&blog_id=' + blog_id
								+ '&user_relation=' + user_relation
								+ '&user_id=' + user_id
								+ '&max_width=' + max_width
								+ '&max_height=' + max_height
								+ '&current_site_url=' + current_site_url
								+ '&ms=' + new Date().getTime();
	
	YAHOO.util.Connect.asyncRequest(
		'GET',
		ajax_url + '?' + params,
		{
			success : handle_load_content,
			failure : galleryAjaxReportError
		}
	);
}


function handle_load_content(req) {
	//alert(req.responseText);
	
	var script_tag_loc = req.responseText.search(/\<script\slanguage="javascript"\stype="text.javascript"\>/);
	var script_end_loc = req.responseText.search(/<\/script\>/);

	if (script_tag_loc != -1) {
		var j_script = req.responseText.substring(script_tag_loc+53, script_end_loc);
		
		if(j_script != '') {
			eval(j_script);
		}
	}
	
	document.getElementById('dynamic_gallery_content').innerHTML = req.responseText;
	
	// Check for option to refresh standard ads on page
	if (refresh_gallery_ads) {
		// Refresh leaderboard ad
		oneReloadLeaderboardAd();
		
		// Refresh right page ad
		oneReloadUsersubTdContent();
	}
	
	// Check for custom refresh function to call
	if (refresh_custom_function) {
		if (window.onePhotoAdRefresh) {
			onePhotoAdRefresh();
		}
	}
}


function load_next_content(array_index) {
	blurGallery();
	//alert('loading index ' + array_index + ' of ' + num_items);
	if (!array_index) {
		return;
	}
	current_selected_item = array_index;
	load_content();
	
	/*
	if (array_index < num_items && array_index >= 0) {
		current_item_index = array_index;
		
		//update to new content
		current_selected_item = item_ids[current_item_index];

		//load next image
		load_content();
	}
	*/
}


function load_gallery_nav() {
	showNavLoading();
	
	var params = 'a=load_gallery_nav'
								+ '&gallery_id=' + gallery_id 
								+ '&current_nav=' + current_nav
								+ '&num_nav=' + num_nav
								+ '&blog_id=' + blog_id
								+ '&user_relation=' + user_relation
								+ '&user_id=' + user_id
								+ '&current_site_url=' + current_site_url
								+ '&ms=' + new Date().getTime();
	
	YAHOO.util.Connect.asyncRequest(
		'GET',
		ajax_url + '?' + params,
		{
			success : handle_load_gallery_nav,
			failure : galleryAjaxReportError
		}
	);
}


function handle_load_gallery_nav(req) {
	//alert(req.responseText);
	
	document.getElementById('dynamic_gallery_nav_content').innerHTML = req.responseText;
}


function load_previous_nav(current_start) {
	blurGallery();
	
	//only if we are not already at 0
	if (current_nav > 0) {
		current_nav = current_start - num_nav;

		if (current_nav < 0) {
			current_nav = 0;
		}
		
		load_gallery_nav();
	}
}


function load_next_nav(current_end) {
	blurGallery();
	
	//only if we are not already at 0
	if (current_nav < (num_items-1)) {
		current_nav = current_end + 1;
		
		load_gallery_nav();
	}
}


function load_gallery_image(pid) {
	current_selected_item = pid;
	
	load_content();
}


/*******************************************************************************
 *	Call this function to blur the screen elements when a link is clicked.
 */
function blurGallery() {
	document.getElementById('gallery_container').blur();
}


function galleryAjaxReportError(request) {
	alert('Sorry! There was an error.');
}


/*******************************************************************************
 *	Displays the loading screen and image while waiting for an ajax request.
 */
function showGalleryLoading() {
	blurGallery();

	var parentElm = document.getElementById('dynamic_gallery_content');
	var coordinates = getElementCoordinates(parentElm);

	var loadingdiv = document.createElement("div");
	loadingdiv.className = 'photoGalleryAjaxIndicator';
	loadingdiv.style.background = 'white';
	loadingdiv.style.filter = 'alpha(opacity=30)';
	loadingdiv.style.opacity = '.3';
	loadingdiv.style.width = parentElm.offsetWidth + 'px';
	loadingdiv.style.height = parentElm.offsetHeight + 'px';
	loadingdiv.style.position = 'absolute';
	loadingdiv.style.top = coordinates.y + 'px';
	loadingdiv.style.left = coordinates.x + 'px';
	loadingdiv.style.verticalAlign = 'middle';
	loadingdiv.style.textAlign = 'center';
	loadingdiv.innerHTML = '<img src="' + loading_image_url + '" '
												+ 'style="position:relative; top:140px;" />';

	//add to container
	parentElm.appendChild(loadingdiv);
}


/*******************************************************************************
 *	Displays the loading screen and image while waiting for an ajax request.
 */
function showNavLoading() {
	blurGallery();

	var parentElm = document.getElementById('dynamic_gallery_nav_content');
	var coordinates = getElementCoordinates(parentElm);

	var loadingdiv = document.createElement("div");
	loadingdiv.style.background = 'transparent';
	loadingdiv.style.filter = 'alpha(opacity=50)';
	loadingdiv.style.opacity = '.5';
	loadingdiv.style.width = parentElm.offsetWidth + 'px';
	loadingdiv.style.height = parentElm.offsetHeight + 'px';
	loadingdiv.style.position = 'absolute';
	loadingdiv.style.top = coordinates.y + 'px';
	loadingdiv.style.left = coordinates.x + 'px';
	loadingdiv.style.verticalAlign = 'middle';
	loadingdiv.style.textAlign = 'center';
	loadingdiv.innerHTML = '<img src="' + loading_image_url + '" '
												+ 'style="position:relative; top:50px;" />';

	//add to container
	parentElm.appendChild(loadingdiv);
}


/*******************************************************************************
 *	Get the x and y coordinates of the given element.
 */
function getElementCoordinates(obj) {
	var point = { x: 0, y: 0 };

	while(obj) {
	  point.x += obj.offsetLeft ;
	  point.y += obj.offsetTop;
	  obj = obj.offsetParent;
	}

	return point;
}


function post_photo_comment() {
	if (user_id != 0) {
		var postDiv = document.getElementById('gallery_add_comment_container');
		postDiv.style.display = 'block';

		document.getElementById('new_photo_comment').focus();
	}
}


function hide_comment_form() {
	var postDiv = document.getElementById('gallery_add_comment_container');
	postDiv.style.display = 'none';
}


function submit_photo_comment() {
	showGalleryLoading();
	
	var photo_comment = document.forms.add_photo_comment_form.new_photo_comment.value;

	var params = 'a=post_photo_comment'
								+ '&gallery_id=' + gallery_id 
								+ '&photo_id=' + current_selected_item
								+ '&blog_id=' + blog_id
								+ '&user_relation=' + user_relation
								+ '&user_id=' + user_id
								+ '&max_width=' + max_width
								+ '&max_height=' + max_height
								+ '&new_photo_comment=' + escape(photo_comment)
								+ '&ms=' + new Date().getTime()
								+ '&blog_owner=' + blog_owner;
	
	var request = YAHOO.util.Connect.asyncRequest(
		'POST',
		ajax_url,
		{
			success : handle_load_content,
			failure : galleryAjaxReportError
		},
		params
	);
}