/* Common Functions for Intersexcion.com
 * Author: Spencer Smith
*/

var forumServerURL = "http://70.167.125.195:8080";
var serverURL = "http://www.intersexcion.com";

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

function mouseoverMenuItem(el) {
	el.id = 'topMenuActive';
}
	
function mouseoutMenuItem(el) {
	el.id = '';
}	

function iconOn(el) {
	el.style.border = '1px solid #cccccc';
}

function iconOff(el) {
	el.style.border = '1px solid black';
}

function buttonOn(el) {
	var imageSrc = el.src;
	var endIndex = imageSrc.indexOf('.jpg');
	var newSrc = imageSrc.substring(0, endIndex);
	newSrc += '_on.jpg';
	el.src = newSrc;
}

function buttonOff(el) {
	var imageSrc = el.src;
	var endIndex = imageSrc.indexOf('_on.jpg');
	var newSrc = imageSrc.substring(0, endIndex);
	newSrc += '.jpg';
	el.src = newSrc;
}

function showLargeMemberPicture(el) {
	var thisSrc = el.src;
	var newSrc = thisSrc.replace("thumb", "photo");
	document.getElementById('largeMemberPicture').src = newSrc;	
}

function switchClass(el, newClassname) {
	el.className = newClassname;
}

function switchId(el, newId) {
	el.id = newId;
}

function setAdminHeader(hdr) {
	document.getElementById('adminHeader1').innerHTML = hdr;
	document.getElementById('adminHeader2').innerHTML = hdr;	
}

function show(id) {
	var el = document.getElementById(id);
	if (el) {
		el.style.display = 'block';
	}	
}

function hide(id) {
	var el = document.getElementById(id);
	if (el) {
		el.style.display = 'none';
	}	
}

function getEl(id) {
	return document.getElementById(id);
}

function isValidValue(id, name) {
	var el = getEl(id);
	if (el.value == '') {
		alert('Please enter a value for ' + name);
		return false;
	} else {
		return true;
	}
}

function submitAdminForm() {
	var adminForm = getEl('adminForm');
	adminForm.submit();
}

function submitMemberForm() {
	var memberForm = getEl('memberForm');
	memberForm.submit();
}

function submitMessageForm() {
	var messageForm = getEl('messageForm');
	messageForm.submit();
}

function confirmDelete(entityName) {
	var name = 'entry';
	if (entityName) {
		name = entityName;
	}
	var conf = confirm('Are you sure you want to delete this ' + name + '?');
	if (conf) {
		return true;
	} else {
		return false;
	}
}

function submitValidateAddPicture() {
	// make sure valid files were added
	submitAdminForm();
}

function hideUserMessage() {
	setTimeout("hideMessage()", 3000);
}

function hideMessage() {
	hide('userMessage');
}

function validateSubmitJoin() {

	// make sure all the fields are filled out
	if (isValidValue('memberName', 'Member Name') &&
		isValidValue('password1', 'Password') &&
		isValidValue('password2', 'Confirmed Password') &&
		isValidValue('emailAddress', 'Email Address') &&
		isValidValue('dob', 'dob') &&
		isValidValue('city', 'City') &&
		isValidValue('state', 'State') &&
		isValidValue('profileHeading', 'Profile Heading')) {
		
		if (getEl('memberName').value.length < 4) {
			alert('The Member Name must be at least 4 characters long');
			return;
		}
		
		if (getEl('dob').value.length != 10) {
			alert('The Date of Birth is not valid (e.g. 1980-01-20)');
			return;
		}		
		
		if (getEl('password1').value != getEl('password2').value) {
			alert('The passwords do not match, please re-confirm the password');
			return;
		}
		
		if (isDate(getEl('dob').value, 'Date of Birth')==false) {
			return;
		}
		
		if (!getEl('verifyAge').checked) {
			alert('You must be at least 18 years old to become a member');
		} else {
			submitMemberForm();
		}	
	}	  
}

function validateSubmitLogin() {
	if (isValidValue('memberName', 'Member Name') &&
		isValidValue('password', 'Password')) {		
			submitMemberForm();
	}	
}

function validateSubmitMessage() {
	if (isValidValue('subject', 'Subject') &&
		isValidValue('body', 'Message')) {		
			submitMessageForm();
	}	
}

function validateInviteFriends() {
	if (isValidValue('body', 'Message')) {	
	
		if ((getEl('emailAddress1').value == '') && 
			(getEl('emailAddress2').value == '') && 
			(getEl('emailAddress3').value == '')) {
			
				alert('Please enter at least 1 email address');
			
		} else {
			submitMessageForm();
		}	
	}
}

function viewProfile(userId) {
	window.top.location.href = '../viewProfile.jsp?profileId=' + userId;
}


function validateSubmitSettings() {

	// make sure all the fields are filled out
	if (isValidValue('memberName', 'Member Name') &&
		isValidValue('emailAddress', 'Email Address') &&
		isValidValue('city', 'City') &&
		isValidValue('state', 'State') &&
		isValidValue('profileHeading', 'Profile Heading') &&
		isDate(getEl('dob').value, 'Date of Birth')) {
		
		// submit the form
		submitAdminForm();
	}	
}


function validateAdminSubmitSettings() {

	// make sure all the fields are filled out
	if (isValidValue('memberName', 'Member Name') &&
		isValidValue('emailAddress', 'Email Address') &&
		isValidValue('profileHeading', 'Profile Heading')) {	
		
		if (getEl('dob').value != '') {
		
			if (isDate(getEl('dob').value, 'Date of Birth')) {

				// submit the form
				submitAdminForm();			
			}			
			
		} else {	
		
			// submit the form
			submitAdminForm();
		}	
	}	
}


function addBuddy(memberId) {

	var callback = 
	{ 
	  success: function(o) {
	  	showAjaxSuccessMessage();
	  }, 
	  failure: function(o) {
	  	showAjaxFailureMessage();
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 
	
	var sUrl = serverURL + '/ajax_addBuddy.jsp?memberId=' + memberId;	
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);	
}

function blockMember(memberId) {

	var callback = 
	{ 
	  success: function(o) {
	  	showAjaxSuccessMessage();
	  }, 
	  failure: function(o) {
	  	showAjaxFailureMessage();
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 
	
	var sUrl = serverURL + '/ajax_blockMember.jsp?memberId=' + memberId;	
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}

function sendMessage(memberId) {

	var subject = getEl('messageSubjectInput').value;
	var body = getEl('messageBodyInput').value;

	var callback = 
	{ 
	  success: function(o) {
	  	showAjaxSuccessMessage();
	  }, 
	  failure: function(o) {
	  	showAjaxFailureMessage();
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 
	
	if (subject != '' && body != '') {
	
		var sUrl = serverURL + '/ajax_sendMessage.jsp?memberId=' + memberId + '&subject=' + subject + '&body=' + body;	
		var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
		
		// clear out the form field values
		getEl('messageSubjectInput').value = '';
		getEl('messageBodyInput').value = '';
	}	
}

function requestAccess(memberId) {

	var msg = getEl('requestMessage').value;

	var callback = 
	{ 
	  success: function(o) {
	  	showAjaxSuccessMessage();
	  }, 
	  failure: function(o) {
	  	showAjaxFailureMessage();
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 
	
	var sUrl = serverURL + '/ajax_requestPrivateAccess.jsp?memberId=' + memberId + '&message=' + msg;	
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
	
	// clear out the form field values
	getEl('requestMessage').value = '';
}

function sendPassword() {

	var memberName = getEl('forgotPasswordMemberName').value;

	var callback = 
	{ 
	  success: function(o) {
	  	showAjaxSuccessMessage();
	  }, 
	  failure: function(o) {
	  	showAjaxFailureMessage();
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 
	
	var sUrl = serverURL + '/ajax_sendPassword.jsp?memberName=' + memberName;	
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
	
	// clear out the form field values
	getEl('forgotPasswordMemberName').value = '';	
}

function showAjaxSuccessMessage() {	
	window.status = 'Action Completed Successfully';
	return true;
}

function showAjaxFailureMessage() {
	window.status = 'Action Failed';
	return true;
}

function performSearch() {
	var frm = document.getElementById('searchForm');
	frm.submit();
}

function addForumMember(memberName, password, emailAddress) {

	var callback = 
	{ 
	  success: function(o) {
	  }, 
	  failure: function(o) {
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 
	
	var sURL = forumServerURL + '/javabb/save_new_member.jbb';
		sURL += '?user.user=' + memberName;
		sURL += '&user.email=' + emailAddress;
		sURL += '&user.passwordHash=' + password;		
		sURL += '&confirmPassword=' + password;		
		sURL += '&user.show_mail=1';	
		sURL += '&user.show_signature=1';	
		sURL += '&user.receiveNews=1';	
		sURL += '&submit=Send';	
		
	var request = YAHOO.util.Connect.asyncRequest('GET', sURL, callback);
}

function openForums(memberName, password) {

	var sURL = forumServerURL + '/javabb/verifylogin.jbb';
		sURL += '?user.user=' + memberName;
		sURL += '&user.passwordHash =' + password;
		// sURL += '&redirect=somevalue';
		sURL += '&login=Enter';

	openCenteredWindow(sURL);
}

var forumsWindow;

function openCenteredWindow(url, w, h) {
    var width = 860;
    var height = 580;
	if (w != null) {
		width = w;
	}
	if (h != null) {
		height = h;
	}
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    var windowFeatures = "width=" + width + ",height=" + height + ",status,resizable,scrollbars=1,left=" + left + ",top=" + top + "screenX=" + left + ",screenY=" + top;
    forumsWindow = window.open(url, "subWind", windowFeatures);
}

function openAboutUs(locale) {
	var pageName = 'aboutUs.jsp';
	if (locale != 'en') {
		pageName = 'aboutUs_' + locale + '.jsp';
	}
	openCenteredWindow(pageName, 500, 220);
}

function openPrivacyPolicy(locale) {
	var pageName = 'privacyPolicy.jsp';
	if (locale != 'en') {
		pageName = 'privacyPolicy_' + locale + '.jsp';
	}
	openCenteredWindow(pageName, 500, 400);
}

function openTermsOfUse(locale) {
	var pageName = 'termsOfUse.jsp';
	if (locale != 'en') {
		pageName = 'termsOfUse_' + locale + '.jsp';
	}
	openCenteredWindow(pageName, 500, 400);
}

function setSessionLocale(locale) {
	var url = window.top.location.href;
	
	if (url.indexOf('locale') > -1) {
		var endIndex = url.indexOf('locale') -1;
		url = url.substring(0, endIndex);
	}
	
	if (url.indexOf('?') > -1) {
		url += '&locale=' + locale;
	} else {
		url += '?locale=' + locale;	
	}
	window.top.location.href = url;
}



function translateEnglishMessage() {

	var subject = getEl('messageSubject').value;
	var body = getEl('messageBody').value;

	var callback = 
	{ 
	  success: function(o) {
	  	showAjaxSuccessMessage();
	  }, 
	  failure: function(o) {
	  	showAjaxFailureMessage();
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 
	
	var sUrl = serverURL + '/ajax_translate.jsp?from=english&subject=' + subject + '&body=' + body;	
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}

function translateEnglishToSpanishMessageBio() {
	var profileHeading = getEl('messageProfileHeading').innerHTML;
	var translation = translateEnglishToSpanish(profileHeading, 'messageProfileHeading');
	
	var profileBio = getEl('messageProfileBio').innerHTML;
	var translation = translateEnglishToSpanish(profileBio, 'messageProfileBio');	
}

function translateSpanishToEnglishMessageBio() {
	var profileHeading = getEl('messageProfileHeading').innerHTML;
	var translation = translateSpanishToEnglish(profileHeading, 'messageProfileHeading');
	
	var profileBio = getEl('messageProfileBio').innerHTML;
	var translation = translateSpanishToEnglish(profileBio, 'messageProfileBio');	
}

function translateEnglishToSpanishMessage() {
	var subject = getEl('messageSubject').innerHTML;
	var translation = translateEnglishToSpanish(subject, 'messageSubject');
	
	var body = getEl('messageBody').innerHTML;
	var translation = translateEnglishToSpanish(body, 'messageBody');	
}

function translateSpanishToEnglishMessage() {
	var subject = getEl('messageSubject').innerHTML;
	var translation = translateSpanishToEnglish(subject, 'messageSubject');
	
	var body = getEl('messageBody').innerHTML;
	var translation = translateSpanishToEnglish(body, 'messageBody');	
}

function translateEnglishToSpanish(input, divId) {

	var callback = 
	{ 
	  success: function(o) {
	  	if (o.responseText != null && o.responseText.trim() != 'null') {
		  	document.getElementById(divId).innerHTML = o.responseText.trim();
		}	
	  }, 
	  failure: function(o) {
	  	return input;
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 	
	
	var sUrl = serverURL + '/ajax_translate.jsp?from=english&input=' + escape(input);		
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);	
}

function translateSpanishToEnglish(input, divId) {

	var callback = 
	{ 
	  success: function(o) {
	  	if (o.responseText != null && o.responseText.trim() != 'null') {
		  	document.getElementById(divId).innerHTML = o.responseText.trim();
		}	
	  }, 
	  failure: function(o) {
	  	return input;
	  }, 
	  timeout: 2000, 
	  argument: [] 
	} 	
	var sUrl = serverURL + '/ajax_translate.jsp?from=spanish&input=' + escape(input);		
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);	
}

function html_entity_decode(str) {
  var ta=document.createElement("textarea");
  ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  return ta.value;
}

function replaceExtChars(text,output) {
	text = text.replace(eval('/&/g'), '&amp;');
	fromTo = new
	Array('&AElig;','Æ','&Aacute;','Á','&Acirc;','Â',' &Agrave;','À','&Aring;','Å','&Atilde;','Ã','&Auml; ','Ä','&Ccedil;','Ç','&ETH;','Ð','&Eacute;','É','& Ecirc;','Ê','&Egrave;','È','&Euml;','Ë','&Iacute;' ,'Í','&Icirc;','Î','&Igrave;','Ì','&Iuml;','Ï','&N tilde;','Ñ','&Oacute;','Ó','&Ocirc;','Ô','&Ograve; ','Ò','&Oslash;','Ø','&Otilde;','Õ','&Ouml;','Ö',' &THORN;','Þ','&Uacute;','Ú','&Ucirc;','Û','&Ugrave ;','Ù','&Uuml;','Ü','&Yacute;','Ý','&aacute;','á', '&acirc;','â','&aelig;','æ','&agrave;','à','&aring ;','å','&atilde;','ã','&auml;','ä','&brvbar;','¦', '&ccedil;','ç','&cent;','¢','&copy;','©','&deg;',' °','&eacute;','é','&ecirc;','ê','&egrave;','è','&e th;','ð','&euml;','ë','&frac12;','½','&frac14;','¼ ','&frac34;','¾','&gt;','>','&gt','>','&iacute;',' í','&icirc;','î','&iexcl;','¡','&igrave;','ì','&iq uest;','¿','&iuml;','ï','&laquo;','«','&lt;','<',' &lt','<','&mdash;','—','&micro;','µ','&middot;','· ','&ndash;','–','&not;','¬','&ntilde;','ñ','&oacut e;','ó','&ocirc;','ô','&ograve;','ò','& oslash;','ø','&otilde;','õ','&ouml;','ö','&para;', '¶','&plusmn;','±','&pound;','£','&quot;','\"','&r aquo;','»','&reg;','®','&sect;','§','­','*','&sup1 ;','¹','&sup2;','²','&sup3;','³','&szlig;','ß','&t horn;','þ','&tilde;','˜','&trade;','™','&uacute;', 'ú','&ucirc;','û','&ugrave;','ù','&uuml;','ü','&ya cute;','ý','&yen;','¥','&yuml;','ÿ');

	if (output) {
		fromTo[fromTo.length] = '&amp;';
		fromTo[fromTo.length] = '&';
	}
	for (i=0; i < fromTo.length; i=i+2)
		text = text.replace(eval('/'+fromTo[i+1]+'/g'), fromTo[i])
	return (text);
}

function adminMemberSearch() {
	var frm = getEl('adminMemberSearch');
	frm.submit();
}

function previewProfile(profileId) {
	var pageName = 'viewProfile.jsp?preview=true';
	pageName += '&profileId=' + profileId;	
	openCenteredWindow(pageName, 800, 520);
}


function openIVideochatWindow(membername, profileid) {
	var pageName = 'ivideochat.jsp';
	pageName += '?profileId=' + profileid;	
	pageName += '&membername=' + membername;		  
	openCenteredWindow(pageName, 803, 530);
}


// Declaring valid date character, minimum year and maximum year
var dtCh= "-";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr, fieldName){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format for " + fieldName + " should be : mm-dd-yyyy");
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month for " + fieldName);
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day for " + fieldName);
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear+ " for " + fieldName);
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date for " + fieldName);
		return false;
	}
return true;
}

function privateChat(memberId) {
	var sURL = 'chat.jsp?action=createRoom&mid=' + memberId;
	openCenteredWindow(sURL, 800, 600);
}

function joinPrivateChat(memberId) {
	var sURL = 'chat.jsp?action=joinRoom';
	openCenteredWindow(sURL, 800, 600);
}
