var useBSNns;

var alreadyThereMsg = " <em style='color:green'> &nbsp; In Shortlist / Already Contacted</em>";
//var alreadyThereMsg = "";

if (useBSNns)
{
	if (typeof(bsn) == "undefined")
	bsn = {}
	_bsn = bsn;
}
else
{
	_bsn = this;
}


if (typeof(_bsn.DOM) == "undefined")
_bsn.DOM = {}

var isHomePage = false;


ShortList = function (fldID, param)
{


	if (!document.getElementById)
	return false;

	this.fld = _bsn.DOM.getElement(fldID);

	//if (!this.fld)	return false;

	//this.nInputChars = 0;
	this.aSuggestions = [];
	this.iHighlighted = 0;

	this.selectedOptions = new Object();


	// parameters object
	this.oP = (param) ? param : {};
	// defaults
	if (!this.oP.minchars)		this.oP.minchars = 1;
	if (!this.oP.method)		this.oP.meth = "get";
	if (!this.oP.varname)		this.oP.varname = "input";
	if (!this.oP.varsearchname)	this.oP.varsearchname = "search_field";
	if (!this.oP.className)		this.oP.className = "autosuggest";
	if (!this.oP.timeout)		this.oP.timeout = 2500;
	if (!this.oP.delay)			this.oP.delay = 500;
	if (!this.oP.maxheight && this.oP.maxheight !== 0)		this.oP.maxheight = 150;
	if (!this.oP.cache)			this.oP.cache = true;
	if (!this.oP.multivalue)	this.oP.multivalue = "N";
	if (!this.oP.codefield)		this.oP.codefield = "";
	if (this.oP.codefield)	this.codefield = _bsn.DOM.getElement(this.oP.codefield);

	if (!this.oP.argform)	this.oP.argform = "";
	if (!this.oP.argfield1)	this.oP.argfield1 = "";

	var pointer = this;

	//this.fld.onmouseover = function () { pointer.createShortList() };
	//this.fld.setAttribute("autocomplete","off");
	//alert("aaa");
}


/*ShortList.prototype.createShortList = function ()
{

this.oP = {};
// defaults
if (!this.oP.minchars)		this.oP.minchars = 1;
if (!this.oP.method)		this.oP.meth = "get";
if (!this.oP.varname)		this.oP.varname = "input";
if (!this.oP.varsearchname)	this.oP.varsearchname = "search_field";
if (!this.oP.className)		this.oP.className = "autosuggest";
if (!this.oP.timeout)		this.oP.timeout = 2500;
if (!this.oP.delay)			this.oP.delay = 500;
if (!this.oP.maxheight && this.oP.maxheight !== 0)		this.oP.maxheight = 150;
if (!this.oP.cache)			this.oP.cache = true;
if (!this.oP.multivalue)	this.oP.multivalue = "N";
if (!this.oP.codefield)		this.oP.codefield = "";
if (this.oP.codefield)	this.codefield = _bsn.DOM.getElement(this.oP.codefield);
if (!this.oP.argform)	this.oP.argform = "";
if (!this.oP.argfield1)	this.oP.argfield1 = "";
var pointer = this;
this.ajID = setTimeout( function() { pointer.doAjaxRequest() }, this.oP.delay );

return false;
}*/

ShortList.prototype.setDefaultValues = function(){
	this.oP = {};
	// defaults
	if (!this.oP.minchars)		this.oP.minchars = 1;
	if (!this.oP.method)		this.oP.meth = "get";
	if (!this.oP.varname)		this.oP.varname = "input";
	if (!this.oP.varsearchname)	this.oP.varsearchname = "search_field";
	if (!this.oP.className)		this.oP.className = "shortlist";
	if (!this.oP.timeout)		this.oP.timeout = 2500;
	if (!this.oP.delay)			this.oP.delay = 500;
	if (!this.oP.maxheight && this.oP.maxheight !== 0)		this.oP.maxheight = 150;
	if (!this.oP.cache)			this.oP.cache = true;
	if (!this.oP.multivalue)	this.oP.multivalue = "N";
	if (!this.oP.codefield)		this.oP.codefield = "";
	if (this.oP.codefield)	this.codefield = _bsn.DOM.getElement(this.oP.codefield);

	if (!this.oP.argform)	this.oP.argform = "";
	if (!this.oP.argfield1)	this.oP.argfield1 = "";
}


ShortList.prototype.doAction = function ( action, pid )
{

	var pointer = this;
	this.setDefaultValues();
	var url = "/cars/shortList.php?action=" + action +"&pid=" + pid;
	var onSuccessFunc = function (req) { pointer.createShortList(req) };
	var onErrorFunc = function (status) { alert("AJAX error: "+status); };

	var meth = this.oP.method;
	var myAjax = new _bsn.Ajax;
	myAjax.makeRequest( url, meth, onSuccessFunc, onErrorFunc );

	//if ( document.getElementById("add_" + pid ) ){

	if ( action == "add" ) {

		var arr = this.aSuggestions;
		var arrSize = 0;
		for (it in arr) arrSize++;
				
		// LIMIT TO 5 CARS
		if ( arrSize < 5 ){
			if ( document.getElementById("add_" + pid ) ) document.getElementById("add_" + pid ).style.display = "none";
			if ( document.getElementById("add2_" + pid ) ) document.getElementById("add2_" + pid ).style.visibility = "hidden";
			if ( document.getElementById("shortlist_info_" + pid ) ) document.getElementById("shortlist_info_" + pid ).innerHTML = alreadyThereMsg;
			if ( document.getElementById("shortlist_info2_" + pid ) ) document.getElementById("shortlist_info2_" + pid ).innerHTML = alreadyThereMsg;
			//playSound("add");
		} else {
			alert("You may only add up to 5 cars at one time.")
		}
	} else if ( action == "del" ) {
		if ( document.getElementById("add_" + pid ) ) document.getElementById("add_" + pid ).style.display = "inline";
		if ( document.getElementById("add2_" + pid ) ) document.getElementById("add2_" + pid ).style.visibility = "visible";
		if ( document.getElementById("shortlist_info_" + pid ) ) document.getElementById("shortlist_info_" + pid ).innerHTML = "";
		if ( document.getElementById("shortlist_info2_" + pid ) ) document.getElementById("shortlist_info2_" + pid ).innerHTML = "";
		//playSound("del");
	}
	//}


}



ShortList.prototype.showShortList = function ( _isHomePage )
{
	isHomePage = _isHomePage;
	var pointer = this;
	this.setDefaultValues();
	var url = "/cars/shortList.php";
	var meth = this.oP.meth;
	var onSuccessFunc = function (req) { pointer.createShortList(req) };
	var onErrorFunc = function (status) { alert("AJAX error: "+status); };
	var myAjax = new _bsn.Ajax;
	myAjax.makeRequest( url, meth, onSuccessFunc, onErrorFunc );
	//alert("bbb");
}


ShortList.prototype.createShortList = function (req)
{

	var xml = req.responseXML;

	// traverse xml
	//
	this.aSuggestions = new Object();
	this.aPhotos = new Object();

	if ( xml.getElementsByTagName('results')[0] != null ){
		var results = xml.getElementsByTagName('results')[0].childNodes;
		for (var i=0;i<results.length;i++)
		{
			if (results[i].hasChildNodes()){
				//alert(results[i].getAttribute("id"));
				//this.aSuggestions.push( results[i].childNodes[0].getAtribute("id") );
				var index = (results[i].getAttribute("id")) ? results[i].getAttribute("id") : i;
				this.aSuggestions[index] = ( results[i].childNodes[0].nodeValue );
				var photo = (results[i].getAttribute("photo")) ? results[i].getAttribute("photo") : "";
				this.aPhotos[index] = photo;
			}
		}
	}
	
	if (isHomePage) {
		if (document.getElementById("td_shortlist")){
			if (results && results.length) {
				
				var _qtt = results.length > 1 ? " cars" : " car";
				
				var shortlist_td = "<table cellpadding=1 cellspacing=1 border=0>";
				shortlist_td += "<tr><td colspan='2'><b><a href='/cars/viewShortList.php'>My ShortList: " + results.length + _qtt +" </b></a></td></tr>";
				for (it in this.aSuggestions) {
					shortlist_td += "<tr><td nowrap><a href='/cars/view-car-"+ it +".html'>" + this.aSuggestions[it] + "</a></td>";
					shortlist_td += "<td align='center'><input type='button' value='x' class='del_shortlist' onclick='ShortList.prototype.doAction(" + '"del",'+ it +");return false;'/></td></tr>";
				}
				document.getElementById("td_shortlist").innerHTML = shortlist_td;
			} else {
				document.getElementById("td_shortlist").innerHTML = "You currently have no items in your shortlist";
			}
		}
		return;
	}

	//for (i in this.aSuggestions) { alert(i) };
	//alert(this.aSuggestions[3]);
	this.idAs = "as_shortList";//+this.fld.id;


	this.createList(this.aSuggestions,this.aPhotos);

	JSFX_FloatTopDiv();

}





ShortList.prototype.createList = function(arr, photos)
{
	// clear previous list
	//
	this.clearShortList();

	if (document.getElementById(this.idAs))
	_bsn.DOM.removeElement(this.idAs);

	// create and populate ul
	//var layer = _bsn.DOM.createElement("layer", {id:'layer_shortList'});
	var layer = _bsn.DOM.createElement("div", {id:'layer_shortList'});
	var ul = _bsn.DOM.createElement("p", {id:this.idAs, className:this.oP.className, align:"center",overflow:'hidden'});

	var pointer = this;
	var hasItens = false;
	//var innerHtmlTxt = "<table align=center border='0' style='border:none'><form method='post' id='shortlist' action='/cars/contactAgent.php'>";
	var innerHtmlTxt = "<form method='post' id='shortlistForm' action='/cars/contactAgent.php'><table align=center border='0' style='border:none'>";
	var li = _bsn.DOM.createElement( "a", {id:"shortlist",className:this.oP.className,overflow:'hidden'});

	
	for (it in arr)
	{
		hasItens = true;

		if ( document.getElementById("add_" + it ) ) document.getElementById("add_" + it ).style.display = "none";
		if ( document.getElementById("add2_" + it ) ) document.getElementById("add2_" + it ).style.visibility = "hidden";
		if ( document.getElementById("shortlist_info_" + it ) ) document.getElementById("shortlist_info_" + it ).innerHTML = alreadyThereMsg;
		if ( document.getElementById("shortlist_info2_" + it ) ) document.getElementById("shortlist_info2_" + it ).innerHTML = alreadyThereMsg;
		
		innerHtmlTxt += "<input type='hidden' id='short_list_cars[]' name='short_list_cars[]' checked value='" + it + "'/>";
		innerHtmlTxt += "<tr><td colspan='2' align=center><a href='/cars/view-car-"+ it +".html'>" + arr[it] + "</a></td></tr>";

		if ( photos[it] == '' ){
			innerHtmlTxt += "<tr><td align=center><img width=40 height=35 src='/media/images/noimage.gif'></td>";
		} else {
			//innerHtmlTxt += "<tr><td align=center></td>";
			innerHtmlTxt += "<tr><td align=center><img width=50 height=35 src='/media/photographs/items/thumbnails/"+ photos[it] +".jpg'></td>";
		}
		innerHtmlTxt += "<td align=center><input class='del_shortlist' type='button' value='x' onclick='ShortList.prototype.doAction(" + '"del",'+ it +");return false;'/></td></tr>";
	}
	innerHtmlTxt += "</table>";
	var buttonMinMax = _bsn.DOM.createElement("img", {id:"min_max", src:"/media/images/minus.gif", width:"12", height:"12"});
	buttonMinMax.onclick = function (){ pointer.clearShortList() };
	//buttonMinMax.style = "margin-left:5px;";
	li.innerHTML = innerHtmlTxt;
	//li.innerHTML = "<input type='hidden' id='short_list_cars[]' name='short_list_cars[]' checked value='1'/><table><tr><td align=center><img width=40 height=35 src='/media/images/noimage.gif'></td></table>bbb";
	if ( hasItens ){
		//li.innerHTML +="<img src='/media/images/btn_contact_agent.gif' id='contact_agent' value='Contact Agent' onclick=\"document.forms['shortlist'].submit()\">";
		var buttonContactAgent = _bsn.DOM.createElement("img", {src:"/media/images/btn_contact_agent.gif", id:"contact_agent", value:"Contact Agent", onclick:"document.forms['shortlistForm'].submit()"});
		li.appendChild(  buttonContactAgent  );
		li.innerHTML += "<br><br></form>";
	}

	var newLink=document.createElement('a');
	newLink.setAttribute('href',"javascript:launchWindow('help_shortlist.php', 'shortlist', 600, 300, 'scrollbars=no,resizable=no');");
	var linkText=document.createTextNode("What's this ");
	newLink.appendChild(linkText);

	var imageQuestion = document.createElement('img');
	imageQuestion.setAttribute('border',"0");
	imageQuestion.setAttribute('src',"/media/images/question.gif");
	newLink.appendChild(imageQuestion);

	li.appendChild(  newLink  );
	ul.innerHTML = "<a onclick='return checkEstateAgent();' href='/cars/viewShortList.php'><img style='margin-top:5px;margin-left:5px;' src='/media/images/btn_myshortlist.gif' border=0></a> &nbsp;";
	ul.appendChild( buttonMinMax );
	ul.appendChild(  li  );

	var pos = _bsn.DOM.getPos(this.fld);
	ul.style.left = screen.width - 185;
	ul.style.top = "170px";

	document.getElementsByTagName("body")[0].appendChild(ul);

	var TAB = 9;
	var ESC = 27;
	var KEYUP = 38;
	var KEYDN = 40;
	var RETURN = 13;



	/*this.fld.onkeydown = function(ev)
	{
	var key = (window.event) ? window.event.keyCode : ev.keyCode;

	switch(key)
	{
	case TAB:
	pointer.setHighlightedValue();
	break;

	case ESC:
	pointer.clearShortList();
	break;

	case KEYUP:
	pointer.changeHighlight(key);
	return false;
	break;

	case KEYDN:
	pointer.changeHighlight(key);
	return false;
	break;
	}

	};*/

	this.iHighlighted = 0;


	// remove autosuggest after an interval
	//
	/*clearTimeout(this.toID);
	var pointer = this;
	this.toID = setTimeout(function () { pointer.clearShortList() }, this.oP.timeout);*/
}



ShortList.prototype.changeHighlight = function(key)
{
	var list = _bsn.DOM.getElement(this.idAs);
	if (!list)
	return false;


	if (this.iHighlighted > 0)
	list.childNodes[this.iHighlighted-1].className = "";

	if (key == 40)
	this.iHighlighted ++;
	else if (key = 38)
	this.iHighlighted --;


	if (this.iHighlighted > list.childNodes.length)
	this.iHighlighted = list.childNodes.length;
	if (this.iHighlighted < 1)
	this.iHighlighted = 1;

	list.childNodes[this.iHighlighted-1].className = "highlight";

	var oldValues = this.fld.value.split(",");
	var oldValue = "";
	for (i=0; i<=oldValues.length - 2; i++){
		oldValue = oldValues[i] + ', ';
	}
	this.fld.value = oldValue + list.childNodes[this.iHighlighted-1].firstChild.firstChild.nodeValue;

	//alert( list.childNodes[this.iHighlighted-1].firstChild.firstChild.nodeValue );

	this.killTimeout();
}








ShortList.prototype.killTimeout = function()
{
	clearTimeout(this.toID);
}

ShortList.prototype.resetTimeout = function()
{
	clearTimeout(this.toID);
	var pointer = this;
	this.toID = setTimeout(function () { pointer.clearShortList() }, 1000);
}







ShortList.prototype.clearShortList = function ()
{

	/*if (document.getElementById(this.idAs))
	_bsn.DOM.removeElement(this.idAs);*/
	var pointer = this;
	if (document.getElementById("shortlist"))
	_bsn.DOM.removeElement("shortlist");

	if (document.getElementById("min_max")){
		buttonMinMax = document.getElementById("min_max");
		buttonMinMax.src = "/media/images/plus.gif";
		buttonMinMax.onclick = function (){ pointer.showShortList() };
		//document.getElementById("min").style.visibility = "hidden";
	}


	/*this.fld.onkeydown = null;

	for (j=0; j<document.forms.length; j++){
	for (i=0; i<document.forms[j].elements.length; i++){
	if(document.forms[j].elements[i].type == "select-one")
	document.forms[j].elements[i].style.visibility="visible";
	}
	}*/
}







ShortList.prototype.setHighlightedValue = function ()
{
	if (this.iHighlighted)
	{
		this.fld.value = document.getElementById(this.idAs).childNodes[this.iHighlighted-1].firstChild.firstChild.nodeValue;
		this.killTimeout();
		this.clearShortList();
	}
}



ShortList.prototype.setValue = function (code, val)
{


	if ( this.oP.multivalue == "S" ){

		// setting the value
		var oldValues = this.fld.value.split(",");
		var oldValue = "";
		if (existsInArray(oldValues, val)){
			this.resetTimeout();
			this.fld.focus();
			return;
		}
		for (i=0; i<oldValues.length - 1; i++){
			oldValue += lTrim(oldValues[i]) + ', ';
		}
		this.fld.value = oldValue + val + ', ';

		// setting the code
		if ( this.oP.multivalue == "S" && this.oP.codefield != ""){

			this.selectedOptions[code] = val;

			var oldValues = this.codefield.value.split(",");
			var oldValue = "";
			for (i=0; i<oldValues.length - 1; i++){
				oldValue += lTrim(oldValues[i]) + ', ';
			}
			this.codefield.value = oldValue + code + ', ';
		}
	} else {
		this.fld.value = val;
		if ( this.oP.codefield != "" ) this.codefield.value = code;
	}

	this.resetTimeout();
	this.fld.focus();
}

// OTHERS FUNCTIONS
/*
function trim(STRING){
STRING = LTrim(STRING);
return RTrim(STRING);
}

function rTrim(STRING){
while(STRING.charAt((STRING.length -1))==" "){
STRING = STRING.substring(0,STRING.length-1);
}
return STRING;
}

function lTrim(STRING){
while(STRING.charAt(0)==" "){
STRING = STRING.replace(STRING.charAt(0),"");
}
return STRING;
}

function existsInArray( arr, val ){
for (i=0; i<arr.length - 1; i++){
if (val == lTrim(arr[i])) return true;
}
return false;
}

function submitRemoveDeletedCodes( obj ){

var codeValues = "";
var descriptionValues = obj.fld.value.split(",");
for (it in obj.selectedOptions){
if ( existsInArray(descriptionValues, rTrim(obj.selectedOptions[it])) )
codeValues += it + ",";
}
obj.codefield.value=codeValues;
}

/*
Floating Menu script-  Roy Whittle (http://www.javascript-fx.com/)
Script featured on/available at http://www.dynamicdrive.com/
This notice must stay intact for use
*/

//Enter "frombottom" or "fromtop"
var verticalpos="fromtop"

function JSFX_FloatTopDiv()
{
	//var startX = 980,
	var startX = screen.width - 180;
	var startY = 170;
	var ns = (navigator.appName.indexOf("Netscape") != -1);
	var d = document;
	function ml(id)
	{
		var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
		el.style.position = 'absolute';
		if(d.layers)el.style=el;
		el.sP=function(x,y){this.style.left=x;this.style.top=y;};
		el.x = startX;
		if (verticalpos=="fromtop")
		el.y = startY;
		else{
			el.y = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
			el.y -= startY;
		}
		return el;
	}
	window.stayTopLeft=function()
	{
		if (verticalpos=="fromtop"){
			if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
				var pY = ns ? pageYOffset : document.documentElement.scrollTop;
			} else {
				var pY = ns ? pageYOffset : document.body.scrollTop;
			}
			//alert(ftlObj.y + " - "+ ((pY + startY - ftlObj.y)/8));
			ftlObj.y += (pY + startY - ftlObj.y)/8;
		} else {
			if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
				var pY = ns ? pageYOffset + innerHeight : document.documentElement.scrollTop + document.documentElement.clientHeight;
			} else {
				var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
			}
			ftlObj.y += (pY - startY - ftlObj.y)/8;
		}
		ftlObj.sP(ftlObj.x + "px", ftlObj.y + "px");
		setTimeout("stayTopLeft()", 10);
	}
	ftlObj = ml("as_shortList");
	stayTopLeft();
}

ver=parseInt(navigator.appVersion)
ie4=(ver>3  && navigator.appName!="Netscape")?1:0
ns4=(ver>3  && navigator.appName=="Netscape")?1:0
ns3=(ver==3 && navigator.appName=="Netscape")?1:0

function playSound( sound ) {

	if ( sound == "add" ) soundFile = 'shortlist_add.mp3';
	else soundFile = 'shortlist_remove.mp3';

	if (ie4) document.all['BGSOUND_ID'].src='/media/sounds/' + soundFile;
	if ((ns4||ns3)
	&& navigator.javaEnabled()
	&& navigator.mimeTypes['audio/x-midi']
	&& self.document.ShortListSound.IsReady()
	)
	{
		self.document.Bach.play()
	}
	/*
	var thissound= eval("document.sound1");
	alert(thissound + " : " + document.all['sound1']);
	thissound.Play();
	*/
}


/*

if (typeof document.compatMode != 'undefined' &&
document.compatMode != 'BackCompat') {
// use document.documentElement.scrollTop/Left
}
else {
// use document.body.scrollTop/Left
}
*/