function checkSearch(form) {
	if (form.keyword.value=='' || form.keyword.value=='Search...') { 
		alert('Please enter a search term so we can help you find what you\'re looking for.'); 
		return false;
	}
	
	return true;
}

function showHideTextBox(id, link_id){
  var el = document.getElementById(id);
  var link_element = document.getElementById(link_id);
//  var file_element = document.getElementById('comment');
  if(el.style.display != 'block') {
	el.style.display = 'block';
	link_element.innerHTML = 'Hide comment area';
//	file_element.className = 'file_expand';
  } else {
	el.style.display = 'none';
	link_element.innerHTML = 'Leave a comment';
//	file_element.className = 'file';
  }
}

function showHideGameContent(hidden_div, expand_icon, game_div, is_games_radar){
  var el = document.getElementById(hidden_div);
  var link_element = document.getElementById(expand_icon);
  var classDiv = document.getElementById(game_div);

  if(el.style.display != 'block') {
	el.style.display = 'block';
	link_element.innerHTML = '<img src="/img/minus.gif" onmouseover="showAlt(this, \'Minimize\')" onmouseout="hideAlt()" />';
	if(is_games_radar == 1) {
		classDiv.className = 'game games_radar_bottom';
	} else {
		classDiv.className = 'game';
	}
  } else {
	el.style.display = 'none';
	link_element.innerHTML = '<img src="/img/plus.gif" onmouseover="showAlt(this, \'Expand for more info\')" onmouseout="hideAlt()" />';
	classDiv.className = 'game_collapsed';
  }
}

function showHideContent(id, link_id){
  var el = document.getElementById(id);
  var link_element = document.getElementById(link_id);
  if(el.style.display != 'block') {
	el.style.display = 'block';
	link_element.innerHTML = '<img src="/img/minus.gif" onmouseover="showAlt(this, \'Minimize\')" onmouseout="hideAlt()" />';
  } else {
	el.style.display = 'none';
	link_element.innerHTML = '<img src="/img/plus.gif" onmouseover="showAlt(this, \'Expand for more info\')" onmouseout="hideAlt()" />';
  }
}

function setShowHide(id, link_id, myclass) {
	if (readCookie(id) == link_id) {
		showHide(id, link_id, myclass);
	}
}

function showHide(id, link_id, myclass) {
  var el = document.getElementById(id);
  var link_element = document.getElementById('link'+link_id);
  var file_element = document.getElementById('file'+link_id);

  if(el.style.display != 'block') {
	el.style.display = 'block';
	link_element.innerHTML = '<img src="/img/minus.gif" onmouseover="showAlt(this, \'Minimize\')" onmouseout="hideAlt()" />';
	if(file_element.className.indexOf('even_bg') > 0){
		file_element.className = 'file_expand even_bg';
	}else{
		file_element.className = 'file_expand ' + myclass;
	}
	
	if ($('rate_this_'+link_id)) Element.hide('rate_this_'+link_id);
	
	if ($('download_'+link_id)) Element.hide('download_'+link_id);
  } else {
	el.style.display = 'none';
	link_element.innerHTML = '<img src="/img/plus.gif" onmouseover="showAlt(this, \'Expand for more info\')" onmouseout="hideAlt()" />';
	if(file_element.className.indexOf('even_bg') > 0){
		file_element.className = 'file even_bg';
	}else{
		file_element.className = 'file ' + myclass;
	}
	
	if ($('rate_this_'+link_id)) Element.show('rate_this_'+link_id);
	if ($('download_'+link_id)) Element.show('download_'+link_id);
  }		
}

function showLogin() {
	var box_width = 382;
	var box_left = getElementPosition($('right_col')).x - box_width - 20;

	var divHTML = '<div id="float_login">';
	divHTML += '<div class="title"><p>Login</p></div>';
	divHTML += '	<div class="note"><p>Login is required to add blips, rate links, leave comments, <br />submit links, and update your profile.</p></div><br />';
	divHTML += '	<div id="login_error_msg" class="err_msg"></div>';
	divHTML += '	<div class="form_section clearfix">';
	divHTML += '		<form action="/users/login" id="float_login_form" method="post" onSubmit="loginForm(); return false;">';
	divHTML += '		<fieldset>';
	divHTML += '				<p><span class="field_left bold">Username:</span>';
	divHTML += '				   <span class="field_right"><input name="data[User][username]"  id="float_login_username" size="25" value="" type="text" /></span>';
	divHTML += '				</p>';
	divHTML += '				<p><span class="field_left bold">Password:</span>';
	divHTML += '				   <span class="field_right"><input name="data[User][password]"  id="float_login_password" type="password" size="25" value="" /></span>';
	divHTML += '				</p>';
	divHTML += '				<p class="clearfix user_login">Don\'t have an account? <a href="/registration/registration" class="link">Join Now</a>'; 
	divHTML += '					| <a href="javascript:passwordReminder()" class="link">Forgot Your Password</a>?</p><br />';
	divHTML += '				<p>';
	divHTML += '				<span><img src="/img/spinner_444.gif" alt="Spinner" id="login_spinner" style="display:none;" /></span>';
	divHTML += '				<span><input type="image" name="Login" src="/img/login.gif" alt="Login" /></span>';
	divHTML += '				   <span><input type="image" name="Cancel" src="/img/cancel.gif" alt="Cancel" onClick="Windows.focusedWindow.close(); return false;" /></span>';
	divHTML += '				</p>';
	divHTML += '				<p class="clearfix"></p>';
	divHTML += '		</fieldset>';
	divHTML += '		</form>';
	divHTML += '	</div>';
	divHTML += '</div>';

	Dialog.info(divHTML, {className:"window_noTitle", top:200, left:box_left, width:box_width, height:210} );
}

function showWaitBox() {
	var box_width = 382;
	var box_left = getElementPosition($('right_col')).x - box_width - 20;

	var divHTML = '<div id="float_login_waiting" style="text-align:left;padding-top:50px;">';
	divHTML += '	<div id="login_status_msg" style="color:#33ff33;text-align:center"><img src="/img/spinner_444.gif" alt="Spinner" id="login_spinner" />';
	divHTML += '		<br /><br /><p>Please wait as we log you in....</p></div>';
	divHTML += '</div>';
	
	Dialog.info(divHTML, {className:"window_noTitle", top:200, left:box_left, width:box_width, height:210, showEffect:Element.show, hideEffect: Element.hide} );
}

function loginForm () {
    form = document.getElementById('float_login_form');
    
    if (form.float_login_username.value.length>3 && form.float_login_password.value.length>=2) {
        checkLogin(form.float_login_username.value, form.float_login_password.value);
	} else {
		$('login_error_msg').innerHTML='The Username/Password You Entered is Invalid. Please Try Again.';
		$('login_error_msg').show();
		Windows.focusedWindow.updateHeight();
		return false;
	}
}

function checkLogin(username, password) {
	showWaitBox();

	setTimeout('sendUserPass(\''+username+'\', \''+password+'\')', 500);
}	
 
function sendUserPass(username, password) {
    new Ajax.Request('/users/floatLogin/'+username+'/'+password,
	 			{
	    		method:'get',
	    		onSuccess: function(transport){
	      			var response = transport.responseText;
	      			if (response.substr(0,14) == 'username_error'){
						Windows.focusedWindow.close();

						$('login_error_msg').innerHTML='The Username/Password You Entered is Invalid. Please Try Again.';
						$('login_error_msg').show();
						Windows.focusedWindow.updateHeight();
	      			} else if (response.substr(0,14) == 'password_error'){
						Windows.focusedWindow.close();

						$('login_error_msg').innerHTML='The Username/Password You Entered is Invalid. Please Try Again.';
						$('login_error_msg').show();
						Windows.focusedWindow.updateHeight();
					} else if (response.substr(0,10) == 'not_active'){
						new Effect.Puff(Windows.focusedWindow.getId());
						document.location.href = '/users/activation/'+username;
					} else {
						window.location.reload();
					}			
	      		},
	    		onFailure: function(transport){alert(username+password+"Connection error"+transport.status)}
	  		});
}

function passwordReminder() {
        var divHTML = '<div id="remind_password">';
        divHTML += '<div><p>';
        divHTML +=  '<span class="title">Forgot Your Password?</span>';
        divHTML +=  '        <span class="close"><a href="#" onClick="Windows.focusedWindow.close(); return false;">[x]</a></span><br /><br />';
        divHTML +=  '</p></div>';
        divHTML +=  '<div id="success_message" class="success_msg" style="display:none"></div>';
        divHTML +=  '<div class="clearfix" id="password_reminder_form_div">';
        divHTML +=  '        <form action="/users/passwordReminder" id="password_reminder_form" method="post"';
        divHTML +=  '                onSubmit="pwReminderForm(this); return false">';
        divHTML +=  '        <fieldset>';
        divHTML +=  '                <div id="pw_form">';
        divHTML +=  '                <p class="message">Enter the email address that you registered with and we\'ll email you your password.</p>';
        divHTML +=  '                <div id="email_error" class="error_msg" style="padding-left:20px;width:345px;"></div>';
        divHTML +=  '                <p class="field_left clearfix">Email Address:';
        divHTML +=  '                <input name="data[User][email]"  id="password_reminder_email" size="55" value="" style="width:335px" type="text" />';
        divHTML +=  '                <input type="submit" value="Submit" />';
        divHTML +=  '                </p>';
        divHTML +=  '                </div>';
        divHTML +=  '        </fieldset>';
        divHTML +=  '        </form>';
        divHTML +=  '</div></div>';

        Dialog.info(divHTML, {width:525, height:130, className:"window_noTitle"}
                                );
}

function pwReminderForm(pwform) {
                if (pwform.elements['data[User][email]'].value.length>3) {
                        checkEmail(pwform.elements['data[User][email]'].value);
                } else {
                        $('email_error').innerHTML='* Email field is required. Please try again!';
                        $('email_error').show();
                        Windows.focusedWindow.updateHeight();
                        return false;
                }
}

function checkEmail(email) {
     new Ajax.Request('/users/passwordReminder/'+URLEncode(email),
	 			{
	    		method:'get',
	    		onSuccess: function(transport){
	      			var response = transport.responseText;
	      			if (response.substr(0,7) == 'nomatch'){
						$('email_error').innerHTML='* We could not find the email address that you entered!';
						$('email_error').show();
						Windows.focusedWindow.updateHeight();
	      			} else {
	 //     			alert(response);
						$('success_message').innerHTML= response;
						Element.hide('password_reminder_form_div');
	      				Element.show('success_message');
	      				Windows.focuseWindow.updateHeight();
	      				Element.show(Windows.focusedWindow.getId());				      			
	      			}			
	      		},
	    		onFailure: function(){alert("Connection error")}
	  		});
}

function submitRating(type, obj_id, score) {
	new Ajax.Request('/simple_rating/ratings/submitRating/'+type+'/'+obj_id+'/'+score,
		{
	    method: 'post',
	    onSuccess: function(transport){
          try {
		      var response = transport.responseXML;
//		      alert(response);
	          if (response) {
	            var allTimeRating = response.getElementsByTagName('all_time_rating')[0].childNodes[0].nodeValue;
				setAvgRating(obj_id, Math.floor(parseFloat(score) + 0.5), parseInt(allTimeRating));
			  } else {
			    window.location.reload();
              }
		  } catch (err) {
			    window.location.reload();
          }
	    },
	    onFailure: function(){	window.location.reload(); }
	  });
}

function setAvgRating(obj_id, num, allTimeRating) {
	var head = 'rating_link_vote_header_'+obj_id;
    var divh = document.getElementById(head);
	divh.innerHTML = 'You Rated';

    var key = 'rating_link_vote_images_'+obj_id;
    var div = document.getElementById(key);
	div.innerHTML = '';
	for (var i=1; i<=5; i++) {
		if (i == num) {
			div.innerHTML += '<img src="/img/rate_on'+i+'.png" />';
		} else {
			div.innerHTML += '<a href="#" onclick="submitRating(\'link_rating\', '+obj_id+', '+i+');return false;">' +
						'<img src="/img/rate_off'+i+'.png" onmouseover="this.src=\'/img/rate_on'+i+'.png\'" onmouseout="this.src=\'/img/rate_off'+i+'.png\'" /></a>';
		}
	}

	var key2 = 'allTime_rated_'+obj_id;
    var div2 = document.getElementById(key2);
	div2.className = 'rating_link_all'+allTimeRating;
    div2.innerHTML = '<div class="rate_this"></div>';
    div2.innerHTML += '<p class="rating_link_all_header">Avg Link Rating</p>';
}

function showAbuse(type, obj_id, dialog_title) {
	Dialog.info('<div id="abuse_report"><span class="title">' + dialog_title
		+ '</span><span class="close"><a href="#" class="red" onClick="Dialog.closeInfo();return false;">[x]</a></span>'
		+ '<br class="clear" /></div><iframe src ="/simple_comment/abuses/abuseReportForm/'+type+'/'+obj_id+'/' + escape(dialog_title)
		+ '" background-color="transparent" allowtransparency="true" frameborder="0" scrolling="no" height="125" width="100%"></iframe>',
		{width:450, height:195,className:"window_noTitle"});
}

function showAlt(img, text) {
	var pos = getElementPosition(img);

	if (document.getElementById('_fileradar_alt_tip')) {
	    var alttip = document.getElementById('_fileradar_alt_tip');
	} else {
	    var alttip = document.createElement('div');
		alttip.setAttribute('id','_fileradar_alt_tip');
		document.body.appendChild(alttip);
	}
	alttip.style.cssText = "position:absolute;top:"+(pos.y+10)+"px;left:"+(pos.x+28)+"px;color:#000;text-align:right;border:1px #000000 solid;"
						+ "background-color:#ffffc9;padding:2px;z-index:101";
	alttip.innerHTML = text;
}

function hideAlt() {
	var alttip = document.getElementById('_fileradar_alt_tip');	
	document.body.removeChild(alttip);
}

function getElementPosition(obj,k) {
		var	kk	=	0;
		if(k=='y') {
			if (typeof(obj.offsetTop != undefined)) kk	= obj.offsetTop;

			if (typeof(obj.offsetParent != undefined) && (obj.offsetParent != null))
				kk += this.getElementPosition(obj.offsetParent,'y');
		}
		else if(k=='x') {
			if (typeof(obj.offsetLeft != undefined)) kk = obj.offsetLeft;

			if (typeof(obj.offsetParent != undefined) && (obj.offsetParent != null))
				kk += this.getElementPosition(obj.offsetParent,'x');
		} else {
			return	{x:this.getElementPosition(obj,'x'),y:this.getElementPosition(obj,'y')};
		}
		return	kk;
}

function URLEncode(plaintext)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

	return encoded;
};

function URLDecode( encoded )
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
};

function getKeycode(e) {
	if(window.event) // IE
	{
		return e.keyCode
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
		return e.which
	}
}

function switchTimeFrame(time, text_id, show_id, hide_id){
	var display_element = document.getElementById(show_id);
	var hidden_element = document.getElementById(hide_id);
	var text_element = document.getElementById(text_id);

	display_element.style.display = 'block';
	hidden_element.style.display = 'none';

	if(time == '24') {
    	text_element.innerHTML = 
    		'Last 24 Hrs | <a href="javascript:void(0);" class="link2" onclick="switchTimeFrame(\'all\', \''+text_id+'\', \''+hide_id+'\', \''+show_id+'\');">All Time</a>';
	} else {
    	text_element.innerHTML = 
    		'<a href="javascript:void(0);" class="link2" onclick="switchTimeFrame(\'24\', \''+text_id+'\', \''+hide_id+'\', \''+show_id+'\');">Last 24 Hrs</a> | All Time';
	}
}