var _unloadprompt = false;

var _sa_browser = navigator.userAgent.toLowerCase();
var _sa_browser_ver = navigator.appVersion.substring(0,1);
var _sa_browser_version = navigator.appVersion;
var ie=document.all;

// var _undo = array();


function enableUnloadPrompt() {
	_unloadprompt = true;
	window.onbeforeunload = unloadMessage;
}


function disableUnloadPrompt() {
	_unloadprompt = false;
	window.onbeforeunload = null;
}


function unloadMessage(){
	return ("Your blog post will not be saved.");
}
				

function _wndo(wurl, iw, ih) {
  window.open(wurl,'snphoto',
      'width='+ iw +', height='+ ih 
      +', scrollbars=no, resizable=no, location=no, menubar=no, status=yes, toolbar=no');
  return (false);
}




function _okBrowser() {
	var ua = navigator.userAgent.toLowerCase();
	
	// returns false if found msie 5.1, netscape 6, or generally macintosh and os9. 
	// as pc browsers generally behave better.
	// this list may grow with time
	
	// g m
			
	var result = 
		!(
			((ua.indexOf('msie') > -1)  && (navigator.appVersion.substring(0,1)<=6))
			|| 
			(ua.indexOf('aol') > -1) 
			|| 
			(ua.indexOf('netscape') > -1)	
			||
			((ua.indexOf('macintosh')> -1) && (ua.indexOf('os x') < 0))	
		)
	;
	
	// alert(result);	// debug
	return (result);
}



function _wrapintag(boxid,tag) {
	return _wrapin(boxid,'<'+tag+'>', '</'+tag+'>');
}

function _wrapinbbtag(boxid,tag) {
	return _wrapin(boxid,'['+tag+']', '[/'+tag+']');
}


function _wrapin(boxid, starthtml, endhtml) {
		var dc=document.getElementById(boxid);
		if (ie) _createSelectionMarkers(dc);
		if ((dc.selectionStart||dc.selectionEnd) && (dc.selectionStart!=dc.selectionEnd)) {
			dc.value = dc.value.substring(0,dc.selectionStart) 
			+ starthtml
			+ dc.value.substring(dc.selectionStart,dc.selectionEnd)
			+ endhtml
			+ dc.value.substring(dc.selectionEnd,dc.value.length)
		} else 
		{
			alert ('Please select some text to format first'); 
		}
		return (false);
}

function _insertat(boxid,html) {
	var dc=document.getElementById(boxid);
	if (html == null) html = '';
	if (ie) _createSelectionMarkers(dc);
	if (dc.selectionStart) {
		dc.value = dc.value.substring(0,dc.selectionStart)+html+dc.value.substring(dc.selectionStart,dc.value.length);
	}
	return false;
}

function _insertAtCursor(myField, myValue) {
    //IE support
    if (document.selection && !window.opera) {
    // only insert text for IE (not at cursor)
    myField.value += myValue;
    }
    //MOZILLA/NETSCAPE/OPERA support
    else if (myField.selectionStart || myField.selectionStart == '0') {
    var startPos = myField.selectionStart;
    var endPos = myField.selectionEnd;
    myField.value = myField.value.substring(0, startPos)
        + myValue 
        + myField.value.substring(endPos, myField.value.length);
    } else {
    myField.value += myValue;
    }
}


function _insertimgat(boxid) {
	var dc=document.getElementById(boxid);
	
	var url = prompt("Please enter web address (URL) of image?");
	if (!url) return false;

	html = '<img src="'+url+'" />';
	return (_insertat(boxid, html));

}


function _linkorinsertlinkat(boxid) {
	var dc=document.getElementById(boxid);
	if (ie) _createSelectionMarkers(dc);
	var wrap = (dc.selectionStart && (dc.selectionStart != dc.selectionEnd));
	
	var url = prompt("Please enter web address (URL) to link to?");
	if (!url) return false;
	
	if (wrap) {
		title = dc.value.substring(dc.selectionStart, dc.selectionEnd);
	} else {
		var title = prompt("Title of link? (optional)");
		if ((title == null) || (!title)) title = url.replace('http://','');
	}
	
	if (url.substring(0,4)=="www.") url = "http://"+url;
	
	html = '<a href="'+url+'">'+title+'</a>';
	if (wrap) return (_wrapin(boxid, '<a href="'+url+'">', "</a>"));
	else return (_insertat(boxid, html));
}



function _getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}




function _createSelectionMarkers(element) {
	// this function creates selectionStart and selectionEnd for textareas in IE.
	
	// passed by reference
	// var element = document.getElementById( 'my_textarea' );	
	if( document.selection ) {
		// The current selection
		var range = document.selection.createRange();
		// We'll use this as a 'dummy'
		var stored_range = range.duplicate();
		// Select all text
		stored_range.moveToElementText( element );
		// Now move 'dummy' end point to end point of original range
		stored_range.setEndPoint( 'EndToEnd', range );
		// Now we can calculate start and end points
		element.selectionStart = stored_range.text.length - range.text.length;
		element.selectionEnd = element.selectionStart + range.text.length;
	}
	
}


	try {
		var _request;
	} catch(e) {}
	
	function _createRequest() {
	  try {
	    _request = new XMLHttpRequest();
	  } catch (trymicrosoft) {
	    try {
	      _request = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (othermicrosoft) {
	      try {
	        _request = new ActiveXObject("Microsoft.XMLHTTP");
	      } catch (failed) {
	        _request = false;
	      }
	    }
	  }
	}
	
	
	

	 function _updateEle(obj) { // do not pass object id to this function!
		if (_request.readyState == 4) {
			if (_request.status == 200) {		// all is good
				var response = _request.responseText;
				obj.innerHTML = response;
			}
		}
	}
	
	
	function _toggleVisible(boxid) {
		var box = document.getElementById(boxid);
		if (box) {
			switch (box.style.display) {
				case 'inline':
				case 'block':
					box.style.display = "none";
					break;
				case 'none':
					switch (box.tagName.toLowerCase()) {
						case 'span':
							box.style.display="inline";
							break;
						case 'div':
						case 'p':
						case 'ul':
						default:
							box.style.display="block";
					}
			}
		}
	}
	
	
	function _createUndo(boxid) {
	}
	
	function _undo() {
		
	}

