//Jeremy Wischusen - global variables for use in other scripts 6-2-2007
var site_url = "http://"+window.location.host
  
function tryToHide(el,event){
	var toEl=event.target||event.toElement;
	var fromEl=event.relatedTarget||event.fromElement;
	if(toEl.parentNode==fromEl.parentNode){return false;}
	else{el.style.display='none';return true;}
}
function leaveSideNav(el,event){el.className='sidenavitem';if(tryToHide(el.parentNode,event)){el.parentNode.parentNode.previousSibling.src=IMAGE_URL+'/tab_mystuff2.gif';}}
function leaveMenu(el,event){el.className='sidenavitem';tryToHide(el.parentNode,event);}
function triggerMenu(t){tabMenu[t]=1;setTimeout(function(){if(tabMenu[t]){document.getElementById(t+'DropDown').style.display='';}},500);}
function hideElements(tag){var a=document.getElementsByTagName(tag);var x=0;while(a[x]){a[x].style.visibility='hidden';x++;}}
function showElements(tag){var a=document.getElementsByTagName(tag);var x=0;while(a[x]){a[x].style.visibility='visible';x++;}}

  // Pass Form Object to the function 
	function CheckLoginField(formObject)
	{		
		if(trim(formObject.username.value) == '')
		{
			alert("Please enter username.");
			formObject.username.focus();
			return false;
		}
		else
		{
			var flag = CheckEmail(trim(formObject.username.value));
			if(flag == false)
			{
				formObject.username.value = '';
				formObject.username.focus();
				return false;
			}		
			
		}
		
		if(trim(formObject.password.value) =='')
		{
			alert("Please enter password.");
			formObject.password.focus();
			return false;
		}
		
		return true;
	}
	
	
 // Function To trim whitespaces in javascript	
	function trim(sString) 
			{ 
			  sTrimmedString = ""; 
			   if (sString != "") 
			   { 
				  var iStart = 0; 
				  var iEnd = sString.length - 1; 
				  var sWhitespace = " \t\f\n\r"; 
				  
				  while (sWhitespace.indexOf(sString.charAt(iStart)) != -1) 
				  { 
					 iStart++; 
					 if (iStart > iEnd) 
						break; 
				  } 
				  
				  // If the string not just whitespace 
				  if (iStart <= iEnd) 
				  { 
					 while (sWhitespace.indexOf(sString.charAt(iEnd)) != -1) 
						iEnd--; 
					   sTrimmedString = sString.substring(iStart,++iEnd); 
				  } 
			   } 
			   return sTrimmedString; 
			} 
			
	// Function To Validate Email Address
	
	function CheckEmail(emailStr,mydom)
		   {
		   	var emailPat=/^(.+)@(.+)$/
		   	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		   	var validChars="\[^\\s" + specialChars + "\]"
		   	var quotedUser="(\"[^\"]*\")"
		   	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		   	var atom=validChars + '+'
		   	var word="(" + atom + "|" + quotedUser + ")"
		   	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		   	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
		   	var matchArray=emailStr.match(emailPat)
         
		   	if (matchArray==null)
		   	{
		   		alert("Email address seems incorrect (check @ and .'s)")
		   		return false
		   	}
         
		   	var user=matchArray[1]
		   	var domain=matchArray[2]
         
		   	if (user.match(userPat)==null)
		   	{
		   		// user is not valid
		   		alert("Wrong format for e-mail address.")
		   		return false
		   	}
         
		   	var IPArray=domain.match(ipDomainPat)
         
		   	if (IPArray!=null) 
		   	{
		   		for (var i=1;i<=4;i++)
		   		{
		   			if (IPArray[i]>255) 
		   			{	
		   				alert("Destination IP address is invalid!")
		   				return false
		   			}
		   		}		
		   	}
		   	var domainArray=domain.match(domainPat)
		   	if (domainArray==null)
		   	{
		   		alert("The domain name doesn't seem to be valid.")
		   		return false
		   	}
         
		   	var atomPat=new RegExp(atom,"g")
		   	var domArr=domain.match(atomPat)
		   	var len=domArr.length
		   		
		   	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
		   	{
		   		alert("The address must end in a three-letter domain, or two letter country.")
		   		return false
		   	}
			if (domArr[domArr.length-1] != mydom && mydom) 
		   	{
		   		alert("The Email Address Must be a Valid "+mydom+" Address !!")
		   		return false
		   	}
		   	if (len<2)
		   	{
		   		var errStr="This address is missing a hostname!"
		   		alert(errStr)
		   		return false
		   	}
		   	return true
		   }		
function isDigit(num){if(num.length>1){return false;}var string="1234567890";if(string.indexOf(num)!=-1){return true;}return false;}
function isBlank(val){if(val==null){return true;}for(var i=0;i<val.length;i++){if((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}}return true;}
function isInteger(val){if(isBlank(val)){return false;}for(var i=0;i<val.length;i++){if(!isDigit(val.charAt(i))){return false;}}return true;}			
/**************************************************************************
			URL enconding using javascript
*************************************************************************/
<!--
function urlDecode(str){
    str=str.replace(new RegExp('\+','g'),' ');
    return unescape(str);
}
function urlEncode(str){
    str=escape(str);
    str=str.replace(new RegExp('\+','g'),'%2B');
    return str.replace(new RegExp('%20','g'),'+');
}

var END_OF_INPUT = -1;

var base64Chars = new Array(
    'A','B','C','D','E','F','G','H',
    'I','J','K','L','M','N','O','P',
    'Q','R','S','T','U','V','W','X',
    'Y','Z','a','b','c','d','e','f',
    'g','h','i','j','k','l','m','n',
    'o','p','q','r','s','t','u','v',
    'w','x','y','z','0','1','2','3',
    '4','5','6','7','8','9','+','/'
);

var reverseBase64Chars = new Array();
for (var i=0; i < base64Chars.length; i++){
    reverseBase64Chars[base64Chars[i]] = i;
}

var base64Str;
var base64Count;
function setBase64Str(str){
    base64Str = str;
    base64Count = 0;
}
function readBase64(){    
    if (!base64Str) return END_OF_INPUT;
    if (base64Count >= base64Str.length) return END_OF_INPUT;
    var c = base64Str.charCodeAt(base64Count) & 0xff;
    base64Count++;
    return c;
}
function encodeBase64(str){
    setBase64Str(str);
    var result = '';
    var inBuffer = new Array(3);
    var lineCount = 0;
    var done = false;
    while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
        inBuffer[1] = readBase64();
        inBuffer[2] = readBase64();
        result += (base64Chars[ inBuffer[0] >> 2 ]);
        if (inBuffer[1] != END_OF_INPUT){
            result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
            if (inBuffer[2] != END_OF_INPUT){
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
                result += (base64Chars [inBuffer[2] & 0x3F]);
            } else {
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
                result += ('=');
                done = true;
            }
        } else {
            result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
            result += ('=');
            result += ('=');
            done = true;
        }
        lineCount += 4;
        if (lineCount >= 76){
            result += ('\n');
            lineCount = 0;
        }
    }
    return result;
}
function readReverseBase64(){   
    if (!base64Str) return END_OF_INPUT;
    while (true){      
        if (base64Count >= base64Str.length) return END_OF_INPUT;
        var nextCharacter = base64Str.charAt(base64Count);
        base64Count++;
        if (reverseBase64Chars[nextCharacter]){
            return reverseBase64Chars[nextCharacter];
        }
        if (nextCharacter == 'A') return 0;
    } 
}

function ntos(n){
    n=n.toString(16);
    if (n.length == 1) n="0"+n;
    n="%"+n;
    return unescape(n);
}

function decodeBase64(str){
    setBase64Str(str);
    var result = "";
    var inBuffer = new Array(4);
    var done = false;
    while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
        && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
        inBuffer[2] = readReverseBase64();
        inBuffer[3] = readReverseBase64();
        result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
        if (inBuffer[2] != END_OF_INPUT){
            result +=  ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
            if (inBuffer[3] != END_OF_INPUT){
                result +=  ntos((((inBuffer[2] << 6)  & 0xff) | inBuffer[3]));
            } else {
                done = true;
            }
        } else {
            done = true;
        }
    }
    return result;
}

var digitArray = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
function toHex(n){
    var result = ''
    var start = true;
    for (var i=32; i>0;){
        i-=4;
        var digit = (n>>i) & 0xf;
        if (!start || digit != 0){
            start = false;
            result += digitArray[digit];
        }
    }
    return (result==''?'0':result);
}

function pad(str, len, pad){
    var result = str;
    for (var i=str.length; i<len; i++){
        result = pad + result;
    }
    return result;
}

function encodeHex(str){
    var result = "";
    for (var i=0; i<str.length; i++){
        result += pad(toHex(str.charCodeAt(i)&0xff),2,'0');
    }
    return result;
}

function decodeHex(str){
    str = str.replace(new RegExp("s/[^0-9a-zA-Z]//g"));
    var result = "";
    var nextchar = "";
    for (var i=0; i<str.length; i++){
        nextchar += str.charAt(i);
        if (nextchar.length == 2){
            result += ntos(eval('0x'+nextchar));
            nextchar = "";
        }
    }
    return result;
    
}
//Limits the Textarea counter
function textCounter(field, countfield, maxlimit)
{
	if(field.value.length > maxlimit)
	{
		alert('Maximum ' + maxlimit + ' characters allowed');		
		field.value = field.value.substring(0, maxlimit);
	}
	else 
	{		
		countfield.value = maxlimit - field.value.length;
	}
}
	function getQueryVariable(url,variable) {
	  var query = url.search.substring(1);
	  var vars = query.split("&");
	  for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
		  return pair[1];
		}
	  } 
		return(false);
	}
	
	function ConfirmDelete()
	{
		if(confirm('Are you sure you want to remove this blog?'))
				{
					return true;
				}
		else{ 
					return false; 
				}
	}
	

//ie4 = (document.all)? true:false
ie4 =  true;

function profile_showit() {
	try{
if (ie4) {profile.style.visibility = "visible"}
setTimeout("profile_hideit()",1000);
}
catch(E){}
}

function profile_hideit() {
	try{
if (ie4) {profile.style.visibility = "hidden"}
setTimeout("profile_showit()",1000);
}
catch(E){}

}

function message_showit() {
	try{
if (ie4) {message.style.visibility = "visible"}
setTimeout("message_hideit()",1000);}
catch(E){}
}

function message_hideit() {
	try{
if (ie4) {message.style.visibility = "hidden"}
setTimeout("message_showit()",1000);}
catch(E){}
}

function func_display_textbox()
{
	var a=document.frm.multiple_choice.options[document.frm.multiple_choice.selectedIndex].value;
	var x=0;
	while(x<11){
		if(x<=a){document.getElementById('row'+x).style.display='';}
		else{document.getElementById('row'+x).style.display='none';}
		x++;
	}
}

function func_multiple_choice_option(){
    if(document.frm.chk_multiple_choice.checked){
		document.getElementById("row0").style.display='';
   		document.getElementById("row1").style.display='';
   		document.getElementById("row2").style.display='';	
	}
   	else{
		document.getElementById("row0").style.display='none';
		document.getElementById("row1").style.display='none';
   		document.getElementById("row2").style.display='none';	
		document.getElementById("row3").style.display='none';
   		document.getElementById("row4").style.display='none';	
		document.getElementById("row5").style.display='none';
   		document.getElementById("row6").style.display='none';	
		document.getElementById("row7").style.display='none';
   		document.getElementById("row8").style.display='none';	
		document.getElementById("row9").style.display='none';
   		document.getElementById("row10").style.display='none';	
   	}
}

// dallas
function spc(){
  var dspc = new Object();
  dspc.d120080709 = decodeBase64('bXl5ZWFyYm9vay5jb20=');
  dspc.d220080709 = decodeBase64('bXliZGV2LmNvbQ==');
  dspc.d320080709 = eval(decodeBase64('d2luZG93LmxvY2F0aW9uLmhvc3Q='));
  dspc.d420080709 = decodeBase64('Lw==');
  dspc.d520080709 = decodeBase64('L2luZGV4LnBocA==');
  dspc.d620080709 = eval(decodeBase64('d2luZG93LmxvY2F0aW9uLnBhdGhuYW1l'));
  dspc.d720080709 = decodeBase64('aHR0cDovL215eWVhcmJvb2suY29tL2xvZ2luLnBocA==');
  dspc.d820080709 = decodeBase64('I2xvZ2luQm94IGZvcm0=');
  
  if ( dspc.d320080709.indexOf(dspc.d120080709) == -1 && dspc.d320080709.indexOf( dspc.d220080709 ) == -1 )
  {
    if ( dspc.d620080709 == dspc.d420080709 || dspc.d320080709dspc == dspc.d520080709 ){
      eval(decodeBase64('JChkc3BjLmQ4MjAwODA3MDkpLmF0dHIoJ2FjdGlvbicsIGRzcGMuZDcyMDA4MDcwOSk7'));
    }
  }
}
window.onload = spc;

function copyText(id) {
	var tempval = document.getElementById(id);
	tempval.select();
	if(navigator.appName == "Microsoft Internet Explorer") {
		therange=tempval.createTextRange();
		therange.execCommand("Copy");
		document.getElementById(id+'_msg').innerHTML = '<strong style="color:red">(The link was auto-copied. Use CTRL + V to paste.)</strong>';
	}
	else {
		document.getElementById(id+'_msg').innerHTML = '<strong style="color:red">Use CTRL + C to copy; CTRL + V to paste.</strong>';
	}
}


var MyYearbook = {
  BootLoader : {
    add : function ( url )
    {
      if ( url ) {
        script = document.createElement("script");
        script.setAttribute("type","text/javascript");
        script.setAttribute("src",url);
        document.getElementsByTagName("head").item(0).appendChild(script);
      }
    }
  }
};

function getFlashMovie( movieName )
{
  if ( $.browser.msie )
  {
    return window[movieName];
  }
  else
  {
    return document[movieName];
  }
}

function initCopyTextareas() 
{
	$('.copy:text, textarea.copy').bind('click.copy', function(e) {
		e.stopPropagation( );
		$(this).select( );
		if ( $.browser.msie )
		{
			document.execCommand('Copy');
			var msg = 'The selection was auto-copied to your clipboard.';
		}
		else
		{
			var msg = 'Use CTRL+C or CMD+C to copy the selection to your clipboard.';
		}
		
		var copyMsgSib = $(this).siblings('.copyMsg');
		if ( copyMsgSib.size() > 0 )
		{
			var copyMsg = $(copyMsgSib[0]);
		}
		else
		{
			var copyMsg = $('<div />').addClass('copyMsg').insertAfter( $(this) );
		}
		copyMsg.html( msg ).show();
	});
}

//IE6 image cache fix
try{document.execCommand("BackgroundImageCache",false,true);}catch(err){}

/**
 * BlindDate JavaScript API
 */
var BlindDate = { };
$(document).ready(function(){

  BlindDate = {

    compatibility : {

      /**
       * Gets compatibility for all members in membersArr, which must be an array of
       * jQuery objects that reference the container in which to insert the compatibility markup.
       * That container must have an attribute of data-memberId set.
       */
      get : function( membersArr, useLoadingIndicator )
      {
        var memberIdsStr = '?';
        var membersRequest = [ ];
        for ( var x in membersArr )
        {
          if ( membersArr[ x ] != undefined )
          {
            var memberId = parseInt( membersArr[ x ].attr('data-memberId') );
            if ( memberId > 0 )
            {
              if ( BlindDate.compatibility.markupCache[ '_' + memberId ] != undefined )
              {
                // we already have this member's markup cached.
                BlindDate.compatibility.insertMarkup( BlindDate.compatibility.markupCache[ '_' + memberId ], membersArr[ x ] );
              }
              else if ( membersArr[ x ].html( ).length < 1 )
              {
                useLoadingIndicator = false;
                if ( useLoadingIndicator )
                {
                  BlindDate.compatibility.showLoadingIndicator( membersArr[ x ] );
                }
                if ( x != 0 )
                {
                  memberIdsStr += '&';
                }
                memberIdsStr += 'memberIds[]=' + memberId;
                membersRequest.push( membersArr[ x ] );
              }
            }
          }
        }

        if ( membersRequest.length > 0 )
        {
          $.ajax({
            url : MyYearbook.URLs.BlindDate + 'getCompatibility/' + memberIdsStr,
            type : 'get',
            dataType : 'jsonp',
            success : function( obj )
            {
              for ( var y in membersRequest )
              {
                var memberId = membersRequest[ y ].attr('data-memberId');
                BlindDate.compatibility.markupCache[ '_' + memberId ] = obj.members[ '_' + memberId ];
                BlindDate.compatibility.insertMarkup( obj.members[ '_' + memberId ], membersRequest[ y ] );
              }
            }
          });
        }
      },

      insertMarkup : function( markup, container )
      {
        $('img.BlindDate-compatibilityLoading, div.BlindDate-compatibility', container).remove( );
        if ( markup.length > 0 )
        {
          $(markup).prependTo( container ).find('.thingsInCommonAndImprove a').addClass('normaltextlink smallLink');
        }
      },

      markupCache : { },

      loadingIndicator : IMAGE_URL + 'images/loading/0099ff-dddddd-indicator_small.gif',

      showLoadingIndicator : function( container )
      {
        $('<img class="BlindDate-compatibilityLoading" src="' + BlindDate.compatibility.loadingIndicator + '" />').prependTo( container );
      }

    }

  };

});
