/*/////////////////////////////////////////////////////////////////////////////////////////
|	
|	utilities.js - A place to store various JS functions used throughout the site
|	
|
/////////////////////////////////////////////////////////////////////////////////////////*/

var login_forward;
function getElementsByClassName(className, tag, elm){	var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");	var tag = tag || "*";	var elm = elm || document;	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);	var returnElements = [];	var current;	var length = elements.length;	for(var i=0; i<length; i++){		current = elements[i];		if(testClass.test(current.className)){			returnElements.push(current);		}	}	return returnElements;}


function previewImageName (src, num) {
	
	if (src == "") {
		document.getElementById("post_image" + num + "_filename").innerHTML =	"";
		return false;
	}
	var src_array = src.split("\\");
	var ok_type = ' <img src="images/redx.gif" alt="invalid file type" />';
	ok_type += ' Invalid file type';
	//alert (src_array[src_array.length-1]);
	if (checkImageType (src)) ok_type = ' <img src="images/greencheck.gif" alt="ok file type" />';
	document.getElementById("post_image" + num + "_filename").innerHTML = src_array[src_array.length-1] + ok_type;
	document.getElementById("post_image" + num + "_view").innerHTML = "";
}

function checkImageType (src) {
	var src_array = src.split(".");
	var extension = src_array[src_array.length-1].toLowerCase();
	//alert(extension);
	
	if (extension == 'jpg' || extension == 'png' || extension == 'gif' || extension == 'jpeg')
		return true;
	else return false;
}

function removeImage(num) {
	document.getElementById("post_image" + num + "_view").innerHTML = "";
	document.create_new_posting.elements["image" + num + "_old"].value = "";
}



// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}



original = new Array();
overlays = new Array();
var gevent;
function popup(div_id, e, osX, osY, draggable, parent, z) {
	
	gevent = e;
	//alert(gevent);
	if (!osX) osX = 0;
	if (!osY) osY = 0;
	
	var arrayPageSize = getPageSize();
	var objBody = document.getElementsByTagName("body").item(0);
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay_' + div_id);
	objOverlay.className = 'overlay';
	//objOverlay.setAttribute('class','overlay');
	objOverlay.style.display = 'none';
	
	if (e != "absolute" || parent != null) { 
		overlays[div_id] = 1;
		objOverlay.onclick = function () { hidePopup(div_id); return false;} 
	}
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '5';
	if (e != "absolute" || parent != null) {
		objOverlay.style.height = (arrayPageSize[1] + 'px');
		objOverlay.style.width = '100%';
	}
	objOverlay.style.display = 'block';
	objBody.insertBefore(objOverlay, objBody.firstChild);
	
	
	pDiv = document.getElementById(div_id);
	original[div_id] = pDiv.innerHTML;
	if (!document.getElementById('topBar_' + div_id)) {
		pDiv.innerHTML = addTopBar(div_id, pDiv, draggable, div_id);
	}
	pDiv.style.position = 'absolute';
	
	if (!z) pDiv.style.zIndex = '995';
	else pDiv.style.zIndex = z;
	var www = new String(window.location);
	var col = (www.indexOf("naked") == -1) ? "#23A0CA" : "#A535A6";
	pDiv.style.border = "3px solid " + col;
	pDiv.style.background = '#FFFFFF';

	if (parent != null) {
		pos = findPos(document.getElementById(parent));
		posX = pos[0] + osX;
		posY = pos[1] + osY;	
	}
	else if (e == "absolute") {
		posX = osX;
		posY = osY;
	}
	else {
		mouseCoordinates(e);
		posX += osX;
		posY += osY;
	}
	
	pDiv.style.marginLeft = posX + 'px';
	pDiv.style.marginTop = posY + 'px';
	pDiv.style.display = 'block';
	
	if (draggable) new Draggable(div_id,{scroll:window,handle:'topBar'});

	
}

function hidePopup (div_id, just_one) {
	
	pDiv = document.getElementById(div_id);
	pDiv.style.display = 'none';
	pDiv.innerHTML = original[div_id];
	objOverlay = document.getElementById('overlay_' + div_id);
	objOverlay.style.display = 'none';	
	
	if (!just_one) {
		var d;
		for (d in overlays) {
			if (document.getElementById('overlay_' + d)) {
				pDiv = document.getElementById(d);
				pDiv.style.display = 'none';
				pDiv.innerHTML = original[d];
			}
			if (document.getElementById('overlay_' + d)) {
				objOverlay = document.getElementById('overlay_' + d);
				objOverlay.style.display = 'none';
				//alert(BrowserDetect.browser);
				if (BrowserDetect.browser == "Safari") objOverlay.parentNode.removeChild(objOverlay);	
			}
		}
	}
}




function findPos (obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

var def = "";
function submitPhotoError (err) {
	if (err == "Don't have a password? Make one up. That will be your new password.") {
		document.getElementById('password_help').style.color = '#00212D';
		document.getElementById('password_help').style.fontWeight = 'normal';
	}
	else {
		document.getElementById('password_help').style.color = '#CC0000';
		document.getElementById('password_help').style.fontWeight = 'bold';
	}
	document.getElementById("password_help").innerHTML = err;
}

function validate () {

	def = "Don't have a password? Make one up. That will be your new password.";
	
	frm = document.submit_photo;
	var required = new Array('_image', '_email', '_password');
	var required_ids = new Array('image', 'email', 'password');
	var required_labels = new Array('image_label', 'email_label', 'password_label');
	var required_msg = new Array('You must select an Image.', 'Enter your email address', 'Enter your password');
	
	for(i=0;i<required.length;i++) {
		if (frm.elements[required[i]].value == "" || (frm.elements[required[i]].value == "Required Field" && frm.elements[required[i]].type == "text")) {
			//alert(required[i]);
			//new Effect.ScrollTo(required_ids[i]);
			if (!(frm.elements["old_image"].value != "" && i == 0)) {
				submitPhotoError(required_msg[i]);
				if (frm.elements[required[i]].type != "hidden") { 
					setTimeout('document.' + frm.name + '.' + required[i] + '.focus()', 1000);
					if (frm.elements[required[i]].type == "text") {
						frm.elements[required[i]].value = "Required Field";
						fe = document.getElementById(required_ids[i]);
						fe.onclick = function () { 
							frm.elements[required[i]].value = ""; 
							fe.onclick = null;
						}	
					}
				}
				
				setTimeout("blinkText('" + required_labels[i] + "', '#9900FF', 200)", 1200);
				setTimeout("blinkText('" + required_labels[i] + "', '#9900FF', 200)", 1700);
				
				return errorForm(frm);
			}
		}
	}
	
	
	if (!checkImageType(frm.elements['_image'].value) && frm.elements['_image'].value != "") {
		submitPhotoError("Image must be jpg/gif/png");
		frm._image.select();
		setTimeout('document.' + frm.name + '.' + required[0] + '.focus()', 1000);
		//setTimeout("blinkImage('post_image" + i + "_filename', 200)", 800);
		//setTimeout("blinkImage('post_image" + i + "_filename', 200)", 1300);
		//setTimeout("blinkImage('post_image" + i + "_filename', 200)", 1800);
		//setTimeout("blinkImage('post_image" + i + "_filename', 200)", 2300);
		
		
		return errorForm(frm);
	}
	else if (!validEmail(frm._email.value)) {
		submitPhotoError("Invalid Email");
		frm._email.select();
		setTimeout('document.' + frm.name + '.' + required[1] + '.focus()', 1000);
		setTimeout("blinkText('" + required_labels[1] + "', '#9900FF', 200)", 1200);
		setTimeout("blinkText('" + required_labels[1] + "', '#9900FF', 200)", 1700);
		return errorForm(frm);
	}
			
	if (document.getElementById('confirm_password').style.display == "block") {
		if (frm.elements["password2"].value == "") submitPhotoError("Please confirm your password");
		else if (frm.elements["password2"].value != frm.elements["_password"].value) submitPhotoError("Your passwords don't match");
		else return true;
		
		frm.password2.select();
		setTimeout('document.' + frm.name + '.' + "password2" + '.focus()', 1000);
		setTimeout("blinkText('" + "password2_label" + "', '#9900FF', 200)", 1200);
		setTimeout("blinkText('" + "password2_label" + "', '#9900FF', 200)", 1700);
		return errorForm(frm);
	}

	return true;
	
}

function validate_join () {

	def = "&nbsp;";
	
	frm = document.submit_photo;
	var required = new Array('_email', '_password');
	var required_ids = new Array('email', 'password');
	var required_labels = new Array('email_label', 'password_label');
	var required_msg = new Array('Enter your email address', 'Enter your password');
	
	for(i=0;i<required.length;i++) {
		if (frm.elements[required[i]].value == "" || (frm.elements[required[i]].value == "Required Field" && frm.elements[required[i]].type == "text")) {
			//alert(required[i]);
			//new Effect.ScrollTo(required_ids[i]);
			if (true) {
				submitPhotoError(required_msg[i]);
				if (frm.elements[required[i]].type != "hidden") { 
					setTimeout('document.' + frm.name + '.' + required[i] + '.focus()', 1000);
					if (frm.elements[required[i]].type == "text") {
						frm.elements[required[i]].value = "Required Field";
						fe = document.getElementById(required_ids[i]);
						fe.onclick = function () { 
							frm.elements[required[i]].value = ""; 
							fe.onclick = null;
						}	
					}
				}
				
				setTimeout("blinkText('" + required_labels[i] + "', '#9900FF', 200)", 1200);
				setTimeout("blinkText('" + required_labels[i] + "', '#9900FF', 200)", 1700);
				
				return errorForm(frm);
			}
		}
	}
	
	

	if (!validEmail(frm._email.value)) {
		submitPhotoError("Invalid Email");
		frm._email.select();
		setTimeout('document.' + frm.name + '.' + required[1] + '.focus()', 1000);
		setTimeout("blinkText('" + required_labels[1] + "', '#9900FF', 200)", 1200);
		setTimeout("blinkText('" + required_labels[1] + "', '#9900FF', 200)", 1700);
		return errorForm(frm);
	}
			
	if (document.getElementById('confirm_password').style.display == "block") {
		if (frm.elements["password2"].value == "") submitPhotoError("Please confirm your password");
		else if (frm.elements["password2"].value != frm.elements["_password"].value) submitPhotoError("Your passwords don't match");
		else return true;
		
		frm.password2.select();
		setTimeout('document.' + frm.name + '.' + "password2" + '.focus()', 1000);
		setTimeout("blinkText('" + "password2_label" + "', '#9900FF', 200)", 1200);
		setTimeout("blinkText('" + "password2_label" + "', '#9900FF', 200)", 1700);
		return errorForm(frm);
	}

	return true;
	
}


function validate2 () {

	frm = document.submit_photo;
	
	if (frm.elements["_image"].value == "" && frm.elements["old_image"].value == "") {
		submitPhotoError("You must select an Image.");
		setTimeout('document.' + frm.name + '._image.focus()', 1000);
		setTimeout("blinkText('image_label', '#9900FF', 200)", 1200);
		setTimeout("blinkText('image_label', '#9900FF', 200)", 1700);
		return errorForm(frm);
	}

	else if (!checkImageType(frm.elements['_image'].value) && frm.elements['_image'].value != "") {
		submitPhotoError("Image must be jpg/gif/png");
		frm._image.select();
		setTimeout('document.' + frm.name + '.' + required[0] + '.focus()', 1000);		
		return errorForm(frm);
	}

	return true;

}

function errorForm (frm) {
	
	frm.elements['submit_'].value = "Error";	
	setTimeout("document." + frm.name + ".elements['submit_'].value = 'Submit';", 1500);
	
	return false;
}



function blinkImage(id, speed) {
	img = document.getElementById(id);
	if (img.style.visibility == 'hidden') img.style.visibility = 'visible';
	else img.style.visibility = 'hidden';
	if (speed) setTimeout("blinkImage('" + id + "')", speed);
	return true;
}

function blinkText (id, color, speed, background) {

	if (!background) background = false;

	text_container = document.getElementById(id);
	original_color = (background) ? text_container.style.background : text_container.style.color;
	
	if (background) text_container.style.background = color;
	else text_container.style.color = color;
	
	
	if (speed) setTimeout("blinkText('" + id + "', '" + original_color + "', false, " + background + ")", speed);
	
	return true;
}

function addTopBar (div_id, pDiv, draggable, name) {

	var topBar, X, curs;
	
	if (name) name = "_" + name;
	
	curs = (draggable) ? ' style="cursor: move;"' : null;
	
	X = '<a href="javascript:void(0)" onclick="hidePopup(\'' + div_id + '\', \'true\')">X</a>';
	topBar = '<span id="topBar' + name + '" ' + curs + '>' + X + '</span>';
	

	return topBar + '<div style="padding: 0px 5px 5px 5px;" id="inner_' + div_id + '">' + pDiv.innerHTML + '</div>';
	
}

function popupLogin (e) {
	if (original["login"] != "" && original["login"] != null) {
		document.getElementById("login").innerHTML = original["login"];	
	}
	popup('login', e, -50, 0, false);
	document.login_form._email.focus();
}


var posX = 0;
var posY = 0;
function mouseCoordinates (e) {

	if (!e) var e = window.event;
	if (!e) return false;
	if (e.pageX || e.pageY) 	{
		posX = e.pageX;
		posY = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	
	// posX and posY contain the mouse position relative to the document
	// Do something with this information
	
}



function confirmDelete (id, e, del) {
	
	popup('deleteconfirm', e, -100, 0, false);
	document.deleteconfirm_form.delete_id.value = id;
	if (del) document.deleteconfirm_form.del.value = 1;
	setTimeout("blinkText('posting_" + id + "', '#F6C6C6', 300, true)", 300);
	setTimeout("blinkText('posting_" + id + "', '#F6C6C6', 1000, true)", 700);
	
}

function doDelete () {
	
	id = document.deleteconfirm_form.delete_id.value;
	del = document.deleteconfirm_form.del.value;
	id_string = "id=" + id + "&del=" + del;
	makeRequest('process.remove_posting.php', id_string, '');
	
	
}

function resetPassword (loginpage) {
	
	var elmid;
	if (!loginpage) elmid = "login";
	else elmid = "loginpage"
	
	email = document.login_form._email.value;
	if (!document.getElementById('topBar_resetpassword') && !loginpage) document.getElementById("resetpassword").innerHTML = addTopBar('login', document.getElementById("resetpassword"), false, 'resetpassword');
	document.getElementById(elmid).innerHTML = document.getElementById("resetpassword").innerHTML;
	if (loginpage) document.getElementById("resetpassword").innerHTML = "";
	document.forms['resetpassword_form']._email.value = email;
	//alert(document.forms['resetpassword_form']._email.value);
}

function validEmail (email) {
	
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email)) return true;
	else return false
	
}



function resendWelcome () {
	makeRequest('process.resend_welcome.php', '', 'resendwelcome_message');
	btns = document.getElementById("resendwelcome_buttons");
	btns.innerHTML = '<a href="javascript:void(0);" onclick="hidePopup(\'resendwelcome\')">Close</a>';
}

function submitPhoto (logged_in) {

	if (!logged_in) {
		if (!validate()) return false;
		else {
			submitPhotoError(def);
			userExists(document.submit_photo._email.value, document.submit_photo._password.value);
		}
	}
	else {
		if (!validate2()) return false;
		else document.submit_photo.submit();
	}

}

function register () {

	if (!validate_join()) return false;
	else {
		submitPhotoError(def);
		userExists(document.submit_photo._email.value, document.submit_photo._password.value);
	}


}

function userExists(email, password) {
	var params = "loginpage=submit&_email=" + email + "&_password=" + password

	makeRequest('process.user_exists.php', params, '');
	return false;
}

function showCommentBox () {
	document.getElementById("leavecomment").style.display = 'block';
	document.comment_form._comment.focus();
}

function hideCommentBox () {
	document.getElementById("leavecomment").style.display = 'none';
	document.comment_form._comment.value = "";
	document.comment_form._firstname.value = "";
}

function showReason(reason_id, e) {
	gevent = e;
	makeRequest('process.flag_reason.php', 'id=' + reason_id, 'reason');
	popup('flagreason', e, -157, 0, false);
}

function changeRelationship (gfchk) {
	//alert(gfchk.value );
	return false;
	if (gfchk.value == 0) {
		document.getElementById("relationship").innerHTML = "Wife";
		document.getElementById("relationship2").innerHTML = "Wife";
	}
	else {
		document.getElementById("relationship").innerHTML = "Girlfriend";
		document.getElementById("relationship2").innerHTML = "Girlfriend";
	}
}

function removeImage () {
	document.getElementById("display_photo").innerHTML = "";
	document.submit_photo.old_image.value = "";
}

var loading_toggle = false;
function loading (e) {
	
	if (!e) return false;
	
	div_id = 'loading';
	pDiv = document.getElementById(div_id);
	
	if (!loading_toggle) {
	
		gevent = e;
		//alert(gevent);
		
		pDiv.style.position = 'absolute';
		pDiv.style.zIndex = '1000';
	
		mouseCoordinates(e);
		pDiv.style.marginLeft = posX + 'px';
		pDiv.style.marginTop = posY + 'px';
		pDiv.style.display = 'block';
		loading_toggle = true;
	}
	
	else {
		pDiv.style.display = 'none';
		loading_toggle = false;
	}
	
	return false;
	
}

function adminDeleteFlag(flag_id) {
	
	makeRequest('../process.admin.delete_flag.php', 'id=' + flag_id, 'flag_' + flag_id);
}

function adminConfirm(pid) {
	
	makeRequest('../process.admin.confirm_photo.php', 'id=' + pid, 'confirmed_' + pid);
}

function adminViewThumb(fileloc, e, bigfileloc) {
	
	document.getElementById("view_thumb").innerHTML = "<a href='" + bigfileloc + "' target='_blank'><img src='" + fileloc + "' border='0' /></a>";
	popup('view_thumb', e, 0, 0, false);
}


// post revamp functions:

function ratePhoto(id, vote, code) {
    new Ajax.Updater('vote_info', '/process.rate.php?id='+id+'&rating='+vote+'&code='+code);
    for(i=1;i<11;i++) {
        if (vote == i) { $('vote_'+i).innerHTML = '<b><u>'+i+'</u></b>'; }
        else { $('vote_'+i).innerHTML = i; }
    }
}

function subscribe(user_id) {
    new Ajax.Updater('subscribe', '/process.subscribe.php?user_id='+user_id);
}

function unsubscribe(user_id, sub_page) {
    id = (sub_page) ? 'sub_'+user_id :'subscribe';
    new Ajax.Updater(id, '/process.subscribe.php?unsubscribe=1&user_id='+user_id);
}