// JavaScript Document
// Client functionality and checks for the Blog
//

// adds the HTML for the edit Blog interface
function showEditBlog(workspace_id, blog_id) {
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var send_data = 'do=get_edit_blog&blog_id=' + blog_id;
	
	var div_to_load = workspace_id;
	fetchData(url,send_data,div_to_load,'Loading...');
}

// removes the HTML for the edit Blog interface
function hideEditBlog(workspace_id) {
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var send_data = 'do=get_edit_list';
	
	fetchData(url,send_data,workspace_id,'One moment...');
}

// delete Blog
function deleteBlog(div_to_load, blog_id, site_id) {
	var is_confirmed = confirm("CAREFUL: Do you really want to delete this blog? This will delete ALL posts and comments for this blog as well.");
	if (is_confirmed == true) {
		var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
		var send_data = 'do=delete_blog&blog_id=' + blog_id + '&site_id=' + site_id;
		fetchData(url,send_data,div_to_load,'One moment...');
		return;
	} else  {
		// user cancelled the delete
		return;
	}
	
}

// displays the new blog post form
function showNewPost(workspace_id, blog_id, site_id) {
	editPost(blog_id,'',workspace_id,site_id);
}

// adds the HTML for an add/view photo interface
function showEditPhoto(blog_id, post_id, workspace_id, field_name, hide_function) {
	if (!hide_function) hide_function = 'hideEditPhoto';
	
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var persistfield = document.getElementById('post_photo');
	var persist_alignmentfield = document.getElementById('post_photo_alignment');
	var send_data = 'do=get_edit_photo&blog_id=' + blog_id + '&post_id=' + post_id + '&field_name=' + field_name + '&persist=' + persistfield.value + '&persist_alignment=' + persist_alignmentfield.value + '&hide_function=' + hide_function;
	
	var labeldiv = document.getElementById("photo_label");
	labeldiv.innerHTML='<input type="button" name="hide" class="buttontext" onclick="javascript:' + hide_function + '(\'' + blog_id + '\',\'' + post_id + '\',\'photo_container\',\'' + field_name + '\');" value="Hide Photo" /></a>';
	
	request = createRequest();
	request.onreadystatechange=function() {
		var object = document.getElementById(workspace_id);
		if (request.readyState == 4) {
			if (request.status == 200) {
				object.innerHTML = request.responseText;
				// execute PNG fix code for IE versions < 7

				var agent=navigator.userAgent.toLowerCase();
					if (agent.indexOf('msie') != -1) {
						var arVersion = navigator.appVersion.split("MSIE");
						var version = parseFloat(arVersion[1]);
						if ((version >= 5.5) && (version < 7) && (document.body.filters)) {
							
							// TO DO: figure out why our method shrinks the damn photo
							
						}
					}

			} else {
				alert("Error: Request status is " + request.status);
			}
		}
	}
	
	request.open('POST',url,true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(send_data);
}


// removes the HTML for an add/view photo interface
function hideEditPhoto(blog_id, post_id, workspace_id, field_name) {
	var labeldiv = document.getElementById("photo_label");
	if ((post_id != '') && (post_id != '0')) var post_button = 'Submit Changes';
		else var post_button = 'Submit';
	labeldiv.innerHTML='<input type="button" name="editphoto" class="buttontext" onclick="javascript:showEditPhoto(\'' + blog_id + '\',\'' + post_id + '\',\'photo_container\',\'blog_photo\');" value="Edit This Post\'s Photo" /> &nbsp;&nbsp; <input type="button" name="savepost" class="buttontext" onClick="javascript:savePost(\'edit_container\',\'' + blog_id + '\',\'' + post_id + '\')" value="' + post_button + '" />';
	
	// persist the selected photo id (if any) in a hidden field
	var picmenu = document.getElementById('existingimg_' + field_name);
	var alignmentmenu = document.getElementById('alignment');
	var persistfield = document.getElementById('post_photo');
	persistfield.value = picmenu.options[picmenu.selectedIndex].value;
	var alignment_persistfield = document.getElementById('post_photo_alignment');
	alignment_persistfield.value = alignmentmenu.options[alignmentmenu.selectedIndex].value;
	
	// remove the pic interface
	var object = document.getElementById(workspace_id);
	object.innerHTML = '';
}

// removes the HTML for an add/view photo interface in the Blog Preferences interface
function hidePreferencesPhoto(blog_id, post_id, workspace_id, field_name) {
	var labeldiv = document.getElementById("photo_label");
	labeldiv.innerHTML='<input type="button" name="edit" class="buttontext" onclick="javascript:showEditPhoto(\'' + blog_id + '\',\'' + post_id + '\',\'photo_container\',\'blog_photo\',\'hidePreferencesPhoto\');" value="Edit Intro Photo" />';
	
	// persist the selected photo id (if any) in a hidden field
	var picmenu = document.getElementById('existingimg_' + field_name);
	var alignmentmenu = document.getElementById('alignment');
	var persistfield = document.getElementById('post_photo');
	persistfield.value = picmenu.options[picmenu.selectedIndex].value;
	var alignment_persistfield = document.getElementById('post_photo_alignment');
	alignment_persistfield.value = alignmentmenu.options[alignmentmenu.selectedIndex].value;
	
	// remove the pic interface
	var object = document.getElementById(workspace_id);
	object.innerHTML = '';
}

function savePreferences(feedback_id, site_id, blog_id) {
	var title = document.getElementById("title").value;
	var introphoto = document.getElementById("post_photo").value;
	var photo_align = document.getElementById("post_photo_alignment").value;
	var intro = WebEditorGetContent()
	var is_private_object = document.getElementById("is_private");
	if (is_private_object.checked) var is_private = 1;
	   else var is_private = 0;
	var postsperpage = document.getElementById("postsperpage").value;
	var sectiondivider_object = document.getElementById('sectiondivider');
	var sectiondivider = sectiondivider_object.options[sectiondivider_object.selectedIndex].value;
	var date_format_object = document.getElementById('date_format');
	var date_format = date_format_object.options[date_format_object.selectedIndex].value;
	var time_offset_object = document.getElementById('time_offset');
	var time_offset = time_offset_object.options[time_offset_object.selectedIndex].value;
	var show_comments_object = document.getElementById('show_comments');
	var show_comments = show_comments_object.options[show_comments_object.selectedIndex].value;
	var expand_comments_object = document.getElementById("expand_comments");
	if (expand_comments_object.checked) var expand_comments = 1;
	   else var expand_comments = 0;
	var comment_pass = document.getElementById("comment_pass").value;
	var comment_email = document.getElementById("comment_email").value;
	var rss_type_object = document.getElementById('rss_type');
	var rss_type = rss_type_object.options[rss_type_object.selectedIndex].value;
	var rss_title = document.getElementById("rss_title").value;
	var rss_footer = document.getElementById("rss_footer").value;
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var send_data = 'do=save_preferences&site_id=' + site_id + '&blog_id=' + blog_id + '&title=' + escape(title) +
	  '&intro=' + escape(intro) + '&introphoto=' + introphoto + '&photo_align=' + photo_align +
	  '&is_private=' + is_private + '&postsperpage=' + escape(postsperpage) + '&sectiondivider=' + sectiondivider +
	  '&date_format=' + date_format + '&time_offset=' + time_offset + '&show_comments=' + show_comments +
	  '&expand_comments=' + expand_comments + '&comment_pass=' + escape(comment_pass) + '&comment_email=' + escape(comment_email) +
	  '&rss_type=' + rss_type + '&rss_title=' + escape(rss_title) + '&rss_footer=' + escape(rss_footer);

	fetchData(url,send_data,feedback_id,'Saving...');
}

function deleteCategory(div_to_load, site_id, blog_id, category_id) {
	var is_confirmed = confirm("Do you really want to delete this category?");
	if (is_confirmed == true) {
		var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
		var send_data = 'do=delete_category&blog_id=' + blog_id + '&category_id=' + category_id + '&site_id=' + site_id;
		fetchData(url,send_data,div_to_load,'Refreshing category List...');
		return;
	} else  {
		// user cancelled the delete
		return;
	}
}


// Save a post
function savePost(workspace_id, blog_id, post_id) {
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	
	// pull photo id and alignment
	var pid = document.getElementById('post_photo').value;
	var alignment = document.getElementById('post_photo_alignment').value;
	var content = WebEditorGetContent();
	var post_author = document.getElementById('post_author').value;
	var post_header = document.getElementById('post_header').value;
	var post_subheader = document.getElementById('post_subheader').value;
	var post_month = document.getElementById('month').options[document.getElementById('month').selectedIndex].value;
	var post_day = document.getElementById('day').options[document.getElementById('day').selectedIndex].value;
	var post_year = document.getElementById('year').options[document.getElementById('year').selectedIndex].value;
	var datestamp = post_year + '-' + post_month + '-' + post_day;
	var post_hour = document.getElementById('hour').options[document.getElementById('hour').selectedIndex].value;
	var post_minute = document.getElementById('minute').options[document.getElementById('minute').selectedIndex].value;
	var post_seconds = document.getElementById('seconds').options[document.getElementById('seconds').selectedIndex].value;
	var post_ampm = document.getElementById('ampm').options[document.getElementById('ampm').selectedIndex].value;
	if ((post_ampm == '1') && (post_hour != '12')) post_hour = parseInt(post_hour) + 12;
	var timestamp = post_hour + ':' + post_minute + ':' + post_seconds;
	
	var new_category = document.getElementById('post_newcategory').value;
	var selected_category_menu = document.getElementById('post_category');
	var selected_categories = '';
	if (selected_category_menu != null) {
		for (var i=0; i<selected_category_menu.length; i++) {
			if (selected_category_menu[i].selected) {
				selected_categories += ('::' + selected_category_menu.options[i].value);
			}
		}
	}

	var send_data = 'do=save_post&blog_id=' + escape(blog_id) + '&post_id=' + escape(post_id) + '&pid=' + escape(pid) + '&alignment=' + escape(alignment)
		 + '&content=' + escape(content) + '&post_author=' + escape(post_author) + '&post_header=' + escape(post_header) + '&post_subheader=' + escape(post_subheader) 
		 + '&datestamp=' + escape(datestamp) + '&timestamp=' + escape(timestamp) + '&selected_categories=' + escape(selected_categories) 
		 + '&new_category=' + escape(new_category);
	
	var div_to_load = workspace_id;
	fetchData(url,send_data,div_to_load,'Publishing...');
}

// Swap blog list - swap a list of blog posts after an archive menu change event
function refreshPostList(archive_menu, workspace_id, blog_id, admin_flag, site_id) {
	var date = archive_menu[archive_menu.selectedIndex].value; // selected archive date
	if (date == '') return;
		
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var send_data = 'do=get_refresh_post_list&blog_id=' + blog_id + '&date=' + date + '&admin_flag=' + admin_flag + '&site_id=' + site_id;
	
	var div_to_load = workspace_id;
	fetchData(url,send_data,div_to_load,'One moment...');
}

// local version
function refreshLocalPostList(archive_menu, blog_id, site_id, page, archive_flag, page_referrer) {
	var date = archive_menu[archive_menu.selectedIndex].value; // selected archive date
	if (date == '') return;
	
	refreshLocalPostListByMonth(date,blog_id,site_id,page,archive_flag,page_referrer);
}
	
// specialized local version
function refreshLocalPostListByMonth(date_string, blog_id, site_id, page, archive_flag, page_referrer) {
	if (page == '') page = '0';
	var url = '/blog.localajaxsocket.php';
	var send_data = 'do=get_refresh_post_list&blog_id=' + blog_id + '&date=' + date_string + '&site_id=' + site_id + '&archive_flag=' + archive_flag + '&page=' + page + '&page_referrer=' + page_referrer;
	
	request = createRequest();
	request.onreadystatechange=function() {
		var posts_container = document.getElementById('posts_container');
		var navbar_container = document.getElementById('navbar_container');
		var breadcrumb_container = document.getElementById('breadcrumb_container');
		if (request.readyState < 4) {
				posts_container.innerHTML='<span class="ajaxmessage">One moment...</span>';
		} else if (request.readyState == 4) {
			if (request.status == 200) {
				var responseArray = request.responseText.split('<data_separator>');
				breadcrumb_container.innerHTML = responseArray[0];
				navbar_container.innerHTML = responseArray[1];
				posts_container.innerHTML = responseArray[2];
			} else {
				alert("Error: Request status is " + request.status);
			}
		}
		
	}

	request.open('POST',url,true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(send_data);
}

function refreshLocalBlogList(site_id, page_referrer) {
	var url = '/blog.localajaxsocket.php';
	var send_data = 'do=get_refresh_blog_list&site_id=' + site_id + '&page_referrer=' + page_referrer;
	
	var div_to_load = 'blogspace';
	fetchData(url,send_data,div_to_load);
}


// Display a post's comments.
function showComments(blog_id, post_id, site_id, div_to_load, admin_flag) {
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var send_data = 'do=get_show_comments&blog_id=' + blog_id + '&post_id=' + post_id + '&site_id=' + site_id + '&admin_flag=' + admin_flag;

	fetchData(url,send_data,div_to_load,'Loading comments...');
}

// local version
function showCommentsLocal(blog_id, post_id, site_id, div_to_load, admin_flag) {
	var url = '/blog.localajaxsocket.php';
	var send_data = 'do=get_show_comments&blog_id=' + blog_id + '&post_id=' + post_id + '&site_id=' + site_id + '&admin_flag=' + admin_flag;

	fetchData(url,send_data,div_to_load);
}


// Remove a post's comments.
function hideComments(workspace_id) {
	var object = document.getElementById(workspace_id);
	object.innerHTML = '';
}

// Edit a post's comments.
function editComment(blog_id, post_id, comment_id, div_to_load, admin_flag) {
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var send_data = 'do=get_edit_comment&blog_id=' + blog_id + '&post_id=' + post_id + '&comment_id=' + comment_id + '&admin_flag=' + admin_flag;

	fetchData(url,send_data,div_to_load,'One moment...');
}

// edit a post
function editPost(blog_id, post_id, workspace_id, site_id) {
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var send_data = 'do=get_edit_post&blog_id=' + blog_id + '&post_id=' + post_id + '&site_id=' + site_id;
	request = createRequest();
	request.onreadystatechange=function() {
		var object = document.getElementById(workspace_id);
		if (request.readyState < 4) {
			object.innerHTML='<span class="ajaxmessage">Loading post details...</span>';
		} else if (request.readyState == 4) {
			if (request.status == 200) {
				var responseArray = request.responseText.split('<data_separator>');
				object.innerHTML = responseArray[0];
				
				// configure and create the webeditor for the new post
				WebEditorToolbar('content',{ toolbar1: "help formatblock fontname fontsize bold italic underline justifyleft justifycenter justifyright justifyfull", 
									toolbar2: "selectall removeformat clean insertorderedlist insertunorderedlist outdent indent insertmedia superscript subscript forecolor backcolor undo redo specialcharacter inserthorizontalrule createlink unlink spellcheck viewsource", 
									toolbar3: "createtable tableproperties insertrowhead insertrowfoot rowproperties insertrowabove insertrowbelow deleterow splitcellrows columnproperties insertcolumnleft insertcolumnright deletecolumn splitcellcolumns cellproperties insertcellleft insertcellright deletecell splitcell mergecells",
									fontname: { 'Arial': 'Arial, Helvetica, sans-serif',
												'Arial Black': 'Arial Black',
												'Comic Sans MS': 'Comic Sans MS',
												'Courier New': 'Courier New, Courier, monospace',
												'Impact': 'Impact, Charcoal, sans-serif',
												'Times New Roman': 'Times New Roman, Times, serif',
												'Trebuchet MS': 'Trebuchet MS, Helvetica, sans-serif',
												'Symbol': 'Symbol',
												'Webdings': 'Webdings',
												'Wingdings': 'Wingdings, Zapf Dingbats'
											  },
									container: document.getElementById('toolbar_container')
									}
					);
				WebEditor('content',responseArray[1],{onEnter: '<br />', format: 'xhtml', stylesheet: '/hardcore/webeditor/editor_style.css', height: '200', manager: '', container: document.getElementById('editor_container')});
				WebEditorSkin("blue");
			} else {
				alert("Error: Request status is " + request.status);
			}
		}
	}
	
	request.open('POST',url,true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(send_data);
}

// displays blog preferences
function showPreferences(workspace_id, blog_id, site_id) {
	var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
	var send_data = 'do=get_blog_preferences&blog_id=' + blog_id + '&site_id=' + site_id;
	request = createRequest();
	request.onreadystatechange=function() {
		var object = document.getElementById(workspace_id);
		if (request.readyState == 4) {
			if (request.status == 200) {
				var responseArray = request.responseText.split('<data_separator>');
				object.innerHTML = responseArray[0];
				
				// configure and create the webeditor for the new post
				WebEditorToolbar('content',{ toolbar1: "help formatblock fontname fontsize bold italic underline justifyleft justifycenter justifyright justifyfull", 
									toolbar2: "selectall removeformat clean insertorderedlist insertunorderedlist outdent indent insertmedia superscript subscript forecolor backcolor undo redo specialcharacter inserthorizontalrule createlink unlink spellcheck viewsource", 
									toolbar3: "createtable tableproperties insertrowhead insertrowfoot rowproperties insertrowabove insertrowbelow deleterow splitcellrows columnproperties insertcolumnleft insertcolumnright deletecolumn splitcellcolumns cellproperties insertcellleft insertcellright deletecell splitcell mergecells",
									fontname: { 'Arial': 'Arial, Helvetica, sans-serif',
												'Arial Black': 'Arial Black',
												'Comic Sans MS': 'Comic Sans MS',
												'Courier New': 'Courier New, Courier, monospace',
												'Impact': 'Impact, Charcoal, sans-serif',
												'Times New Roman': 'Times New Roman, Times, serif',
												'Trebuchet MS': 'Trebuchet MS, Helvetica, sans-serif',
												'Symbol': 'Symbol',
												'Webdings': 'Webdings',
												'Wingdings': 'Wingdings, Zapf Dingbats'
											  },
									container: document.getElementById('toolbar_container')
									}
					);
				WebEditor('content',responseArray[1],{onEnter: '<br />', format: 'xhtml', stylesheet: '/hardcore/webeditor/editor_style.css', height: '200', manager: '', container: document.getElementById('editor_container')});
				WebEditorSkin("blue");
			} else {
				alert("Error: Request status is " + request.status);
			}
		}
	}
	
	request.open('POST',url,true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(send_data);

}

// delete a post
function deletePost(div_to_load, blog_id, post_id, month, year, site_id) {
	var is_confirmed = confirm("Do you really want to delete this post? This will delete all comments for the post as well.");
	if (is_confirmed == true) {
		var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
		var send_data = 'do=delete_post&blog_id=' + blog_id + '&post_id=' + post_id + '&site_id=' + site_id + '&month=' + month + '&year=' + year;
		fetchData(url,send_data,div_to_load,'One moment...');
		return;
	} else  {
		// user cancelled the delete
		return;
	}
}

// delete a comment
function deleteComment(div_to_load, blog_id, post_id, comment_id, site_id) {
	var is_confirmed = confirm("Do you really want to delete this comment?");
	if (is_confirmed == true) {
		var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
		var send_data = 'do=delete_comment&blog_id=' + blog_id + '&post_id=' + post_id + '&site_id=' + site_id + '&comment_id=' + comment_id;
		fetchData(url,send_data,div_to_load);
		return;
	} else  {
		// user cancelled the delete
		return;
	}
}

// Save a comment
function saveComment(blog_id, post_id, comment_id, div_to_load, site_id, admin_flag, page_referrer) {
	var author = document.getElementById('comment_name_' + post_id + '_' + comment_id).value;
	var content = document.getElementById('comment_content_' + post_id + '_' + comment_id).value;
	if (document.getElementById('comment_pass_' + post_id + '_' + comment_id) != null) var pass = document.getElementById('comment_pass_' + post_id + '_' + comment_id).value;
	   else var pass = '';
	var photo = document.getElementById('photo_value_' + post_id + '_' + comment_id).value;
	
	if (author == '') {
		alert("Please enter a name to identify the author of this content");
	} else if (content == '') {
		alert("Empty comment!");
	} else {
		if (admin_flag == '1') var url = '/sitebuilder/controlpanel/blog.ajaxsocket.php';
		   else var url = '/blog.localajaxsocket.php';
		var send_data = 'do=save_comment&blog_id=' + blog_id + '&post_id=' + post_id + '&comment_id=' + comment_id + '&author=' + author + '&content=' + content + '&pass=' + pass + '&photo=' + photo + '&site_id=' + site_id + '&admin_flag=' + admin_flag;
		if (admin_flag != '1') send_data += '&page_referrer=' + page_referrer;
//alert("send_data: " + send_data);
		fetchData(url,send_data,div_to_load,'Publishing comment...');
	}
}

// Render a Blog
function renderBlog(div_to_load, blog_id, site_id, page_referrer) {
	var url = '/blog.localajaxsocket.php';
	var send_data = 'do=render_blog&blog_id=' + blog_id + '&site_id=' + site_id + '&page_referrer=' + page_referrer;
	fetchData(url,send_data,div_to_load,'Loading...');
}

// Open up interface to post a comment
function postCommentLocal(blog_id, post_id, site_id, div_to_load, admin_flag, page_referrer) {
	var url = '/blog.localajaxsocket.php';
	var send_data = 'do=get_edit_comment&blog_id=' + blog_id + '&post_id=' + post_id + '&site_id=' + site_id + '&admin_flag=' + admin_flag + '&page_referrer=' + page_referrer;

	fetchData(url,send_data,div_to_load);
}


// starts the graphical progress indicator
function startProgress(container) {
	// start the graphical progress indicator
	var progressicon = top.document.createElement("img");
	progressicon.setAttribute("src", "/images/indicator.gif");
	var container_div = top.document.getElementById(container);
	clearText(container_div);
	container_div.appendChild(progressicon);
}

// Displays the link bar for subscribing to a blog's RSS feed
function getRssSubscribe(container, blog_id, site_id) {
	var url = '/blog.localajaxsocket.php';
	var send_data = 'do=get_rss_subscribe&blog_id=' + blog_id + '&site_id=' + site_id;

	fetchData(url,send_data,container);
}

// Displays the link bar for subscribing to a blog's RSS feed
function closeRss(container) {
	var container_div = document.getElementById(container);
	container_div.innerHTML = '';
}


// starts the graphical progress indicator
function startProgressLocal(container) {
	// start the graphical progress indicator
	var progressicon = parent.document.createElement("img");
	progressicon.setAttribute("src", "http://www.wedshare.com/images/indicator.gif");
	var container_div = parent.document.getElementById(container);
	clearText(container_div);
	container_div.appendChild(progressicon);
}
