// JavaScript Document

// ---------------------------------------------------
// WRITE
// ---------------------------------------------------
	
	// Create a new Tutorial
	
	function pub_createTut() {

		if(!isloadingtab) {
		
			isloadingtab = true;
		
			$('newtut_title').readonly = true;
			$('newtut_category').readonly = true;
			$('newtut_terms').readonly = true;
			
			FxScrollObjectFast.toElement(document.body).chain(function() {
				
				dyn_topload_start();
				$('publish_statusobj').setText('Creating Tutorial...');
				
				new Ajax('/xhr/publish/newtut/', {
					method: 'post',
					data: $('publish_newtutform'),
					update: $('col_main'),
					evalScripts: true,
					onComplete: function() {
						setcurrenttab();
						dyn_topload_stop();
						isloadingtab = false;
					}
				}).request();
				
			});
			
		}
		
		return false;
	
	}
	
	// Set Category Image
	
	function pub_updatesmallcatimg() {
		var tmpid = $('edittut_category').getValue();
		$('edittut_crtcatimg').src = '/images/minicats/' + $('pubstart_catid' + tmpid).getProperty('label');
		if($('publish_avtype')) {
			if($('publish_avtype').innerHTML == 'Category Default') {
				$('publish_avimg').src = 'http://www.pixel2life.com/images/cat_avatar/' + tmpid + '.gif';	
			}
		}
	}
	
	// Avatar functions
	
	function pub_usedefaultav() {
		confirmbox_open(msglib[151],'js','return pub_usedefaultav_do();','js','return confirmbox_close();',false);
		return false;
	}
	function pub_usedefaultav_do() {
		$('publish_statusobj').setText('Defining Tutorial Avatar...');
		dyn_topload_start();
		confirmbox_close();
		new Ajax('/xhr/publish/setavatar/', {
			method: 'post',
			data: 'custom=2',
			update: 'sdleft_publish_avatarbox',
			onComplete: function() {
				dyn_topload_stop();
				$('publish_statusobj').setText('Ready');
				successbox_open('Your avatar was replaced successfully!');
			}
		}).request();
		return false;
	}
	var pub_var_avoriginalheight = 1;
	function pub_uplnewav() {
		pub_var_avoriginalheight = $('sdleft_publish_avatarbox').getStyle('height');
		$('sdleft_publish_avatarbox').setStyle('height',pub_var_avoriginalheight);
		$('publish_statusobj').setText('Loading Avatar Upload Form...');
		$('sdleft_publish_avatarbox').setHTML('Loading...');
		dyn_topload_start();
		new Ajax('/xhr/publish/getavatarfrm/', {
			method: 'post',
			data: 'avform=2',
			onComplete: function(resp) {
				new Fx.Style('sdleft_publish_avatarbox', 'height', {duration:250}).start(200).chain(function() {
					$('sdleft_publish_avatarbox').setHTML(resp);
					dyn_topload_stop();
					$('publish_statusobj').setText('Ready');
				});
			}
		}).request();
		return false;
	}
	function pub_uplnewav_cancel() {
		$('publish_statusobj').setText('Loading Avatar Info...');
		$('sdleft_publish_avatarbox').setHTML('Loading...');
		dyn_topload_start();
		new Ajax('/xhr/publish/getavatarfrm/', {
			method: 'post',
			data: 'avform=1',
			onComplete: function(resp) {
				new Fx.Style('sdleft_publish_avatarbox', 'height', {duration:250}).start(pub_var_avoriginalheight).chain(function() {
					$('sdleft_publish_avatarbox').setHTML(resp);
					dyn_topload_stop();
					$('publish_statusobj').setText('Ready');
				});
			}
		}).request();
		return false;
	}
	function pub_uplnewav_do() {
		if(!$('frmpublishavupl').contentWindow.ispossibleupl()) {
			warningbox_open('Please select a file to upload!');
		} else {
			$('publish_statusobj').setText('Uploading Avatar...');
			dyn_topload_start();
			$('frmpublishavupl').contentWindow.submittut();
		}
		return false;
	}
	function pub_avuplcallback(errno, errmsg) {
		if(errno) {
			new Ajax('/xhr/publish/setavatar/', {
				method: 'post',
				data: 'custom=1',
				onComplete: function() {
					pub_uplnewav_cancel();
					successbox_open('Your avatar was uploaded successfully');
				}
			}).request();
		} else {
			warningbox_open(errmsg);
		}
		dyn_topload_stop();
		$('publish_statusobj').setText('Ready');
	}
	
	// Set Tutorial Access Status
	
	function pub_setaccessstatus() {
		$('publish_statusobj').setText('Defining Tutorial Access...');
		dyn_topload_start();
		new Ajax('/xhr/publish/settutaccess/', {
			method: 'post',
			data: $('publish_sdform'),
			onComplete: function() {
				dyn_topload_stop();
				$('publish_statusobj').setText('Ready');
				successbox_open('The tutorial access was set successfully!');
			}
		}).request();
		return false;
	}
	
	// Save changes
	
	function pub_saveTut() {

		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Saving Tutorial...');
			if($('publish_infotext')) {$('publish_infotext').remove();}
			if($('sdleft_publish_recoverybox')) {$('sdleft_publish_recoverybox').remove();}
			
			if(currentab == 'editor') {
				
				//tinyMCE.activeEditor.setProgressState(1);
				
				unloadPublish();
				
				new Ajax('/xhr/publish/savetut/', {
					method: 'post',
					//data: 'publishwritearea=' + tinyMCE.activeEditor.getContent(),
					data: $('publishwriteform'),
					onComplete: function(response) {
						dyn_topload_stop();
						isloadingtab = false;
						resp = response.split("|");
						if(resp[0] == 1) {
							successbox_open(resp[1]);
							$('publish_statusobj').setText('Saved Successfully!');
							(function() {
								$('publish_statusobj').setText('Ready');
							}).delay(2000);
							/*(function() {
								tinyMCE.activeEditor.setProgressState(0);
							}).delay(750);*/
							tinyMCE.idCounter = 0;
							tinyMCE.execCommand('mceAddControl',false,'publishwritearea');
							tinyMCE.switchClassCache = [];
						} else {
							warningbox_open(resp[1]);
							$('publish_statusobj').setText('Ready');
							tinyMCE.idCounter = 0;
							tinyMCE.execCommand('mceAddControl',false,'publishwritearea');
							tinyMCE.switchClassCache = [];
						}
					}
				}).request();
				
			} else {
			
				new Ajax('/xhr/publish/savetut/', {
					method: 'post',
					data: $('publishwriteform'),
					onComplete: function(response) {
						dyn_topload_stop();
						isloadingtab = false;
						resp = response.split("|");
						if(resp[0] == 1) {
							successbox_open(resp[1]);
							$('publish_statusobj').setText('Saved Successfully!');
							(function() {
								$('publish_statusobj').setText('Ready');
							}).delay(2000);
						} else {
							warningbox_open(resp[1]);
							$('publish_statusobj').setText('Ready');
						}
					}
				}).request();
				
			}
			
		}
		
		return false;
	
	}
	
	// Recovery
	
	function pub_recover_discard() {
		if($('sdleft_publish_recoverybox')) {
			dyn_topload_start();
			$('publish_statusobj').setText('Discarding recovery copy...');
			$('sdleft_publish_recoverybox').remove();
			new Ajax('/xhr/publish/recoverydiscard/', {
				method: 'post',
				onComplete: function() {
					dyn_topload_stop();
					$('publish_statusobj').setText('Ready');
				}
			}).request();
		}
		return false;
	}
	
	// Load Sidebar
	
	function pub_loadsd(id) {
			
		$('publish_statusobj').setText('Loading Sidebar...');
		
		new Ajax('/xhr/publish/sd_' + id + '/', {
			method: 'post',
			data: $('publish_sdform'),
			update: $('sdleft_publish'),
			evalScripts: true,
			onComplete: function() {
				$('publish_statusobj').setText('Ready');
				isloadingtab = false;
				sdpublishfx.start(0,1);
			}
		}).request();
	
	}
	
	// Unload Elements
	
	function unloadPublish() {
	
		switch(currentab) {
		case 'editor':
			tinyMCE.execCommand('mceRemoveControl',false,'publishwritearea'); 
		break;
		}
	
	}
	
	// LOAD TAB - NEW
	
	function loadtab_New() {
	
		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Loading New tab...');
			
			new Ajax('/xhr/publish/new/', {
				method: 'get',
				update: $('col_main'),
				onComplete: function() {
					setcurrenttab();
					dyn_topload_stop();
					isloadingtab = false;
				}
			}).request();
			
		}
		
		return false;
	
	}
	
	// LOAD TAB - OPEN
	
	function loadtab_Open(skip) {
	
		if(!isloadingtab) {
			isloadingtab = true;
			dyn_topload_start();
			if(skip) {
				$('publish_statusobj').setText('Refreshing list...');
				new Ajax('/xhr/publish/open/', {
					method: 'get',
					update: $('col_main'),
					onComplete: function() {
						setcurrenttab();
						dyn_topload_stop();
						isloadingtab = false;
					}
				}).request();
			} else {
				FxScrollObjectFast.toElement(document.body).chain(function() {
					$('publish_statusobj').setText('Loading Open Existing tab...');
					new Ajax('/xhr/publish/open/', {
						method: 'get',
						update: $('col_main'),
						onComplete: function() {
							setcurrenttab();
							dyn_topload_stop();
							isloadingtab = false;
						}
					}).request();
				});
			}
		}
		
		return false;
	
	}
	
	// LOAD TAB - START
	
	function loadtab_Start() {
		
		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Loading Start tab...');
			
			unloadPublish();
			
			sdpublishfx.start(1,0).chain(function() {
				new Ajax('/xhr/publish/start/', {
					method: 'post',
					data: $('publishwriteform'),
					update: $('col_main'),
					onComplete: function() {
						setcurrenttab();
						dyn_topload_stop();
						pub_loadsd('start');
					}
				}).request();
			});
			
		}
		
		return false;
	
	}
	
	// LOAD TAB - EDITOR
	
	function loadtab_Editor() {
	
		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Loading Editor tab...');
			
			unloadPublish();
			
			sdpublishfx.start(1,0).chain(function() {
				new Ajax('/xhr/publish/editor/', {
					method: 'post',
					data: $('publishwriteform'),
					update: $('col_main'),
					onComplete: function() {
						setcurrenttab();
						tinyMCE.idCounter = 0;
						tinyMCE.execCommand('mceAddControl',false,'publishwritearea');
						tinyMCE.switchClassCache = [];
						dyn_topload_stop();
					}
				}).request();
			});
			
		}
		
		return false;
	
	}
	
	function loadtab_Editor_revert() {
		confirmbox_open(msglib[152],'js','return loadtab_Editor_revertdo();','js','return confirmbox_close();',false);
		return false;
	}
	function loadtab_Editor_revertdo() {
		confirmbox_close();
		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Reverting to last saved version...');
			
			unloadPublish();
			
			new Ajax('/xhr/publish/editor/', {
				method: 'post',
				data: 'revert=1',
				update: $('col_main'),
				evalScripts: true,
				onComplete: function() {
					setcurrenttab();
					tinyMCE.execCommand('mceAddControl',false,'publishwritearea');
					dyn_topload_stop();
					isloadingtab = false;
				}
			}).request();
			
		}
		
		return false;
	}
	function pub_editor_insimg(path,info,resized) {
		//currentpubeditor.selection.setContent('<img src="' + path + '" alt="' + info + '" />')
		if(resized) {
			tinyMCE.execCommand('mceInsertContent',false,'<a href="' + resized + '" rel="lightbox" title="' + info + '"><img src="' + path + '" alt="' + info + '" /></a>');
		} else {
			tinyMCE.execCommand('mceInsertContent',false,'<img src="' + path + '" alt="' + info + '" />');
		}
		//tinyMCE.activeEditor.selection.setNode(tinyMCE.activeEditor.dom.create('img', {'src' : path, 'title' : info}));
	}
	function pub_editor_infoimg(bsource, imgid) {
		pub_editor_infoimg_close();
		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Loading Media Info...');
			
			new Ajax('/xhr/publish/mediainfo/', {
				method: 'post',
				data: 'imgid=' + imgid,
				onComplete: function(response) {
					if(response == '0') {
						warningbox_open('This image does not exist!');	
					} else {
						var imginfobutpos = $(bsource).getPosition([$('sdleft_publish_insimg')]);
						var imgmediainfo = new Element('div', {'id':'publish_mediainfo'}).setHTML(response).setStyles({
							top:imginfobutpos.y	- 76,
							left:imginfobutpos.x + 74
						}).injectInside(document.body);
					}
					$('publish_statusobj').setText('Ready');
					dyn_topload_stop();
					isloadingtab = false;
				}
			}).request();
			
		}
		
		return false;
	}
	function pub_editor_infoimg_close() {
		if($('publish_mediainfo')) {
			$('publish_mediainfo').remove();
		}
	}
	function pub_editor_imgmove(direction) {
		var scrollpos  = $('sdleft_publish_insimg').getSize();
		var scrollfx = new Fx.Scroll('sdleft_publish_insimg', {
			wait: false,
			duration: 1000,
			transition: Fx.Transitions.Quad.easeInOut
		});
		if(direction) {
			scrollfx.scrollTo(0, scrollpos.scroll.y + 524);
		} else {
			scrollfx.scrollTo(0, scrollpos.scroll.y - 524);
		}
		return false;
	}
	function pub_editor_imgcol() {
		dyn_topload_start();
		var imgcolid = $('insertimg_tut').getValue().toInt();
		var imgcoltags = $('insimg_filterinp').getValue().trim();
		if(imgcoltags == "Filter by tag") {imgcoltags = "";}
		new Ajax('/xhr/publish/getimgcol/', {
			method: 'post',
			data: 'colid=' + imgcolid + '&colfilter=' + imgcoltags,
			update: $('sdleft_publish_insimg'),
			onComplete: function() {
				$('sdleft_publish_insimg').scrollTo(0, 0);
				dyn_topload_stop();
			}
		}).request();
		return false;
	}
	function pub_editor_imgcol_filterchg() {
		var tmp = $('insimg_filterinp').getValue().trim();
		if(tmp == "") {
			$('insimg_filterinp').value = "Filter by tag";
			$('insimg_filterinp').setStyle('color','#999');
			$('insimg_filterinp').setStyle('font-weight','normal');
		} else if(tmp == "Filter by tag") {
			$('insimg_filterinp').value = "";
			$('insimg_filterinp').setStyle('color','#424242');
			$('insimg_filterinp').setStyle('font-weight','bold');
		}
	}
	function pub_editor_refreshpagebreak() {
		var tmp = '';
		pubpageamount = tinyMCE.activeEditor.getContent().split('<!-- pagebreak -->').length;
		if(pubpageamount > 1) {
			tmp = 's';
		}
		$('publish_pageamount').setHTML('Currently <strong>' + pubpageamount + '</strong> page' + tmp);
		return false;
	}
	function pub_editor_managechapters() {
		
		dyn_topload_start();
		$('publish_statusobj').setText('Loading Chapters...');
		pub_editor_refreshpagebreak();
		
		var cdgoverlay = new Element('div', {'id': 'lbBlack'}).injectInside(document.body);
		cdgoverlay.setStyles({'top': 0, 'height': window.getScrollHeight()});
		
		var cdcenter = new Element('div', {'id': 'publish_manchapters'}).injectInside(document.body);
		cdcenter.setStyles({'top': window.getScrollTop() + 100});
		
		var cdgoverlay = new Fx.Style('lbBlack', 'opacity', {duration:500});
		var cdgcenter = new Fx.Style('publish_manchapters', 'opacity', {duration:500});
		cdgoverlay.hide();
		cdgcenter.hide();
		cdgoverlay.start(0,0.65).chain(function() {
			new Ajax('/xhr/publish/editorchapters/', {
				method: 'post',
				data: 'pgamount=' + pubpageamount,
				update: cdcenter,
				onComplete: function() {
					cdgcenter.start(0,1).chain(function() {
						dyn_topload_stop();
						$('publish_statusobj').setText('Ready');
					});
				}
			}).request();									
		});
		
		return false;
	}
	function pub_editor_managechapters_close() {
		$('publish_manchapters').remove();
		$('lbBlack').remove();
		dyn_topload_stop();
		return false;
	}
	function pub_editor_managechapters_save() {
		dyn_topload_start();
		$('publish_statusobj').setText('Saving Chapters');
		new Ajax('/xhr/publish/editorchapters/', {
			method: 'post',
			data: $('publish_manchapters_form'),
			onRequest: function() {
				pub_editor_managechapters_close();
			},
			onComplete: function() {
				dyn_topload_stop();
				$('publish_statusobj').setText('Chapters saved!');
				successbox_open('The chapters have been set successfully!');
				(function() {
					$('publish_statusobj').setText('Ready');	  
				}).delay(1500);
			}
		}).request();
		return false;
	}
	
	// LOAD TAB - COLLECTIONS
	
	function loadtab_Collections() {
	
		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Loading Collections tab...');
			
			unloadPublish();
			
			sdpublishfx.start(1,0).chain(function() {
				new Ajax('/xhr/publish/collections/', {
					method: 'post',
					data: $('publishwriteform'),
					update: $('col_main'),
					onComplete: function() {
						setcurrenttab();
						dyn_topload_stop();
						pub_loadsd('start');
					}
				}).request();
			});
			
		}
		
		return false;
	
	}
	
	// LOAD TAB - CONTRIBUTORS
	
	function loadtab_Contributors() {
	
		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Loading Contributors tab...');
			
			unloadPublish();
			
			sdpublishfx.start(1,0).chain(function() {
				new Ajax('/xhr/publish/contributors/', {
					method: 'post',
					data: $('publishwriteform'),
					update: $('col_main'),
					evalScripts: true,
					onComplete: function() {
						setcurrenttab();
						dyn_topload_stop();
						pub_loadsd('contributors');
					}
				}).request();
			});
			
		}
		
		return false;
	
	}
	
	function pub_connotes_save() {
		if(!isloadingtab) {
			
			isloadingtab = true;
			$('publish_statusobj').setText('Saving notes...');
			
			new Ajax('/xhr/publish/saveconnotes/', {
				method: 'post',
				data: $('publish_connotes_form'),
				onComplete: function() {
					$('publish_statusobj').setText('Ready');
					successbox_open('The contributor notes were saved successfully!');
					isloadingtab = false;
				}
			}).request();
			
		}
	}
	function pub_connotes_clear() {
		confirmbox_open(msglib[157],'js','return pub_connotes_clear_do()();','js','return confirmbox_close();',false);
		return false;
	}
	function pub_connotes_clear_do() {
		$('edittut_notes').value = "";
		pub_connotes_save();
		confirmbox_close();
		return false;
	}
	
	function pub_contributorsearch() {
	
		if(!isloadingtab) {
		
			if($('newcon_user').getValue().clean().length < 3) {
				warningbox_open('Enter at least 3 characters to search a user!');
			} else {
		
				isloadingtab = true;
				$('publish_statusobj').setText('Searching users...');
		
				$('newcon_user').setProperty('disabled',true);
				$('pubcontributorload').setStyle('display','inline');
				if($('newcon_results')) {
					$('newcon_results').empty();
				} else {
					var tempel = new Element('div', {'id' : 'newcon_results', 'styles': {
						'margin-top': '10px',
						'clear': 'both'
					}});
					tempel.injectAfter('newcon_search');
				}
				$('newcon_results').setText('Waiting for results...');
				new Ajax('/xhr/publish/searchcontributors/', {
					method: 'post',
					data: 'newcon_user=' + $('newcon_user').getValue().clean(),
					update: $('newcon_results'),
					onComplete: function() {
						$('publish_statusobj').setText('Ready');
						$('newcon_user').setProperty('disabled',false);
						$('pubcontributorload').setStyle('display','none');
						isloadingtab = false;
					}
				}).request();
				
			}
		
		}
		return false;
	
	}
	
	function pub_contributorload(id) {
	
		if(!isloadingtab && $('newcon_results')) {
		
			isloadingtab = true;
			$('newcon_results').empty();

			$('publish_statusobj').setText('Loading user...');
			$('newcon_user').setProperty('disabled',true);
			$('pubcontributorload').setStyle('display','inline');

			$('newcon_results').setText('Initializing...');
			new Ajax('/xhr/publish/loadcontributor/', {
				method: 'post',
				data: 'newcon_user=' + id,
				update: $('newcon_results'),
				onComplete: function() {
					$('publish_statusobj').setText('Ready');
					$('newcon_user').setProperty('disabled',false);
					$('pubcontributorload').setStyle('display','none');
					isloadingtab = false;
				}
			}).request();
		
		}
		return false;
	
	}
	
	function pub_contributoradd(id) {
	
		if(!isloadingtab && $('newcon_results')) {
		
			isloadingtab = true;				

			$('publish_statusobj').setText('Adding User...');
			$('newcon_user').setProperty('disabled',true);
			$('pubcontributorload').setStyle('display','inline');

			var datastr = $('publishaddnewcon_form').toQueryString();
			$('newcon_results').empty();
			$('newcon_results').setText('Processing...');
			
			new Ajax('/xhr/publish/addcontributor/', {
				method: 'post',
				data: datastr,
				onComplete: function() {
					isloadingtab = false;
					loadtab_Contributors();
				}
			}).request();
		
		}
		return false;
	
	}
	
	function pub_contributordel(id, name) {
		confirmbox_open('Are you sure you want to remove ' + name + ' from the Contributors list?<br /><br /><span>' + name + ' will no longer have access to this tutorial.</span>', 'js', 'return pub_contributordeldo(' + id + ');', 'js', 'return confirmbox_close();', true);
		return false;
	}
	function pub_contributordeldo(id) {
		confirmbox_close();
		
		if(!isloadingtab) {
		
			isloadingtab = true;
		
			$('publish_statusobj').setText('Removing User...');
			new Ajax('/xhr/publish/deletecontributor/', {
					method: 'post',
					data: 'deluserid=' + id,
					onComplete: function() {
						isloadingtab = false;
						loadtab_Contributors();
						successbox_open('User was removed from the Contributors list successfully.');
					}
				}).request();
		}
		return false;
	}
	
	// LOAD TAB - STATISTICS
	
	function loadtab_Stats() {
	
		if(!isloadingtab) {
		
			isloadingtab = true;
				
			dyn_topload_start();
			$('publish_statusobj').setText('Loading Statistics tab...');
			
			unloadPublish();
			
			sdpublishfx.start(1,0).chain(function() {
				new Ajax('/xhr/publish/stats/', {
					method: 'post',
					data: $('publishwriteform'),
					update: $('col_main'),
					onComplete: function() {
						setcurrenttab();
						dyn_topload_stop();
						pub_loadsd('start');
					}
				}).request();
			});
			
		}
		
		return false;
	
	}
	
	// Live Preview
	
	function pub_viewlivetut() {
		if(liveprevtutid > 0) {
			window.open('/publish/tutorials/' + liveprevtutid + '/preview/');
		} else {
			warninbox_open("Unable to launch tutorial preview window");
		}
		return false;
	};
	
	// Publish tutorial
	
	function pub_publishtut_pre() {
		confirmbox_open(msglib[156],'js','return pub_publishtut();','js','return confirmbox_close();',false);
		return false;
	}
	
	function pub_publishtut() {
		
		confirmbox_close();
		dyn_topload_start();
		$('publish_statusobj').setText('Publishing tutorial...');
		
		var cdgoverlay = new Element('div', {'id': 'lbBlack'}).injectInside(document.body);
		cdgoverlay.setStyles({'top': 0, 'height': window.getScrollHeight()});
		
		var cdcenter = new Element('div', {'id': 'publish_publishtut'}).injectInside(document.body);
		cdcenter.setStyles({'top': window.getScrollTop() + 250});
		cdcenter.setHTML('<div class="publish_publishtutmid"><div><label id="publish_publishtut_status">Verifying tutorial data</label><br /><span id="publish_publishtut_substatus">Please wait</span></div><div><div id="publish_publishtut_bar">25%</div></div></div>');
		
		var cdgoverlay = new Fx.Style('lbBlack', 'opacity', {duration:500});
		var cdgcenter = new Fx.Style('publish_publishtut', 'opacity', {duration:500});
		var cdpubtutprogress = new Fx.Style('publish_publishtut_bar', 'width', {duration:500});
		cdgoverlay.hide();
		cdgcenter.hide();
		cdgoverlay.start(0,0.7).chain(function() {
			cdgcenter.start(0,1).chain(function() {
				cdpubtutprogress.start(1,40);
				
				// Verify data
				
				new Ajax('/xhr/publish/publishtut/', {
					method: 'post',
					data: $('publishwriteform'),
					onComplete: function(response) {
						
						resp = response.split('|');
				
						(function(){
							if(resp[0] == 1) {
								$('publish_publishtut_status').setHTML('Processing tutorial content');
								$('publish_publishtut_bar').setHTML('60%');
								cdpubtutprogress.start(40,130);
								(function(){
									$('publish_publishtut_status').setHTML('Publishing tutorial to index');
									$('publish_publishtut_bar').setHTML('90%');
									cdpubtutprogress.start(130,220);
									(function(){
										$('publish_publishtut_status').setHTML('Published successfully');
										$('publish_publishtut_bar').setHTML('100%');
										$('publish_publishtut_substatus').setHTML('Redirecting');
										cdpubtutprogress.start(220,237);
										(function() {
											window.location = '/publish/manage/';
										}).delay(500);
									}).delay(1000);
								}).delay(2500);
							} else {
								warningbox_open(resp[1]);
								pub_publishtut_close();	
							}
						 }).delay(2000);
						
					}
				}).request();
				
			});								
		});
		
		return false;
		
	}
	
	function pub_publishtut_close() {
		$('publish_publishtut').remove();
		$('lbBlack').remove();
		dyn_topload_stop();
	}
	
// ---------------------------------------------------
// MANAGE
// ---------------------------------------------------
	
	// Delete a tutorial
	
	function deletepubtut(id) {
		confirmbox_open(msglib[150],'js','return deletepubtutdo(' + id + ');','js','return confirmbox_close();',false);
		return false;
	}
	function deletepubtutdo(id) {
		dyn_topload_start();
		confirmbox_close();
		new Ajax('/xhr/publish/deletetut/', {
			method: 'post',
			data: 'delid=' + id,
			onComplete: function() {
				dyn_topload_stop();
				loadtab(currentab);
				successbox_open('Your tutorial was deleted successfully!');
				$('publish_dashboard_tutcount').setText($('publish_dashboard_tutcount').getText().toInt() - 1);
			}
		}).request();
		return false;
	}
	
// ---------------------------------------------------
// COLLECTIONS
// ---------------------------------------------------

	function pub_colsearchbytag() {
		pub_browsecol(pubcoltutid,1,$('searchbytag').getValue().trim());
		return false;
	}
	function pub_col_editimg(imgid) {
		dyn_topload_start();
		
		var cdgoverlay = new Element('div', {'id': 'lbBlack'}).injectInside(document.body);
		cdgoverlay.setStyles({'top': 0, 'height': window.getScrollHeight()});
		cdgoverlayfx = new Fx.Style(cdgoverlay, 'opacity', {duration:500});
		cdgoverlayfx.hide();
		cdgoverlayfx.start(0, 0.75).chain(function() {
		
			new Ajax('/xhr/publish/editimg/', {
					method: 'post',
					data: 'imgid=' + imgid,
					onComplete: function(response) {
						dyn_topload_stop();
						var imgeditdialog = new Element('div', {'id':'publish_imgedit'}).injectInside(document.body);
						imgeditdialog.setStyle('top',window.getScrollTop() + 100);
						imgeditdialog.setHTML(response);
					}
			}).request();
			
		});
			
		return false;
	}
	function pub_col_editimg_close() {
		$('publish_imgedit').remove();
		$('lbBlack').remove();
		return false;
	}
	function pub_col_editimg_save() {
		dyn_topload_start();
		$('publish_statusobj').setText('Saving Image...');
		new Ajax('/xhr/publish/editimg/', {
			method: 'post',
			data: $('publish_imgedit_form'),
			onRequest: function() {
				pub_col_editimg_close();
			},
			onComplete: function() {
				dyn_topload_stop();
				$('publish_statusobj').setText('Image Saved');
				successbox_open('The image has been saved successfully!');
				(function() {
					pub_browsecol(pubcoltutid, pubcoltutpg, pubcoltuttag);
					(function() {
						$('publish_statusobj').setText('Ready');
					}).delay(1000);
				}).delay(500);
			}
		}).request();
		return false;
	}
	function pub_col_delimg(imgid) {
		confirmbox_open(msglib[154],'js','return pub_col_delimg_do(' + imgid + ');','js','return confirmbox_close();',false);
	}
	function pub_col_delimg_do(imgid) {
		confirmbox_close();
		dyn_topload_start();
		new Ajax('/xhr/publish/delimg/', {
				method: 'post',
				data: 'imgid=' + imgid,
				onComplete: function(response) {
					var resp = response.split('|');
					dyn_topload_stop();
					if(resp[0] == 1) {
						$('publish_imgbox_id' + imgid).remove();
						successbox_open(resp[1]);
					} else {
						warningbox_open(resp[1]);
					}
				}
		}).request();
		return false;
	}
	
	function fileStartCheck() {
		if(!$('frmpublishcolupl').contentWindow.ispossibleupl()) {
			warningbox_open('Please select a file to upload!');
		} else {
			fileStartUpl();
		}
	}
	
	function fileStartUpl() {
		var cdgoverlay = new Element('div', {'id': 'lbBlack'}).injectInside(document.body);
		cdgoverlay.setStyles({'top': 0, 'height': window.getScrollHeight()});
		
		var cbcenter = new Element('div', {'id': 'loginbox_loadcontainer'}).injectInside(document.body);
		cbcenter.setStyles({'top': window.getScrollTop() + 250});
		cbcenter.innerHTML = '<div class="lbBigText">Initializing...<br /><div class="lbSmallText">Please Wait</div></div>';
		
		var cbcenterfx = new Fx.Style('loginbox_loadcontainer', 'opacity', {duration:500});
		cbcenterfx.hide();
		
		cdgoverlayfx = new Fx.Style(cdgoverlay, 'opacity', {duration:500});
		cdgoverlayfx.hide();
		cdgoverlayfx.start(0, 0.75).chain(function() {
			cbcenterfx.start(0,1).chain(function() {
				(function() {
					cbcenter.innerHTML = '<div class="lbBigText">Uploading... 0%<br /><div class="lbSmallText">Please Wait</div></div>';
					$('frmpublishcolupl').contentWindow.submittut();
					pubuplsts = true;
					(function() {
						fileuplupdate();
					}).delay(3000);
				}).delay(250);
			});
		});
	}
	
	function fileuplsetid(uid) {
		pubupluid = uid;
	}
	
	function fileuplupdate() {
		if(pubuplsts) {
			new Ajax('/external/publish_upload_info.php', {
				method: 'post',
				data: 'fuid=' + pubupluid,
				onComplete: function(resp) {
					if(pubuplsts) {
						$('loginbox_loadcontainer').setHTML(resp);
					}
				}
			}).request();
			(function() {
				fileuplupdate();
			}).delay(3000);
		}
	}
	
	function fileuplshutdown() {
		pubuplsts = false;
		$('lbBlack').remove();
		$('loginbox_loadcontainer').remove();
	}
	
// ---------------------------------------------------
// ATTACHMENTS
// ---------------------------------------------------

	function pub_col_editatt(attid) {
		dyn_topload_start();
		
		var cdgoverlay = new Element('div', {'id': 'lbBlack'}).injectInside(document.body);
		cdgoverlay.setStyles({'top': 0, 'height': window.getScrollHeight()});
		cdgoverlayfx = new Fx.Style(cdgoverlay, 'opacity', {duration:500});
		cdgoverlayfx.hide();
		cdgoverlayfx.start(0, 0.75).chain(function() {
		
			new Ajax('/xhr/publish/editatt/', {
					method: 'post',
					data: 'attid=' + attid,
					onComplete: function(response) {
						dyn_topload_stop();
						var imgeditdialog = new Element('div', {'id':'publish_imgedit'}).injectInside(document.body);
						imgeditdialog.setStyle('top',window.getScrollTop() + 100);
						imgeditdialog.setHTML(response);
					}
			}).request();
			
		});
			
		return false;
	}
	function pub_col_editatt_close() {
		$('publish_imgedit').remove();
		$('lbBlack').remove();
		return false;
	}
	function pub_col_editatt_save() {
		dyn_topload_start();
		$('publish_statusobj').setText('Saving Attachment...');
		new Ajax('/xhr/publish/editatt/', {
			method: 'post',
			data: $('publish_attedit_form'),
			onRequest: function() {
				pub_col_editatt_close();
			},
			onComplete: function() {
				dyn_topload_stop();
				$('publish_statusobj').setText('Attachment Saved');
				successbox_open('The attachment has been saved successfully!');
				(function() {
					pub_browsecol(pubcoltutid, pubcoltutpg, pubcoltuttag);
					(function() {
						$('publish_statusobj').setText('Ready');
					}).delay(1000);
				}).delay(500);
			}
		}).request();
		return false;
	}
	function pub_col_delatt(attid) {
		confirmbox_open(msglib[155],'js','return pub_col_delatt_do(' + attid + ');','js','return confirmbox_close();',false);
	}
	function pub_col_delatt_do(attid) {
		confirmbox_close();
		dyn_topload_start();
		new Ajax('/xhr/publish/delatt/', {
				method: 'post',
				data: 'attid=' + attid,
				onComplete: function(response) {
					var resp = response.split('|');
					dyn_topload_stop();
					if(resp[0] == 1) {
						$('publish_attbox_id' + attid).remove();
						successbox_open(resp[1]);
					} else {
						warningbox_open(resp[1]);
					}
				}
		}).request();
		return false;
	}
	
// ---------------------------------------------------
// VIEW TUTORIAL
// ---------------------------------------------------
	
function pubview_chapters_toggle(tid) {
	if(!pubchap_wait) {
		pubchap_wait = true;
		if(!pubchap_status) {
			pubchap_status = true;
			if(pubchap_iscached) {
				pubview_chapters_open();
			} else {
				dyn_topload_start();
				new Ajax('/xhr/publishview/getchapters/', {
					method: 'post',
					data: 'tutid=' + tid,
					onComplete: function(resp) {
						dyn_topload_stop();
						if(resp == '0') {
							warningbox_open('An error occured. No chapters are available.');
						} else {
							pubchap_cache = Json.evaluate(resp, true);
							if(pubchap_cache == false) {
								warningbox_open('An error occured. The chapters are unreadable.');
							} else {
								pubchap_iscached = true;
								pubview_chapters_open();
							}
						}
					}
				}).request();
			}
		} else {
			pubchap_status = false;
			pubview_chapters_close();
		}
	}
	return false;
}
function pubview_chapters_open() {
	var chapcon = '<div id="publish_view_chapters_sdbar"><div style="width:200px;">';
	var i = 1;
	for(i = 1; i <= pubchap_cache[0]; i++) {
		if(pubchap_cache[i]) {
			chapcon += '<div class="in_chapitem">' + i + ': <a href="/publish/tutorials/' + pubchap_cache[pubchap_cache[0] + 1] + '/page-' + i + '/">' + pubchap_cache[i] + '</a></div>';
		} else {
			chapcon += '<div class="in_chapitem">' + i + ': <a href="/publish/tutorials/' + pubchap_cache[pubchap_cache[0] + 1] + '/page-' + i + '/">Untitled Chapter</a></div>';
		}
	}
	chapcon += '</div></div><div id="publish_view_chapters_sdbutton"><img src="/skin_images/publish_view_chaptersout.png" alt="Close" title="Close" onclick="return pubview_chapters_toggle(1);" /></div><div id="publish_view_chapters_sdend"><div style="width:200px;"><img src="/skin_images/publish_view_chaptersend.png" alt="" /></div></div>';
	var chapsdobj = new Element('div', {'id': 'publish_view_chapters_sd'}).setHTML(chapcon).injectInside(document.body);
	if($('publish_view_chapters_sdbar').getStyle('height').toInt() < 190) {$('publish_view_chapters_sdbar').setStyle('height',190);}
	if(window.ie) {
		chapsdobj.setStyles({'top':$('publish_view_chapters').getTop(),'left':$('publish_view_chapters').getLeft().toInt() - 1});
	} else {
		chapsdobj.setStyles({'top':$('publish_view_chapters').getTop(),'left':$('publish_view_chapters').getLeft()});
	}
	
	var chapsdfx = new Fx.Style('publish_view_chapters_sdbar', 'width', {duration:1000, transition: Fx.Transitions.Cubic.easeOut});
	chapsdfx.hide();
	var chapsdendfx = new Fx.Style('publish_view_chapters_sdend', 'width', {duration:1002, transition: Fx.Transitions.Cubic.easeOut});
	chapsdendfx.hide();
	
	chapsdfx.start(0,200);
	chapsdendfx.start(0,200).chain(function() {
		pubchap_wait = false;									
	});
}
function pubview_chapters_close() {
	var chapsdfx = new Fx.Style('publish_view_chapters_sdbar', 'width', {duration:1000, transition: Fx.Transitions.Cubic.easeOut});
	var chapsdendfx = new Fx.Style('publish_view_chapters_sdend', 'width', {duration:1002, transition: Fx.Transitions.Cubic.easeOut});
	
	chapsdfx.start(200,0);
	chapsdendfx.start(200,0).chain(function() {
		$('publish_view_chapters_sd').remove();
		pubchap_wait = false;
	});
	return false;
}

function pubview_sendcredits(id) {
	confirmbox_open(msglib[153],'js','return pubview_sendcredits_do(' + id + ');','js','return confirmbox_close();',false);
	return false;
}

function pubview_sendcredits_do(id) {
	dyn_topload_start();
	confirmbox_close();
	new Ajax('/xhr/publishview/thanks/', {
		method: 'post',
		data: 'userid=' + id + '&amount=' + $('pubview_thanksinp').getValue().toInt(),
		onComplete: function(resp) {
			response = resp.split('|');
			dyn_topload_stop();
			if(response[0] == '1') {
				successbox_open(response[1]);
			} else {
				warningbox_open(response[1]);
			}
		}
	}).request();
	return false;
}

// ---------------------------------------------------
// BROWSE TUTORIALS
// ---------------------------------------------------

function pub_changesort(mode) {
	dyn_topload_start();
	new Ajax('/xhr/publishbrowse/', {
		method: 'post',
		data: 'sortmode=' + mode,
		onComplete: function(resp) {
			dyn_topload_stop();
			window.location = window.location;
		}
	}).request();
	return false;
}