/********************************************************************************************/
/* Aresta Code Base v2.0																	*/
/* ---------------------																	*/
/* Copyright © 2004 - 2006 Aresta Enterprise.  All Rights Reserved.							*/
/* This file may not be redistributed in whole or significant part.							*/
/********************************************************************************************/
var DOMAIN = 'http://www.writerscafe.org/';

/********************************** onload functions ********************************/
$(function() {
	// Tooltips
	tips();
	
	// Calendar
	calendar();
});

/******************************** document.ready ********************************/
/* Functions to Run When Page Loaded											*/
/********************************************************************************/
$(document).ready(function () {						
	// Form Validation
	$('form.require').each(function() { 
		$(this).validate({
			submitHandler: function(form) { submitIt(form); }
   		}); 
	});
});

/*************************************** tips ***************************************/
function tips() {	
	$('.tip').tooltip({
		track: true,
		delay: 0,
		showURL: false
	});
}

/************************************ submitIt **********************************/
/* Submits form and disables submit button										*/
/********************************************************************************/
function submitIt(f) {
	var s = $(f).find("input[type='submit']");
	$(s).fadeTo("normal", 0.4).attr("disabled", "disabled").after("<img src='"+DOMAIN+"images/ajax-loader.gif' align='absmiddle' style='margin-left:4px;' />");
	f.submit();
}

/************************************ showHide **********************************/
/* Shows or hides given div based upon it's current state						*/
/********************************************************************************/
function showHide(div) {
	if(document.getElementById(div).style.display=="none") $("#"+div).show();
	else $("#"+div).hide();
}

/************************************* showIt ***********************************/
/* Fades in given element in given amount of time								*/
/********************************************************************************/
function showIt(div,time) {
	/*if(time == null) var time = 500;
	$("#"+div).fadeIn(time);*/
	$("#"+div).show();
}

/************************************* hideIt ***********************************/
/* Fades out given element in given amount of time								*/
/********************************************************************************/
function hideIt(div,time) {
	/*if(time == null) var time = 500;
	$("#"+div).fadeOut(time);*/
	$("#"+div).hide();
}

/************************************** notesOn *************************************/
function notesOn(id) {
	var div = 'writingNotes';
	
	// Loading
	loader2(div);
	
	// Curtain
	$('#curtain').fadeIn(200);
	
	// notesButtons
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=notesButtons&id='+id,
		success: function(html){
			$('#content').prepend(html).fadeIn(200);
		}
	});
	
	// notesLoad
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=notesLoad&id='+id,
		success: function(html){
			$('#'+div).html(html);
		}
	});
	
	// notesPop
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=notesPop&id='+id+'&step='+1,
		success: function(html){
			$('#pop').fadeIn(200);
			$('#pop').html(html);
		}
	});
	
	// Tooltips
	tips();
}

/*function Selection(textareaElement) {
    this.element = textareaElement;
}

Selection.prototype.create = function() {
    if (document.selection != null && this.element.selectionStart == null) {
        return this._ieGetSelection();
    } else {
        return this._mozillaGetSelection();
    }
}

Selection.prototype._mozillaGetSelection = function() {
    return { 
        start: this.element.selectionStart, 
        end: this.element.selectionEnd 
    };
}

Selection.prototype._ieGetSelection = function() {
    this.element.focus();

    var range = document.selection.createRange();
    var bookmark = range.getBookmark();

    var contents = this.element.value;
    var originalContents = contents;
    var marker = this._createSelectionMarker();
    while(contents.indexOf(marker) != -1) {
        marker = this._createSelectionMarker();
    }

    var parent = range.parentElement();
    if (parent == null || parent.type != "textarea") {
        return { start: 0, end: 0 };
    }
    range.text = marker + range.text + marker;
    contents = this.element.value;

    var result = {};
    result.start = contents.indexOf(marker);
    contents = contents.replace(marker, "");
    result.end = contents.indexOf(marker);

    this.element.value = originalContents;
    range.moveToBookmark(bookmark);
    range.select();

    return result;
}

Selection.prototype._createSelectionMarker = function() {
    return "##SELECTION_MARKER_" + Math.random() + "##";
}*/


/************************************ notesSelect ***********************************/
function notesSelect(id){
	var div = 'writingNotes';
	
    var txt;
	var start;
	var found;
	// Firefox
    if (window.getSelection) {
		txt = window.getSelection();
		start = txt.anchorOffset;
	}
	// ???
    else if (document.getSelection) {
		txt = document.getSelection();
		start = txt.anchorOffset;
	}
	// IE
    else if (document.selection) {
		txt = document.selection.createRange().text;
		start = txt.anchorOffset;
	}
	
	alert('start: '+start);

	var sel = window.getSelection();
	var range = document.createRange();
	range.setStart( sel.anchorNode, sel.anchorOffset );
	alert(sel.anchorOffset);
	
	var sel = window.getSelection();
	var range = document.createRange();
	var startNode = document.getElementById(div);
	var startOffset = 0;
	alert(sel.anchorOffset);
	range.setStart(startNode,startOffset);
	alert(sel.anchorOffset);



	if(txt == '') alert('It appears you didn\'t select any text.');
	else {
		// AJAX
		$.ajax({
			type: 'GET',
			url: DOMAIN+'?ajaxRequest=notesSelect&id='+id+'&text='+escape(txt),
			success: function(html){
				$('#curtain').fadeIn(200);
				$('#pop').fadeIn(200);
				$('#pop').html(html);
			}
		});
	}
}

/************************************* notesAdd ************************************/
function notesAdd(id){
	var div = 'writingNotes';
	
    var text = document.getElementById('note_text').value;
	var note = document.getElementById('note_note').value;
	//text = encodeURIComponent(text);
	//note = encodeURIComponent(note);

	// Loading
	loader2('pop','Adding..');
	
	// notesAdd
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=notesAdd&id='+id+'&text='+text+'&note='+note,
		success: function(html) {
			$('#writing_test').html(html);	
			// notesLoad
			$.ajax({
				type: 'GET',
				url: DOMAIN+'?ajaxRequest=notesLoad&id='+id,
				success: function(html){
					// Hide Pop and Curtain
					$('#pop').fadeOut(200);
					$('#curtain').fadeOut(200);
					document.getElementById(div).innerHTML = html;
				}
			});
		}
	});
}

/************************************* hideIt *************************************/
function hideIt(div) {
	$('#'+div).fadeOut(200);
}

/************************************* showIt *************************************/
function showIt(div) {
	$('#'+div).fadeIn(200);
}

/********************************** checkRequired *********************************/
function checkRequired(f) {
	var error = "";
	for(i = 0;i < f.elements.length; i++) {
		var temp = null;
		if(f[i].className == "required") {
			// Select
			if(str_replace('select','',f[i].type) != f[i].type && (f[i].options[f[i].selectedIndex].value == null || f[i].options[f[i].selectedIndex].value.length == 0)) error = error + "You forgot to select a " + f[i].name + "\n";
			// Radio
			else if(f[i].type=="radio") {
				for (var j = 0; j < f[i].length; j++){
					if (f[i][j].checked) temp = f[i][j].value;
				}	
				if(temp == null) error = error + "You forgot to select a " + f[i].name + "\n";
			}
			// Checked
			else if(f[i].type=="checkbox") {
				if (f[i].checked) var temp = 1;
				else error = error + "You forgot to check " + f[i].name + "\n";
			}
			// Textarea
			else if((f[i].type=="textarea" || f[i].type=="text") && f[i].value == "") error = error + "You forgot to enter a " + f[i].name + " value\n";
		}
	}

	var error = str_replace('_',' ',error);
	if(error.length > 5) {
		alert(error);
		return false;
	}
	else return true;
}

/*************************************** loader2 *************************************/
function loader2(div,text) {
	if(text == null) text = "Loading..";
	/*$('#'+div).append('</div></div>');
	$('#'+div).prepend("<div style='position:relative;min-height:100px;'><div style='position:absolute;left: 50%;margin-left:-8px;margin-top:30px;'><center><img src='"+DOMAIN+"images/ajax-loader.gif' style='vertical-align:middle;' /></center></div><div style='opacity:.30;filter:alpha(opacity=30);-moz-opacity:.3;'>");*/
	var html = $('#'+div).html();
	$('#'+div).html("<div style='position:relative;min-height:100px;'><div style='position:absolute;left: 50%;margin-left:-8px;margin-top:30px;'><center><img src='"+DOMAIN+"images/ajax-loader.gif' style='vertical-align:middle;' />"+text+"</center></div><div style='opacity:.30;filter:alpha(opacity=30);-moz-opacity:.3;'>"+html+"</div></div>");
}


/*************************************** loader *************************************/
function loader(div,text) {
	if(text == null) text = "Loading..";
	if(document.getElementById(div)) document.getElementById(div).innerHTML =  "<br /><center><img src='"+DOMAIN+"images/ajax-loader.gif' style='vertical-align:middle;' /> "+text+"</center><br />";
}

/************************************* Submit Form ***********************************/
function submitform(f) {
	document.f.submit();
}

/************************************* postRating ***********************************/
function postRating(id,user) {
	
	var url = DOMAIN+'?ajaxRequest=postRating&id='+id+'&user='+user+'&r='+document.rating.r.value;
	
	// Load
	loader("rating");
	
	// AJAX
	$.ajax({
		type: 'GET',
		url: url,
		success: function(html){
			$('#rating').html(html);
		}
	});
}

/************************************** Advanced Review*************************************/
function advancedReview(){
	document.review.comment.value = 'Whatever criteria here..\n\nAnd here..\n' + document.review.comment.value;
}

/************************************** confirmIt *************************************/
function confirmIt(text,url){
	if (confirm(text)) location.replace(url);
}

/************************************* loadBox ***********************************/
function loadBox(type,div,id,p) {

	// Loading
	loader(div);
	
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&loadBox='+type+'&div='+div+'&id='+id+'&page='+p,
		success: function(html){
			$('#'+div).html(html);
		}
	});
}

/************************************* loadTab ***********************************/
var tabRegistered = new Array();
var divRegistered = null;

preloadedImg_1 = new Image();
preloadedImg_1.src = "http://www.writerscafe.org/images/ajax-loader.gif";

function loadTab(tabID,contentID,divIDPrefix,pageID,etcID) {
	if(divIDPrefix!=null) divID = divIDPrefix + "_tabDiv";
	else divID = "tabDiv";

	// Tab Classes
	if(document.getElementById(tabRegistered[divIDPrefix])) document.getElementById(tabRegistered[divIDPrefix]).className = 'tab_unselected';
	if(document.getElementById(tabRegistered[divIDPrefix] + '_A')) document.getElementById(tabRegistered[divIDPrefix] + '_A').className = 'green';
	tabRegistered[divIDPrefix] = divIDPrefix + "_" + tabID;
	if(document.getElementById(divIDPrefix + "_" + tabID)) document.getElementById(divIDPrefix + "_" + tabID).className = 'tab_selected';
	if(document.getElementById(divIDPrefix + "_" + tabID + '_A')) document.getElementById(divIDPrefix + "_" + tabID + '_A').className = 'blue';
	
	// Loading
	loader(divID);
	divRegistered = divID;
	
	if (divIDPrefix=="top_writing") tabID = "Top_Writing";
	if (divIDPrefix=="new_writing") tabID = "New_Writing";
	if (divIDPrefix=="popular_writing") tabID = "Popular_Writing";
	if (divIDPrefix=="unreviewed_writing") tabID = "Unreviewed_Writing";
	if (divIDPrefix=="unread_writing") tabID = "Unread_Writing";
	if (divIDPrefix=="top_writers") tabID = "Top_Writers";
	if (divIDPrefix=="top_reviewers") tabID = "Top_Reviewers";
	
	// AJAX
	//alert(DOMAIN+'?ajaxRequest=true&loadTab='+tabID+'&div='+divIDPrefix+'&id='+contentID+'&page='+pageID+'&etc='+etcID);
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&loadTab='+tabID+'&div='+divIDPrefix+'&id='+contentID+'&page='+pageID+'&etc='+etcID,
		success: function(html){
			document.getElementById(divRegistered).innerHTML = html;
			//$('#'+divRegistered).html(html);
			
			calendar();
		}
	});
}

/************************************* loadCom ***********************************/
var tabRegistered = new Array();
var divRegistered = null;

preloadedImg_1 = new Image();
preloadedImg_1.src = "http://www.writerscafe.org/images/ajax-loader.gif";

function loadCom(pageStart,contentID) {
	
	// Loading
	loader('comDiv');
	
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&loadCom=true&page='+pageStart+'&id='+contentID,
		success: function(html){
			$('#comDiv').html(html);
		}
	});
}

/************************************* loadNotes ***********************************/
function loadNotes(storyID,userID) {
	
	// Loading
	loader('writingNotes');
	
	// Jump
	document.location = '#writing';
	
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&loadNotes=true&id='+storyID+'&user='+userID,
		success: function(html){
			$('#writingNotes').html(html);
		}
	});
}

/************************************* loadWriting ***********************************/
function loadWriting(storyID) {
	
	// Loading
	loader('writingNotes');
	
	// Jump
	document.location = '#writing';
	
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&loadWriting=true&id='+storyID,
		success: function(html){
			$('#writingNotes').html(html);
		}
	});
}

/************************************* loadGift ***********************************/
function loadGift(contentID) {
	// Loading
	loader('gift_box');
	
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&loadGift=true&id='+contentID,
		success: function(html){
			$('#gift_box').html(html);
		}
	});
}

/************************************* postReadingList ***********************************/
function postReadingList(id,type,shelf) {
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&postReadingList=true&id='+id+'&type='+type+'&shelf='+shelf
	});
	
	document.getElementById('addToReadingList').style.display = 'none';
	document.getElementById('removeFromReadingList').style.display = 'block';
	//loadTab('Story',id,'story',168); 
}

/************************************* postDeleteReadingList ***********************************/
function postDeleteReadingList(id) {
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&postDeleteReadingList=true&id='+id
	});
	
	document.getElementById('addToReadingList').style.display = 'block';
	document.getElementById('removeFromReadingList').style.display = 'none';
	//loadTab('Story',id,'story',168); 
}

/************************************* postDeleteMessage ***********************************/
function postDeleteMessage(id,box) {
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&postDeleteMessage=true&id='+id+'&box='+box
	});
	
	document.getElementById(id).style.display = 'none';
}

/************************************* postDeleteRequest ***********************************/
function postDeleteRequest(id) {
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&postDeleteRequest=true&id='+id
	});
	
	document.getElementById(id).style.display = 'none';
}

/************************************* postRateReview ***********************************/
function postRateReview(id,help) {
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'?ajaxRequest=true&postRateReview=true&id='+id+'&help='+help
	});
	
	if (help==1) document.getElementById('unratedReview_'+id).innerHTML= "[you did]";
	if (help==0) document.getElementById('unratedReview_'+id).innerHTML=  "[you didn't]";
}

/************************************* editStatus ***********************************/
function editStatus(){
	document.getElementById('editStatus').innerHTML = "&nbsp;<input type='text' name='status' style='width:150px;' maxlength='100' value=\"" + document.getElementById('editStatus').innerHTML + "\">";
	document.getElementById('editStatusButton').innerHTML = "&nbsp;<input class='submit' type='submit' name='edit_status' value='Save' onclick='postEditStatus();return false;' style='height:23px;font-size:16px;' />";
	document.getElementById('editStatusI').innerHTML = "I'm";
}

function postEditStatus() {
	var status = document.status.status.value;
	var stripped = status.replace(/(<([^>]+)>)/ig,""); 
	if (status==stripped) {
	
		// AJAX
		$.ajax({
			type: 'GET',
			url: DOMAIN+'?ajaxRequest=true&postEditStatus=true&id='+document.status.id.value+'&status='+document.status.status.value,
			success: function(html){
				$('#editStatus').html(html);
				document.getElementById('editStatusButton').innerHTML = "<h5><a href='javascript:editStatus();'>[edit]</a>  <a href=DOMAIN+'?action=delete_status'>[delete]</a></h5>";
			}
		});
	}
	else alert ("You're not allowed to include HTML in your status.");
}

/************************************ calendar **********************************/
/* Shows calendar date picker on all input fields with class="calendar"			*/
/********************************************************************************/
function calendar() {
	$('.calendar').datepicker({ 
		/*showOn: 'both', 
		buttonImage: DOMAIN+'images/calendar.png', 
		buttonImageOnly: true */
	});
}

/************************************* Navigation ***********************************/
document.onclick = onClicks;
var topNavTabRegistered = null;

function onClicks(e) {
	if(topNavTabRegistered!=null){
		var targ;
		if (!e) var e = window.event;
			
		if (e.target) targ = e.target; // Gecko
		else if (e.srcElement) targ = e.srcElement; // IE
		if (targ.nodeType == 3) targ = targ.parentNode; // Safari

		if(targ.id!=topNavTabRegistered && targ.id!='nav_'+topNavTabRegistered && targ.id!='img_'+topNavTabRegistered) {
			if(PAGE_ID!=topNavTabRegistered) {
				document.getElementById(topNavTabRegistered).className = 'back_tab_blue';
				document.getElementById(topNavTabRegistered + '_A').className = 'white';
				document.getElementById('img_' + topNavTabRegistered).src = '/images/ar_down.gif';
			}
			//document.getElementById('nav_'+topNavTabRegistered).style.display = "none";
			
			topNavTabRegistered = null;
		}
	}
}

function tabOn(id) {
	if(document.getElementById(id).className=="back_tab_blue") {
		document.getElementById(id).className = 'back_tab_white';
		document.getElementById(id + '_A').className = 'blue';
		//document.getElementById('img_' + id).src = '/images/ar_down_bl.gif';
	}
	else topNavTabRegistered = id;
	document.getElementById(id+"Div").style.display = 'block';
}

function tabOff(id) {
	if(topNavTabRegistered!=id) {
		document.getElementById(id).className = 'back_tab_blue';
		document.getElementById(id + '_A').className = 'white';
		//document.getElementById('img_' + id).src = '/images/ar_down.gif';
	}
	document.getElementById(id+"Div").style.display = 'none';
}

function tabOn1(id) {
	if (document.getElementById("selectedDiv")) document.getElementById("selectedDiv").style.display = 'none';
	document.getElementById(id).className = 'back_tab_gray';
	document.getElementById(id+"Div").style.display = 'block';
}

function tabOff1(id) {
	document.getElementById(id).className = 'back_tab_blue';
	document.getElementById(id+"Div").style.display = 'none';
	if (document.getElementById("selectedDiv")) document.getElementById("selectedDiv").style.display = 'block';
}


function downOn(id) {
	document.getElementById(id).className = 'downOn';
}

function downOff(id) {
	document.getElementById(id).className = 'downOff';
}

function tabClick(id) {
	if (topNavTabRegistered!=null && topNavTabRegistered!=id){
		if(topNavTabRegistered!=PAGE_ID) {
			document.getElementById(topNavTabRegistered).className = 'back_tab_blue';
			document.getElementById(topNavTabRegistered + '_A').className = 'white';
			document.getElementById('img_' + topNavTabRegistered).src = '/images/ar_down.gif';
		}
		document.getElementById('nav_'+topNavTabRegistered).style.display = "none";
	}
	
	document.getElementById(id).className = 'back_tab_white';
	document.getElementById(id + '_A').className = 'blue';
	document.getElementById('img_' + id).src = '/images/ar_down_bl.gif';
	topNavTabRegistered = id;
}

// Expand 
function expand(s, m) {
	var browser = window.navigator.appName;
	var w = document.body.offsetWidth;
	var dif = 0;
	if (browser != "Microsoft Internet Explorer") { dif = 12; }
	
	var d = document.getElementById(m);
	var td = document.getElementById(s);
	var left = td.offsetLeft;
	var top = td.offsetTop + 25;
	var width = td.offsetWidth - dif;
	
	// Fix IE
	if (browser == "Microsoft Internet Explorer") {
		left = left + ((w - 900) / 2.3);
		d.style.left = left;
		top = top + 174;
	}

	td.className = 'back_tab_white';
	document.getElementById(s + '_A').className = 'blue';
	
	d.style.top = top;
	d.style.width = width;
	d.style.position = "absolute";
	d.style.visibility = "visible";
	d.style.display = "block";
}

// Collapse
function collapse(s, m) {
	var d = document.getElementById(m);
	var td = document.getElementById(s);
	
	td.className = 'back_tab_blue';
	document.getElementById(s + '_A').className = 'white';
	
	d.style.position = "static";
	d.style.visibility = "hidden";
	d.style.display = "none";
}

/********************************************************************************************/

function ValidateAll(i){
	if(CheckName(document.dForm.name.value) == false) return false;
	if(CheckEmail(document.dForm.email.value) == false) return false;
	if(i==1) DoubleClickTrapperButton();
	return true;
}

function StripSpacesFromEnds(s){
	// developed by willmaster.com
	while((s.indexOf(' ',0) == 0) && (s.length > 1))
	{
		s = s.substring(1,s.length);
	}
	while((s.lastIndexOf(' ') == (s.length - 1) && (s.length > 1)))
	{
		s = s.substring(0,(s.length - 1));
	}
	if((s.indexOf(' ',0) == 0) && (s.length == 1)) s = '';
	return s;
}

function IsItPresent(s,explanation){
	// developed by willmaster.com
	s = StripSpacesFromEnds(s);
	if(s.length) return s;
	alert('Please enter ' + explanation + '.');
	return '';
}

function CheckName(s_name){
	// developed by willmaster.com
	s_name = IsItPresent(s_name,'your name');
	if(! s_name) return false;
	var i = s_name.indexOf('  ',0);
	while(i > -1)
	{
		s_name = s_name.substring(0,(i + 1)) + 
			s_name.substring((i + 2),s_name.length);
		i = s_name.indexOf('  ',0);
	}
	s_name = s_name.toLowerCase();
	var s = new String(s_name.substring(0,1));
	s = s.toUpperCase();
	s_name = s + s_name.substring(1,s_name.length);
	i = s_name.indexOf(' ',0);
	if(i == (s_name.length - 1)) i = -1;
	var ts = new String("");
	var j = 0;
	while(i > -1)
	{
		i++;
		j = i + 1;
		s = s_name.substring(i,j);
		s = s.toUpperCase();
		ts = '';
		if(i > 0) ts = s_name.substring(0,i);
		s_name = ts + s + s_name.substring(j,s_name.length);
		i = s_name.indexOf(' ',j);
		if(i == (s_name.length - 1)) i = -1;
	}
	document.dForm.name.value = s_name;
	return true;
}

function CheckEmail(s_email){
	// developed by willmaster.com
	s_email = IsItPresent(s_email,'your email address');
	if(! s_email) return false;
	var i = s_email.indexOf(' ',0);
	while(i > -1)
	{
		s_email = s_email.substring(0,i) + 
			s_email.substring((i + 1),s_email.length);
		i = s_email.indexOf(' ',0);
	}
	document.dForm.email.value = s_email;
	if((s_email.length < 6) ||
	   (s_email.indexOf('@',0) < 1) ||
	   (s_email.lastIndexOf('@') != s_email.indexOf('@',0)) ||
	   (s_email.lastIndexOf('@') > (s_email.length - 5)) ||
	   (s_email.lastIndexOf('.') > (s_email.length - 3)) ||
	   (s_email.lastIndexOf('.') < (s_email.length - 5)) ||
	   (s_email.indexOf('..',0) > -1) ||
	   (s_email.indexOf('@.',0) > -1) ||
	   (s_email.indexOf('.@',0) > -1) ||
	   (s_email.indexOf(',',0) > -1))
	{
		alert('The email address "' + s_email + '" is not valid.');
		return false;
	}
	return true;
}

NameOfForm = 'dForm';
NameOfSubmit = 'upload_av_video';
NewTextForSubmitButton = 'Uploading..';

function DoubleClickTrapperButton() {
	var s = 'document.' + NameOfForm + '.' + NameOfSubmit + ".value = '" + NewTextForSubmitButton + "'";
	eval(s);
}

function JumpToIt(list) {
    var newPage = list.options[list.selectedIndex].value
    if (newPage != "None") {
        location.href=newPage
    }
}

/************************************* Default Input Messages ***********************************/
function clearDefault(e) {
	if (e.defaultValue==e.value){
		e.value = "";
		e.style.color = "#333333";
	}
}

function restoreDefault(e) {
	if (!e.value){
		e.value = e.defaultValue;
		e.style.color = "#C6C6C6";
	}
}

/************************************* Form Field Hints ***********************************/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function prepareInputsForHints() {
	var inputs = document.getElementsByTagName("input");
	for (var i=0; i<inputs.length; i++){
		// test to see if the hint span exists first
		if (inputs[i].parentNode.getElementsByTagName("span")[0]) {
			// the span exists!  on focus, show the hint
			inputs[i].onfocus = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
			}
			// when the cursor moves away from the field, hide the hint
			inputs[i].onblur = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "none";
			}
		}
	}
	// repeat the same tests as above for selects
	var selects = document.getElementsByTagName("select");
	for (var k=0; k<selects.length; k++){
		if (selects[k].parentNode.getElementsByTagName("span")[0]) {
			selects[k].onfocus = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
			}
			selects[k].onblur = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "none";
			}
		}
	}
}

/************************************* Layers ***********************************/

function showLayer(id) {
	document.getElementById(id).style.display = "block";	
}

var layerRegistered = null;

function showLayerMouse(id) {
	if(navigator.userAgent.indexOf("Opera")!=-1) showLayer(id);
	else{
		document.getElementById(id).style.display = "block";	
		layerRegistered = id;
	}
}

// Legacy Due To Kontera Function Naming Conflict
function hideLayer(id) {
	pa_hideLayer(id);
}

function pa_hideLayer(id) {
	document.getElementById(id).style.display = "none";
	layerRegistered = null;
}

var IE = document.all?true:false
if(!IE) addEventListener('mousemove', moveLayer, false); 

document.onmousemove = moveLayer;

function moveLayer(e) {
	if(layerRegistered!=null){	
		document.getElementById(layerRegistered).style.display = "block";
		
		// Width & Height
		if(document.getElementsByTagName("div")[layerRegistered]) var w = document.getElementsByTagName("div")[layerRegistered].offsetWidth - 50;
		else if(document.getElementById(layerRegistered).style.width) var w = document.getElementById(layerRegistered).style.width - 50;
		else var w = 120;
		if(document.getElementsByTagName("div")[layerRegistered]) var h = document.getElementsByTagName("div")[layerRegistered].offsetHeight + 10;
		else if(document.getElementById(layerRegistered).style.height) var h = document.getElementById(layerRegistered).style.height + 20;
		else var h = 65;
		
		// IE
		if(IE) {
			if (document.documentElement && document.documentElement.scrollTop){
				scrollX = document.documentElement.scrollLeft;
				scrollY = document.documentElement.scrollTop;
			}else if (document.body) {
				scrollX = document.body.scrollLeft;
				scrollY = document.body.scrollTop;
			}
			
			if(((event.clientX + scrollX) - (w / 2)) < 0) x = (0 + w);
			else x = event.clientX + scrollX - 20;
			if(((event.clientY + scrollX) - h) < 0) y = event.clientY + scrollX + h + 50;
			else y = (event.clientY + scrollY) + 8;
		// Gecko
		}else{ 
			x = e.pageX - 20;
			y = e.pageY + 8;
		
			if((e.pageX + (w / 2) - 60) >= (window.innerWidth + window.scrollX)) x = window.innerWidth + window.scrollX - 60;
			if((e.pageX - (w / 2)) <= window.scrollX) x = 0 + w + window.scrollX;
			if((e.pageY - window.scrollY - h) <= 0) y = e.pageY + 10;
		}
		document.getElementById(layerRegistered).style.left = x+'px';
		document.getElementById(layerRegistered).style.top = y+'px';
		document.getElementById(layerRegistered).style.cursor = 'pointer';
	}
}

/************************************* Check Styles ***********************************/
function checkStyles() {
	// AJAX
	$.ajax({
		type: 'GET',
		url: DOMAIN+'account.php?CheckingStyles=true&biography='+document.profile.biography.value,
		success: function(html){
			$('#span_styles').html(html);
		}
	});
}

/************************************* Check Number for Select Multiple field ***********************************/
var selectedOptions = [];
function countSelected(select,maxNumber){
	for(var i=0; i<select.options.length; i++){
		if(select.options[i].selected && !new RegExp(i,'g').test(selectedOptions.toString())){
			selectedOptions.push(i);
		}
					
		if(!select.options[i].selected && new RegExp(i,'g').test(selectedOptions.toString())){
			selectedOptions = selectedOptions.sort(function(a,b){return a-b});  
			for(var j=0; j<selectedOptions.length; j++){
				if(selectedOptions[j] == i){
					selectedOptions.splice(j,1);
				}
			}
		}
			
		if(selectedOptions.length > maxNumber){
			alert('Sorry, but you may only select '+maxNumber);
			select.options[i].selected = false;
			selectedOptions.pop();
			document.body.focus();
		}  
	}    
}

/************************************************************************************/
/************************************ php functions *********************************/
/************************************************************************************/

/************************************* str_replace **********************************/
function str_replace(search, replace, subject) {
    var f = search, r = replace, s = subject;
    var ra = is_array(r), sa = is_array(s), f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;

    while (j = 0, i--) {
        while (s[i] = s[i].split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
    };
     
    return sa ? s : s[0];
}

/************************************** is_array ************************************/
function is_array( mixed_var ) {
    return ( mixed_var instanceof Array );
}

function strip_tags(str, allowed_tags) {
    var key = '', tag = '';
    var matches = allowed_array = [];
    var allowed_keys = {};
    
    // Build allowes tags associative array
    if (allowed_tags) {
        allowed_tags  = allowed_tags.replace(/[\<\> ]+/g, '');;
        allowed_array = allowed_tags.split(',');
        
        for (key in allowed_array) {
            tag = allowed_array[key];
            allowed_keys['<' + tag + '>']   = true;
            allowed_keys['<' + tag + ' />'] = true;
            allowed_keys['</' + tag + '>']  = true;
        }
    }
    
    // Match tags
    matches = str.match(/(<\/?[^>]+>)/gi);
    
    // Is tag not in allowed list? Remove from str! 
    for (key in matches) {
        // IE7 Hack
        if (!isNaN(key)) {
            tag = matches[key].toString();
            if (!allowed_keys[tag]) {
                // Looks like this is
                // reg = RegExp(tag, 'g');
                // str = str.replace(reg, '');
                str = str.replace(tag, "");
            }
        }
    }
    
    return str;
}
