
window.onload=function(){
	if(pageType == 'page' ) pulloutImages();
	if( document.getElementById('postcontent') && document.getElementById('postcontent').className.indexOf('counted') != -1 ) {
		paginate(document.getElementById('postcontent'));
		bookmarkParagraphs(document.getElementById('postcontent'));
	}
}

function pulloutImages() {
	if( document.getElementById('leftcol') ) {
		for( i=0; i<document.images.length; i++ ) {
			if( document.images[i].className.indexOf('pullout') != -1 ) {
				if( document.images[i].parentNode.nodeName == 'A' ) {
					oldNode = document.images[i].parentNode;
				}
				else if( document.images[i].parentNode.nodeName == 'DIV' && document.images[i].parentNode.className.indexOf('pullout') != -1 ) {
					oldNode = document.images[i].parentNode;
				}
				else {
					oldNode = document.images[i];
				}
				var newNode = oldNode.cloneNode(true);
				newNode.style.display = 'block'; // Force display to override style
				oldNode.parentNode.removeChild(oldNode);
				document.getElementById('leftcol').appendChild(newNode);
			}
		}
	}
}

function bookmarkParagraphs(post) {
	var n=1;
	for( i=0; i<post.childNodes.length; i++ ) {
		if( post.childNodes[i].nodeName == 'P' || post.childNodes[i].nodeName == 'LI' || post.childNodes[i].nodeName == 'DT' ) {
			if( n>1 ) {
				// Don't number the first paragraph; it's useless!
				var newLink = document.createElement('A');
				newLink.className = 'paraNumber';
				newLink.id = 'p-' + n;
				addEvent(newLink,'click',bookmarkNode);
				var newText = document.createTextNode(n);
				newLink.appendChild(newText);
				post.childNodes[i].insertBefore(newLink,post.childNodes[i].firstChild);
			}
			n++;
		}
	}
}

function bookmarkNode(evt) {
	if (!evt) evt = window.evt // for IE/Win	var node = findEventOwner(evt);	while( node.nodeName != 'A' ) {		// Make sure we find the link		node = node.parentNode;	}
	var n = node.childNodes[0].nodeValue;
	var title = document.title + ' | paragraph ' + n;
	var url = window.location.href + '#' + n;
	bookmark(title,url);}

function bookmark(title,url) {
	if (window.sidebar) // firefox 	   window.sidebar.addPanel(title, url, "");	else if(window.opera && window.print){ // opera	    var elem = document.createElement('a');	    elem.setAttribute('href',url);	    elem.setAttribute('title',title);	    elem.setAttribute('rel','sidebar');	    elem.click();	}	else if(document.all)// ie	    window.external.AddFavorite(url, title);	
}

function find_get_variables() {
	var url = window.location.href;
	if( url.indexOf('?') != -1 ) {
		var $qstring = ( url.indexOf('#') == -1 ) 
						? url.substring(url.indexOf('?')+1) 
						: url.substring(url.indexOf('?')+1,url.indexOf('#')-1);
		var $pairs = $qstring.split('&');
		$vars = array();
		for( $i=0; $i<$pairs.length; $i++ ) {
			$vars[$i][0] = $pairs[i].substring(0,$pairs[i].indexOf('=')-1);
		}
	}
	
}

function paginate(post) {
	// assign IDs to sections
	var n = 0;
	for( i=0; i<post.childNodes.length; i++ ) {
		if( post.childNodes[i].nodeName == 'DIV' && post.childNodes[i].className.indexOf('section') != -1 ) {
			n++;
			post.childNodes[i].id = 'section-' + n;
		}
	}
	
	// hide all but the requested section
	var url = window.location.href;
	var m = url.search(/page=([0-9]|all)+/);
	if( m == -1 ) {
		k = 1; // show first section by default
		var baseURL = url + '?page=';
	}
	else {
		k = url.substring(m+5); // this assumes page is the last item in the query strong
		var baseURL = url.substring(0,m+5);
	}
	
	showPage(k);
	
	// hide comments if last page not shown
	if( k != 'a' && k != n ) {
		if( document.getElementById('commentwrapper') ) {
			document.getElementById('commentwrapper').style.display = 'none';
		}
	}
	
	// rewire link to comments to point to last page
	if( document.getElementById('comments-link') ) {
		var commentsLink = document.getElementById('comments-link');
		commentsLink.href = baseURL.substring(0,baseURL.indexOf('?')-1)
						  + '#comments'
						  + baseURL.substring(baseURL.indexOf('?')) + n;
	}
	
	// links to pages 
	if( k != 'a' ) {
		var pageLinksBottom = document.createElement('P');
		pageLinksBottom.className = 'page-links-bottom';
		var newText = document.createTextNode('Pages: ');
		pageLinksBottom.appendChild(newText);
		
		if( k != 1 ) {
			var pageLink = document.createElement('A');
			pageLink.className = 'prev-page';
			pageLink.href = baseURL + (parseInt(k)-1)
			newText = document.createTextNode('Prev');
			pageLink.appendChild(newText);
			pageLinksBottom.appendChild(pageLink);
		}
		
		for( i=1; i<=n; i++ ) {
			if( i==k ) {
				var pageLink = document.createElement('SPAN');
			}
			else {
				var pageLink = document.createElement('A');
				pageLink.href = baseURL + i;
			}
			newText = document.createTextNode(i);
			pageLink.appendChild(newText);
			pageLinksBottom.appendChild(pageLink);
			
			newText = document.createTextNode(' ');
			pageLinksBottom.appendChild(pageLink);
		}
		
		if( k != n ) {
			var pageLink = document.createElement('A');
			pageLink.className = 'next-page';
			pageLink.href = baseURL + (parseInt(k)+1)
			newText = document.createTextNode('Next');
			pageLink.appendChild(newText);
			pageLinksBottom.appendChild(pageLink);
		}
		
		document.getElementById('section-' + k).appendChild(pageLinksBottom);
	}
}

function showPage(n) {
	if( document.getElementById('section-' + n) ) {
		var divs = document.getElementsByTagName('DIV');
		for( i=0; i<divs.length; i++ ) {
			if( divs[i].className.indexOf('section') != -1 ) {
				divs[i].style.display = 'none';
			}
		}
		document.getElementById('section-' + n).style.display = 'block';
		
		// Add page number to title
		var newPara = document.createElement('P');
		newPara.className = 'this-page-number'
		var newText = document.createTextNode('Page ' + n);
		newPara.appendChild(newText);
		var pageTitle = document.getElementsByTagName('H1')[0];
		pageTitle.parentNode.insertAfter(newPara,pageTitle);
		
		return;
	}
	return false;
}

Node.prototype.insertAfter = function(newNode, refNode) {
	if(refNode.nextSibling) {
		return this.insertBefore(newNode, refNode.nextSibling);
	} else {
		return this.appendChild(newNode);
	}
}

function getWordCount(post) {
	var wordCount = 0;
	for( i=0; i<post.childNodes.length; i++ ) {
		if( post.childNodes[i].nodeType == 3 ) {
			wordCount += post.childNodes[i].nodeValue.split(' ').length;
		}
		else {
			for( j=0; j<post.childNodes.length; j++ ) {
				if( post.childNodes[j].nodeType == 3 ) {
					wordCount += post.childNodes[j].nodeValue.split(' ').length;
				}
			}
		}
	}
	return wordCount;
}
