// *********************** remember me *************************

function initRememberMe() {

	document.write('<p id="remember-me"><label for="remember">Remember Me?</label><input type="checkbox" name="remember" id="remember" class="checkbox" tabindex="5"	 value="" /></p>');

	var remember = getElementById('remember-me');
	if (remember){
		var form = getElementById('comment-form');

		var name = getCookie('ClarissaCommentFormName');
		if (name && name != ''){
			form.name.value = name;
			form.remember.checked = true;
		}

		var email = getCookie('ClarissaCommentFormEmail');
		if (email && email != ''){
			form.email.value = email;
		}

		var website = getCookie('ClarissaCommentFormWebsite');
		if (website && website != ''){
			form.website.value = website;
		}

		addEvent(form, 'submit', function (){
			var form = getElementById('comment-form');
			if (form.remember.checked) {
				var expires = new Date();
				expires.setDate(expires.getDate()+365); //expires after 1 year
				setCookie('ClarissaCommentFormName', form.name.value,expires, '/');
				setCookie('ClarissaCommentFormEmail', form.email.value,expires, '/');
				setCookie('ClarissaCommentFormWebsite', form.website.value,expires, '/');
			} else {
				deleteCookie('ClarissaCommentFormName');
				deleteCookie('ClarissaCommentFormEmail');
				deleteCookie('ClarissaCommentFormWebsite');
			}
		});
	}
}


// *************** general functions *****************

function addEvent(element, event, func) {
  //add an event to the specified element, preserving any existing events that are attached
  if (!element) return;
  if (element.addEventListener) {
    element.addEventListener(event, func, false);
    return true;  
  } else {
    var oldFn = element['on' + event];
    var fn;
    if (oldFn) {
      fn = function() {
        return oldFn();
        return func();
      }
    } else {
      fn = func;
    }
    if (element.attachEvent) return element.attachEvent('on' + event, fn);
    else element['on' + event] = fn;
  }
}

function addLoadEvent(id,func) {
	//add an onload event which will fire once the given id is located within the document
	//this is more reliable than window.onload and will happen exactly when needed

	function loadEvent() {
		var element = getElementById(id);
		if (element) func(); else window.setTimeout(loadEvent,2000);
	}

	loadEvent();

}

function elementHasClass(element, className) {
	//return true if the element has the given class name
	className = className.replace(/\-/g, '\\-');
	var re = new RegExp('(^|\\s)' + className + '(\\s|$)');
	return re.test(element.className);
}

function applyClass(element, className) {
	//add a class to an element
	if (!elementHasClass(element, className)) element.className += ' ' + className;
}

function removeClass(element, className) {
	//remove a class from an element
	className = className.replace(/\-/g, '\\-');
	var re = new RegExp('(^|\\s)' + className + '(\\s|$)');
	element.className = element.className.replace(re,'');
}

function getElementById(id) {
	//get element with a given id
	return (document.all)? document.all[id] : document.getElementById(id);
}

function getElementsByTagName(container, tagName) {
	//get all html nodes of a given type within a given container
	if (container) return container.getElementsByTagName(tagName);
	else return new Array();
}

function getElementsByClassName(container, tagName, className) {
	//get all html nodes of a given type and class within a given container
	var elements = getElementsByTagName(container, tagName);
	var result = new Array();
	for(var i=0;i < elements.length;i++) {
		var e = elements[i];
		if (elementHasClass(e,className)) result.push(e);
	}
	return result;   
}

function setCookie(name, value, expires, path, domain, secure) {
  //set a cookie
  document.cookie = name + '=' + escape(value) +
    ((typeof(expires) != 'undefined' && expires) ? '; expires=' + expires.toGMTString() : '') +
    ((typeof(path) != 'undefined' && path) ? '; path=' + path : '; path=/') +
    ((typeof(domain) != 'undefined' && domain) ? '; domain=' + domain : '') +
    ((typeof(secure) != 'undefined' && secure) ? '; secure' : '');
}

function deleteCookie(name) {
  //delete a cookie
  document.cookie = name + '=; expires=0; path=/';
}

function getCookie(name) {
  //get a cookie
  var dc = document.cookie;
  var prefix = name + '=';
  var begin = dc.indexOf('; ' + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else begin += 2;
  var end = document.cookie.indexOf(';', begin);
  if (end == -1) end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}
