PDA

View Full Version : What is wrong with this code?



-Adam
04-08-2010, 04:51 PM
I type in my Username, which is shown below, however it doesnt update with a profile link, or username for that matter.


<?php

session_start();

include('includes/db_connect.php');

$username=$_SESSION['username'];

$fetch = mysql_fetch_object(mysql_query("SELECT * FROM `users` WHERE `username` = '$username'"));



if ( isset($_GET['search']) )

{

$find_username = mysql_escape_string($_GET['search']);

$where = array();



switch($_GET['where'])

{

case 1:

$find_username = '%' . $find_username . '%';

break;

case 2:

$find_username = $find_username . '%';

break;

case 3:

$find_username = '%' . $find_username;

break;

case 4:

$find_username = $find_username;

break;

}



switch($_GET['status'])

{

case 2:

$status = 'Alive';

break;

case 3:

$status = 'Dead';

break;

default:

$status = '';

}

if ( !empty($status) )

$where[] = "`status` = '$status'";



if ( !empty($_GET['ranks']) )

{

$ranks = split(';', mysql_escape_string($_GET['ranks']));

for($i=0, $len = count($ranks); $i<$len; ++$i)

{

$ranks[$i] = "'".$ranks[$i]."'";

}

$strRanks = join(',', $ranks);

$where[] = "`rank` IN ($strRanks)";

}



switch($_GET['order'])

{

case 2:

$orderfield = '`date`';

case 3:

$orderfield ='rankpoints';

default:

$orderfield = 'username';

}



switch($_GET['orderby'])

{

case 2:

$ordeby = 'DESC';

default:

$orderby = 'ASC';

}



$order = "ORDER BY $orderfield $orderby";



$result = mysql_query("SELECT * FROM `users` WHERE `username` LIKE '%$find_username%'" . (count($where) > 0 ? ' AND ' . join(' AND ', $where) : '') . ' ' . $order);

$return = "<table width=55% border=1 cellpadding='2' cellspacing=0 align='center' class='thinline'>

<tr height='22' class='topic'>

<td colspan='5' align='center' class='topic'>Users Found</td>

</tr>

<tr height='22' class='topic'>

<td class=tip width='27'>O</td>

<td class=tip width='5'>Friend</td>

<td width='45%' class=tip><center><font color=white><b>Username</font></td>

<td width='20%' class=tip><center><font color=white><b>Rank</b></font></td>

<td width='17%' class=tip><center><font color=white><b>Status</b></font></tr>";



while($row = mysql_fetch_object($result))

{



if ($row->crew=="0"){ $crew="None"; }else{ $crew=$row->crew; }



$checkf = mysql_num_rows(mysql_query("SELECT * FROM friends WHERE person='$username' AND username='$row->username' AND type='Blocked'"));

if($fetch->tester == "1"){ $reg = " <a href='javascript: ;' onclick=\"modal('prof2.php?viewuser=$row->username','<div class=\'header1\'>$row->username\'s Profile</div>','950','600');'>$row->username</a>"; }elseif($fetch->tester == "0"){ $reg = " <a href='profile.php?viewuser=$row->username'>$row->username</a>"; }

$return .= "

<tr height='22' background='>
<td class=tableborder><b>$reg</b></td>

<td class=tableborder><b><center>$row->rank</b></td>

<td class=tableborder><b><center>$row->status</b></td>

</tr>

";

}



$return .= " </table> ";



//url = this.url + "search=" + this.searchOptUsername + "&where=" + this.searchOptWhere + "&status=" + this.searchOptStatus + "&order=" + this.searchOptOrderWhat + "&orderby=" + this.searchOptOrderBy + "&ranks=" + this.searchOptRank;



echo $return;



exit;

}



?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>



<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<meta name="author" content="vladykx" />



<link rel="stylesheet" href="includes/in.php" type="text/css">

<script type="text/javascript" src="ajaxSuggest.js"></script>


<script type="text/javascript">

function modal (page,title,width,height) {
parent.passModal(page,title,width,height);
return false;
}

</script>

<title>Find User</title>

<style type="text/css">
<!--
.style1 {color: #333333}
.style2 {color: #666666}
-->
</style>
</head>



<body>



<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="62%" align="center" valign="top"><table width="700" border="0" align="center" cellpadding="2" cellspacing="0" bordercolor="black" class="thinline">

<tr>

<td class="topic" colspan="6" height="<?php if($fetch->layout == "1"){ echo"20"; }else{ echo"29"; }?>"><center class="bold">

Find Gangster

</center></td>
</tr>

<tr>

<td width="18%" bordercolor="#000000" class="tableborder">Username:</td>

<td colspan="2" bordercolor="#000000" class="tableborder"><input type="text" id="ajaxSuggestElement" class="textbox" /></td>
<td width="15%">Account status:</td>
<td width="33%" colspan="2"><select name="type" class='input' onchange="ajaxSuggest.searchOptStatus=this.value; ajaxSuggest.doSuggest();">
<option value="1">Any</option>
<option value="2">Alive</option>
<option value="3">Dead</option>
</select> </td>
</tr>

<tr>

<td width="18%" align="left">Position of criteria:</td>

<td align="left" colspan="2"><select name="searchtype" class='input' onchange="ajaxSuggest.searchOptWhere=this.value; ajaxSuggest.doSuggest();">

<option value="1">Anywhere</option>

<option value="2">Beginning of the username</option>

<option value="3">End the username</option>

<option value="4">Full username</option>

</select> </td>
<td width="15%">Order by:</td>
<td colspan="2"><select name="order" class='input' onchange="ajaxSuggest.searchOptOrderWhat=this.value; ajaxSuggest.doSuggest();">
<option value="1">Name</option>
<option value="2">Sign up</option>
<option value="3">Rank</option>
</select>
<select name="orderby" class='input' onchange="ajaxSuggest.searchOptOrderBy=this.value; ajaxSuggest.doSuggest();">
<option value="1">Ascending</option>
<option value="2">Descending</option>
</select> </td>
</tr>

<!-- <tr>

<td valign="middle" bordercolor="#000000" colspan="3" class="tableborder" align="center"><input type="submit" class="custombutton" value="Search GB!" id="user_button6" name="user_button"/></td>

</tr>-->

</table></td>


</tr>
</table>

<br />

<div class="style1" id="search-results">
<div align="center" class="style2">Search for a username in the box and it will update automatically.</div>
</div>
</body>

</html>





I type in my Username, which is shown below, however it doesnt update with a profile link, or username for that matter.




http://i34.tinypic.com/264qq2b.png

Apolva
04-08-2010, 05:58 PM
Can you re-post the code within PHP tags, then post ajaxsuggest.js within CODE tags.

Trigs
04-08-2010, 06:57 PM
line 234: no end tag.
line 308: bordercolor is not an attribute

-Adam
04-08-2010, 07:24 PM
So how would I fix this?

EDIT:

PHP:


<?php

session_start();

include('includes/db_connect.php');

$username=$_SESSION['username'];

$fetch = mysql_fetch_object(mysql_query("SELECT * FROM `users` WHERE `username` = '$username'"));



if ( isset($_GET['search']) )

{

$find_username = mysql_escape_string($_GET['search']);

$where = array();



switch($_GET['where'])

{

case 1:

$find_username = '%' . $find_username . '%';

break;

case 2:

$find_username = $find_username . '%';

break;

case 3:

$find_username = '%' . $find_username;

break;

case 4:

$find_username = $find_username;

break;

}



switch($_GET['status'])

{

case 2:

$status = 'Alive';

break;

case 3:

$status = 'Dead';

break;

default:

$status = '';

}

if ( !empty($status) )

$where[] = "`status` = '$status'";



if ( !empty($_GET['ranks']) )

{

$ranks = split(';', mysql_escape_string($_GET['ranks']));

for($i=0, $len = count($ranks); $i<$len; ++$i)

{

$ranks[$i] = "'".$ranks[$i]."'";

}

$strRanks = join(',', $ranks);

$where[] = "`rank` IN ($strRanks)";

}



switch($_GET['order'])

{

case 2:

$orderfield = '`date`';

case 3:

$orderfield ='rankpoints';

default:

$orderfield = 'username';

}



switch($_GET['orderby'])

{

case 2:

$ordeby = 'DESC';

default:

$orderby = 'ASC';

}



$order = "ORDER BY $orderfield $orderby";



$result = mysql_query("SELECT * FROM `users` WHERE `username` LIKE '%$find_username%'" . (count($where) > 0 ? ' AND ' . join(' AND ', $where) : '') . ' ' . $order);

$return = "<table width=55% border=1 cellpadding='2' cellspacing=0 align='center' class='thinline'>

<tr height='22' class='topic'>

<td colspan='5' align='center' class='topic'>Users Found</td>

</tr>

<tr height='22' class='topic'>

<td class=tip width='27'>O</td>

<td class=tip width='5'>Friend</td>

<td width='45%' class=tip><center><font color=white><b>Username</font></td>

<td width='20%' class=tip><center><font color=white><b>Rank</b></font></td>

<td width='17%' class=tip><center><font color=white><b>Status</b></font></tr>";



while($row = mysql_fetch_object($result))

{



if ($row->crew=="0"){ $crew="None"; }else{ $crew=$row->crew; }



$checkf = mysql_num_rows(mysql_query("SELECT * FROM friends WHERE person='$username' AND username='$row->username' AND type='Blocked'"));

if($fetch->tester == "1"){ $reg = " <a href='javascript: ;' onclick=\"modal('prof2.php?viewuser=$row->username','<div class=\'header1\'>$row->username\'s Profile</div>','950','600');'>$row->username</a>"; }elseif($fetch->tester == "0"){ $reg = " <a href='profile.php?viewuser=$row->username'>$row->username</a>"; }

$return .= "

<tr height='22' background='>
<td class=tableborder><b>$reg</b></td>

<td class=tableborder><b><center>$row->rank</b></td>

<td class=tableborder><b><center>$row->status</b></td>

</tr>

";

}



$return .= " </table> ";



//url = this.url + "search=" + this.searchOptUsername + "&where=" + this.searchOptWhere + "&status=" + this.searchOptStatus + "&order=" + this.searchOptOrderWhat + "&orderby=" + this.searchOptOrderBy + "&ranks=" + this.searchOptRank;



echo $return;



exit;

}



?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>



<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<meta name="author" content="vladykx" />



<link rel="stylesheet" href="includes/in.php" type="text/css">

<script type="text/javascript" src="ajaxSuggest.js"></script>


<script type="text/javascript">

function modal (page,title,width,height) {
parent.passModal(page,title,width,height);
return false;
}

</script>

<title>Find User</title>

<style type="text/css">
<!--
.style1 {color: #333333}
.style2 {color: #666666}
-->
</style>
</head>



<body>



<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="62%" align="center" valign="top"><table width="700" border="0" align="center" cellpadding="2" cellspacing="0" bordercolor="black" class="thinline">

<tr>

<td class="topic" colspan="6" height="<?php if($fetch->layout == "1"){ echo"20"; }else{ echo"29"; }?>"><center class="bold">

Find Gangster

</center></td>
</tr>

<tr>

<td width="18%" bordercolor="#000000" class="tableborder">Username:</td>

<td colspan="2" bordercolor="#000000" class="tableborder"><input type="text" id="ajaxSuggestElement" class="textbox" /></td>
<td width="15%">Account status:</td>
<td width="33%" colspan="2"><select name="type" class='input' onchange="ajaxSuggest.searchOptStatus=this.value; ajaxSuggest.doSuggest();">
<option value="1">Any</option>
<option value="2">Alive</option>
<option value="3">Dead</option>
</select> </td>
</tr>

<tr>

<td width="18%" align="left">Position of criteria:</td>

<td align="left" colspan="2"><select name="searchtype" class='input' onchange="ajaxSuggest.searchOptWhere=this.value; ajaxSuggest.doSuggest();">

<option value="1">Anywhere</option>

<option value="2">Beginning of the username</option>

<option value="3">End the username</option>

<option value="4">Full username</option>

</select> </td>
<td width="15%">Order by:</td>
<td colspan="2"><select name="order" class='input' onchange="ajaxSuggest.searchOptOrderWhat=this.value; ajaxSuggest.doSuggest();">
<option value="1">Name</option>
<option value="2">Sign up</option>
<option value="3">Rank</option>
</select>
<select name="orderby" class='input' onchange="ajaxSuggest.searchOptOrderBy=this.value; ajaxSuggest.doSuggest();">
<option value="1">Ascending</option>
<option value="2">Descending</option>
</select> </td>
</tr>

<!-- <tr>

<td valign="middle" bordercolor="#000000" colspan="3" class="tableborder" align="center"><input type="submit" class="custombutton" value="Search GB!" id="user_button6" name="user_button"/></td>

</tr>-->

</table></td>


</tr>
</table>

<br />

<div class="style1" id="search-results">
<div align="center" class="style2">Search for a username in the box and it will update automatically.</div>
</div>
</body>

</html>

AjaxSuggestions.js


// ---
function updateRanksArray(objCheckBox)
{

}

// ---
var ajaxSuggestions = {
// Extra
searchOptWhere: 1,
searchOptStatus: 1,
searchOptOrderWhat: 1,
searchOptOrderBy: 1,
searchOptRank: [],
ajaxSuggestionElement: null,
// Settings
elmIdToPresentResultsIn : "search-results",
elmIdResultsContainer : "search-result-suggestions",
charactersBeforeSearch : 2,
timeBeforeSuggest : 200, // In milliseconds
sameWidthAsInputElm : false,
offsetLeft: 0,
offsetTop : 0,
urlExt : "search=",
addSearchTermToQueryString : true,
addKeyNavigationEvents : false,
hideResultsOnDocumentClick : false,
itemClassName : "item",
itemSelectedClassName : "selected",
itemInsertValueIntoInputClassName : "choose-value",
itemInsertValueSetFocusToInput : false,
hideResultsWhenInsertValueIsSelected : false,
itemSeparator : ";",
turnAutoCompleteOff : true,
// Object properties
xmlHttp : null,
elements : [],
timer : null,
currentElm : null,
currentKeyEvent : null,
suggestionsForElm : null,
elmToPresentResultsIn : null,
elmResultsContainer : null,
suggestions : [],
resultIndex : 0,
selectedItem : -1,
resultsAreVisible : true,
valueAddedFromResultsListToInput : false,

init : function (){
this.xmlHttp = this.createXmlHttp();
if(this.xmlHttp){
if(typeof document.getElementsByClassName != "function"){
document.getElementsByClassName = this.elmByClass;
}
this.elements = document.getElementsByClassName("ajax-suggestion", "input");
this.applyEvents();
this.elmToPresentResultsIn = document.getElementById(this.elmIdToPresentResults In);
this.elmResultsContainer = document.getElementById(this.elmIdResultsContainer );
if(this.addKeyNavigationEvents){
this.addEvent(document, "keydown", this.preventDefaultForArrowKeys);
this.addEvent(document, "keypress", this.preventDefaultForArrowKeys);
this.addEvent(document, "keyup", this.navigateResults);
}
if(this.hideResultsOnDocumentClick){
this.addEvent(document, "click", this.clearResultsElement);
}
}
},

createXmlHttp : function (){
this.xmlHttp = null;
if(typeof XMLHttpRequest != "undefined"){
this.xmlHttp = new XMLHttpRequest();
}
else if(typeof window.ActiveXObject != "undefined"){
try {
this.xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
}
catch(e){
try {
this.xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
}
catch(e){
try {
this.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
this.xmlHttp = null;
}
}
}
}
return this.xmlHttp;
},

applyEvents : function (){
var element;
for(var i=0; i<this.elements.length; i++){
element = this.elements[i];
this.ajaxSuggestionElement = element;
if(this.turnAutoCompleteOff){
element.setAttribute("autocomplete", "off");
}
this.addEvent(element, "keyup", this.startSuggestionsTimer);
if(this.hideResultsOnDocumentClick){
this.addEvent(element, "click", this.preventInputClickBubbling);
}
}
},

startSuggestionsTimer : function (evt){
clearTimeout(ajaxSuggestions.timer);
ajaxSuggestions.currentElm = (/input/i.test(this.nodeName))? this : evt.srcElement;
ajaxSuggestions.currentKeyEvent = evt.keyCode;
ajaxSuggestions.timer = setTimeout("ajaxSuggestions.getSuggestions()", ajaxSuggestions.timeBeforeSuggest);
},

startSuggestionsTimerNew : function (){
clearTimeout(this.timer);
//ajaxSuggestions.currentElm = (/input/i.test(this.nodeName))? this : evt.srcElement;
this.currentElm = this.ajaxSuggestionElement;
this.currentKeyEvent = 13;
this.getSuggestions();
console.log("startSuggestionsTimerNew()");
//this.timer = setTimeout("ajaxSuggestions.getSuggestions()", this.timeBeforeSuggest);
},

getSuggestions : function (){
var value = this.currentElm.value;
console.log(value);
if(!/13|27|37|39/.test(this.currentKeyEvent)){
var url = this.currentElm.className.replace(/.*url-([\w\/\?\.-]+).*/, "$1");
console.log(url);
if(!this.valueAddedFromResultsListToInput){
ajaxSuggestions.clearResults(true);
}
if(value.length > this.charactersBeforeSearch && url.length > 0){
console.log("makeSuggestionCall");
this.makeSuggestionCall(value, url);
}
else if(value.length == 0 || !this.valueAddedFromResultsListToInput){
ajaxSuggestions.clearResults();
}
}
},

makeSuggestionCall : function (value, url){
var regExpValue = new RegExp(("^" + value + "$"), "i");
var exists = false;
var suggestionItem;
var url = url + ((/\?/.test(url))? "&" : "?") + this.urlExt + ((this.addSearchTermToQueryString)? value : "") + "&where=" + this.searchOptWhere + "&status=" + this.searchOptStatus + "&orderwhat=" + this.searchOptOrderWhat + "&orderby=" + this.searchOptOrderBy + "&rank=" + this.searchOptRank.join(',');
for(var i=0; i<this.suggestions.length; i++){
suggestionItem = this.suggestions[i];
if(regExpValue.test(suggestionItem[0]) && url == suggestionItem[2]){
exists = true;
this.resultIndex = i;
this.presentResult(this.suggestions[i][1]);
break;
}
};
if(!exists){
this.xmlHttp.onreadystatechange = function (){};
this.xmlHttp.abort();
this.currentValue = value;
this.currentURL = url;
this.xmlHttp.open("GET", url, true);
this.xmlHttp.onreadystatechange = this.getResults;
this.xmlHttp.send(null);
}
},

getResults : function (){
if(ajaxSuggestions.xmlHttp.readyState == 4 && ajaxSuggestions.xmlHttp.responseText.length > 0){
ajaxSuggestions.loadResults();
}
},

loadResults : function (){
this.resultIndex = this.suggestions.length;
this.suggestions.push([this.currentValue, this.xmlHttp.responseText, this.currentURL]);
this.presentResult();
},

presentResult : function (){
this.elmToPresentResultsIn.innerHTML = this.suggestions[this.resultIndex][1];
var coordinates = this.getCoordinates();
var elm = this.elmResultsContainer.style;
elm.left = coordinates[0] + this.offsetLeft + "px";
elm.top = coordinates[1] + this.currentElm.offsetHeight + this.offsetTop + "px";
if(this.sameWidthAsInputElm){
elm.width = this.currentElm.offsetWidth + "px";
}
this.applyResultEvents();
elm.display = "block";
this.resultsAreVisible = true;
if(this.addKeyNavigationEvents && /38|40/.test(this.currentKeyEvent)){
if(!this.valueAddedFromResultsListToInput){
this.selectedItem = -1;
}
this.navigateResults(null, this.currentKeyEvent);
}
},

clearResults : function (justClear){
if(this.elmResultsContainer && this.elmToPresentResultsIn){
if(!justClear){
this.elmResultsContainer.style.display = "none";
this.resultsAreVisible = false;
}
this.elmToPresentResultsIn.innerHTML = "";
this.selectedItem = -1;
}
},

clearResultsElement : function (){
ajaxSuggestions.clearResults();
},

navigateResults : function (evt, keyCode){
if(ajaxSuggestions.currentElm && ajaxSuggestions.elmToPresentResultsIn){
var event = (typeof evt != "undefined")? evt : event;
if(typeof ajaxSuggestions.elmToPresentResultsIn.getElementsB yClassName != "function"){
ajaxSuggestions.elmToPresentResultsIn.getElementsB yClassName = ajaxSuggestions.elmByClass;
}
var results = ajaxSuggestions.elmToPresentResultsIn.getElementsB yClassName(ajaxSuggestions.itemClassName);
var selectedItem = (!evt && keyCode == 38)? results.length : ajaxSuggestions.selectedItem;
var keyCode = keyCode || event.keyCode;
var navigateUp = keyCode == 37 || keyCode == 38;
var navigateDown = keyCode == 39 || keyCode == 40;
if(results.length > 0 && (navigateUp || navigateDown)){
if(navigateUp){
if((selectedItem - 1) >= 0){
selectedItem--;
}
else{
selectedItem = -1;
}
}
else if(navigateDown){
if((selectedItem + 1) < results.length){
selectedItem++;
}
else{
selectedItem = -1;
}
}
var item;
var classToRemove;
for(var i=0; i<results.length; i++){
item = results[i];
classToRemove = new RegExp((ajaxSuggestions.itemSelectedClassName + "\s?"), "i");
item.className = item.className.replace(classToRemove, "").replace(/^\s?|\s?$/g, "");
};
ajaxSuggestions.selectedItem = selectedItem;
var elmToFocus = ajaxSuggestions.currentElm;
if(selectedItem > -1){
var currentItem = results[selectedItem];
var currentClass = item.className;
if(!new RegExp(ajaxSuggestions.itemSelectedClassName, "i").test(currentClass)){
currentItem.className = currentClass + ((currentClass.length > 0)? " " : "") + ajaxSuggestions.itemSelectedClassName;
}
elmToFocus = results[selectedItem];
}
try{
elmToFocus.focus();
}
catch(e){
// Just in case... :-)
}
if(event){
if(event.preventDefault){
event.preventDefault();
}
else{
event.returnValue = false;
}
if(event.stopPropagation){
event.stopPropagation();
}
else{
event.cancelBubble = true;
}
}
return false;
}
else if(keyCode == 27){
ajaxSuggestions.clearResults();
try{
ajaxSuggestions.currentElm.focus();
}
catch(e){
// Just in case... :-)
}
}
}
},

applyResultEvents : function (){
if(typeof this.elmToPresentResultsIn.getElementsByClassName != "function"){
this.elmToPresentResultsIn.getElementsByClassName = this.elmByClass;
}
var insertValueItems = this.elmToPresentResultsIn.getElementsByClassName( this.itemInsertValueIntoInputClassName, "a");
var item;
for(var i=0; i<insertValueItems.length; i++){
item = insertValueItems[i];
item.inputRef = this.currentElm;
this.addEvent(item, "click", this.insertValueIntoField);
};
},

insertValueIntoField : function (evt){
var elm = (/a/i.test(this.nodeName))? this : evt.srcElement;
var input = elm.inputRef;
var value = elm.getAttribute("href");
if(!new RegExp(value).test(input.value)){
input.value = ((input.value.length > 0 && /;/i.test(input.value))? (input.value + value) : value) + ajaxSuggestions.itemSeparator;
}
if(evt.preventDefault){
evt.preventDefault();
}
else{
evt.returnValue = false;
}
if(evt.stopPropagation){
evt.stopPropagation();
}
else{
evt.cancelBubble = true;
}
if(ajaxSuggestions.itemInsertValueSetFocusToInput) {
try{
input.focus();
}
catch(e){
// Just in case... :-)
}
}
if(ajaxSuggestions.hideResultsWhenInsertValueIsSel ected){
ajaxSuggestions.clearResults();
}
ajaxSuggestions.valueAddedFromResultsListToInput = true;
},

preventInputClickBubbling : function (evt){
if(evt.preventDefault){
evt.preventDefault();
}
else{
evt.returnValue = false;
}
if(evt.stopPropagation){
evt.stopPropagation();
}
else{
evt.cancelBubble = true;
}
return false;
},

preventDefaultForArrowKeys : function (evt){
var keyCode = evt.keyCode;
var navigateUp = keyCode == 37 || keyCode == 38;
var navigateDown = keyCode == 39 || keyCode == 40;
if((!evt.ctrlKey && !evt.metaKey) && ajaxSuggestions.resultsAreVisible && (navigateUp || navigateDown)){
if(evt.preventDefault){
evt.preventDefault();
}
else{
evt.returnValue = false;
}
if(evt.stopPropagation){
evt.stopPropagation();
}
else{
evt.cancelBubble = true;
}
return false;
}
},

getCoordinates : function (){
var elm = this.currentElm;
var offsetLeft = 0;
var offsetTop = 0;
while(elm.offsetParent){
offsetLeft += elm.offsetLeft;
offsetTop += elm.offsetTop;
if(elm.scrollTop > 0){
offsetTop -= elm.scrollTop;
}
elm = elm.offsetParent;
}
return [offsetLeft, offsetTop];
},

closeSession : function (){
delete ajaxSuggestions;
ajaxSuggestions = null;
},

elmByClass : function (className, tag){
return ajaxSuggestions.getElementsByClassName.call(this, className, tag);
},

getElementsByClassName : function (className, tag){
var elms = ((!tag || tag == "*") && this.all)? this.all : this.getElementsByTagName(tag || "*");
var returnElms = [];
var className = className.replace(/\-/g, "\\-");
var regExp = new RegExp("(^|\\s)" + className + "(\\s|$)");
var elm;
for(var i=0; i<elms.length; i++){
elm = elms[i];
if(regExp.test(elm.className)){
returnElms.push(elm);
}
}
return (returnElms);
},

addEvent : function (elm, evt, func){
if(elm){
if(elm.addEventListener){
elm.addEventListener(evt, func, false);
}
else if(window.attachEvent){
elm.attachEvent(("on" + evt), func)
}
}
}
};
// ---
ajaxSuggestions.addEvent(window, "load", function(){ajaxSuggestions.init();});
ajaxSuggestions.addEvent(window, "unload", function(){ajaxSuggestions.closeSession();});
// ---

Want to hide these adverts? Register an account for free!