    var ffresults = {

    	// copyright 2008 - 2010 FreeFind.com - authorized for use with the FreeFind service only

    	// Start of config settings

        autoPos : true,			// automatic initial window position / size. 

    	// if autoPos if false, the following four numbers are used as initial window position and size

    	initialX : 78,			// left position (pixels)
    	initialY : 66,			// right position (pixels)
    	initialH : 395,			// height of window
    	initialW : 622,			// width of window

    	// choose a number for z-index that is high enough so the results window appears above other windows on your page

    	initialZ : 10000000,    // initial z-index of the results window
    	
    	// the following value controls the color of the window's drag bar (top area of window)
    	
    	barColor : 'navy',

    	// end of config settings

    	element : undefined,
    	cover : undefined,
    	mouseDownX : 0,
    	mouseDownY : 0,
    	objectX : 0,
    	objectY : 0,
    	objectH : 0,
    	objectW : 0,
        ipos : false,
    	resize : false,
    	
    	sizeImageUrl : 'http://search.freefind.com/img/rsize.gif',

    	selectFunc : undefined,
    	selectState : undefined,
    	mozSelect : undefined,

    	noSelect : function()
    	{
    	    var obj = document.body;

            ffresults.selectFunc = obj.onselectstart;
    		ffresults.selectState = obj.unselectable;
    		ffresults.mozSelect = obj.style.MozUserSelect;

    		obj.onselectstart = function(){ return false; };
    		obj.unselectable = 'on';
    		obj.style.MozUserSelect = 'none';
    	},

    	restoreSelect : function()
    	{
    	    var obj = document.body;

    		obj.onselectstart = ffresults.selectFunc;
    		obj.unselectable = ffresults.selectState;
    		obj.style.MozUserSelect = ffresults.mozSelect;
    	},


    	drag : function (e,size)
    	{
    		if(!document.getElementById) return;
    		
    		if(!e) e = window.event;
    		var targ = e.target || e.srcElement;
    	    ffresults.resize = size;

    		if(targ.id != 'ffresult_bar' && targ.id != 'ffresult_szimg') return true;
    		ffresults.noSelect();

    		ffresults.element = document.getElementById('ffresult_win');
    		ffresults.objectX = parseInt(ffresults.element.style.left,10);
    		ffresults.objectY = parseInt(ffresults.element.style.top,10);
    		ffresults.objectH = parseInt(ffresults.element.style.height,10);
    		ffresults.objectW = parseInt(ffresults.element.style.width,10);

    		ffresults.cover = document.getElementById('ffresult_cvr');
    		ffresults.cover.style.zIndex = '40';
    		ffresults.mouseDownX = e.clientX;
    		ffresults.mouseDownY = e.clientY;
    		if(e.preventDefault) e.preventDefault();
    		e.returnValue = false;
    		e.cancelBubble = true;
    		ffresults.attach(document,"mouseup",ffresults.drop);
    		ffresults.attach(document,"mousemove",ffresults.move);
    	},




    	attach : function(to,eventname,func)
    	{
    		if(to.addEventListener) 
    			to.addEventListener(eventname,func,false);
    		else
    			to.attachEvent("on" + eventname,func);
    	},

    	detach : function(to,eventname,func)
    	{
    		if(to.removeEventListener) 
    			to.removeEventListener(eventname,func,false);
    		else
    			to.detachEvent("on" + eventname,func);
    	},

    	drop : function(e)
    	{
    		ffresults.detach(document,"mouseup",ffresults.drop);
    		ffresults.detach(document,"mousemove",ffresults.move);
    		ffresults.cover.style.zIndex = 0;	
    		ffresults.element = null;
    		ffresults.restoreSelect();
    	},

    	move: function(e)
    	{
    	   if(!e) e = window.event;

    	   e.returnValue = false;
    	   e.cancelBubble = true;
    	   if(e.preventDefault) e.preventDefault();

    		var x = e.clientX;
    		var y = e.clientY; 

    		if(ffresults.resize)
    		{
    			var winW = ffresults.objectW + x - ffresults.mouseDownX;
    			var winH = ffresults.objectH + y - ffresults.mouseDownY;
    			
    			if(winH < 128) winH = 128;
    			if(winW < 128) winW = 128;

    			ffresults.element.style.width = winW + "px";
    			ffresults.element.style.height = winH + "px";
    		}
    		else
    		{
    			var left = ffresults.objectX + x - ffresults.mouseDownX;
    			var top = ffresults.objectY + y - ffresults.mouseDownY;

    			ffresults.element.style.left = left + "px";
    			ffresults.element.style.top = top + "px";
    		}
    		

    	},

    	hide : function()
    	{
    		var rStyle = document.getElementById('ffresult_win').style;
    		rStyle.display = "none";
    		rStyle.zIndex = 0;
    		var ifr = document.getElementById('ffresult_ifr');
    		if(ifr) ifr.src="";
    		var szImg = document.getElementById('ffresult_szimg');
    		if(szImg) szImg.src = "";

    	},


    	show : function(num)
    	{
    		if(!document.getElementById) return;

    		var searchForm = document.getElementById('ffresult_sbox'+num);
    		var idxLink = document.getElementById('ffresult_idx'+num);
    		var smpLink = document.getElementById('ffresult_smp'+num);
    		var advLink = document.getElementById('ffresult_adv'+num);

    		if(searchForm) searchForm.target = 'ffresult_frame';
    		if(idxLink) idxLink.target = 'ffresult_frame';
    		if(smpLink) smpLink.target = 'ffresult_frame';
    		if(advLink) advLink.target = 'ffresult_frame';

    		var rDiv = document.getElementById('ffresult_win');

    		if(!ffresults.ipos)
    		{
    		    if(ffresults.autoPos)
    			{
    			    ffresults.computePos(rDiv); 
    			}
    			else
    			{
    				rDiv.style.top = ffresults.initialY + 'px';
    				rDiv.style.left = ffresults.initialX + 'px';
    				rDiv.style.width = ffresults.initialW + 'px';
    				rDiv.style.height = (ffresults.initialH - 36) + 'px';	
    			}
    			ffresults.ipos = true;
    		}

    		var szImg = document.getElementById('ffresult_szimg');
    		if(szImg) szImg.src = ffresults.sizeImageUrl;

    		var dragBar = document.getElementById('ffresult_bar');
    		if(dragBar) 
    		{
    			dragBar.style.backgroundColor = ffresults.barColor;
    			dragBar.style.borderColor = ffresults.barColor;
    		}

    		rDiv.style.zIndex = ffresults.initialZ;
    		rDiv.style.display = "block";
    	},



    	computePos : function(rDiv)
    	{

    		var view = ffresults.viewSize();
    		var w = parseInt(view.width * 0.75,10);
    		var h = parseInt(view.height * 0.75,10);
    		if(w < 220) w = 220;
    		if(h < 220) h = 220;


    		var left = parseInt((view.width - w ) / 2,10);
    		var top = parseInt((view.height - (h + 36)) / 2,10);


    		if(left < 0) left = 0;
    		if(top < 0) top = 0;

    		rDiv.style.top = (top + view.scrollY) + 'px';
    		rDiv.style.left =  (left + view.scrollX) + 'px';
    		rDiv.style.width =  w + 'px';
    		rDiv.style.height =  h + 'px';

    	},
    	
    	viewSize : function()
    	{   
    		var w = 0;
    		var h = 0;
    		var sx = 0;
    		var sy = 0;

    	    if(window.innerWidth)	
    		{  // non-ie
    		   w = window.innerWidth;
    		   h = window.innerHeight;
    		   sx = window.pageXOffset;
    		   sy = window.pageYOffset;
    		}
    		else
    		{
    		    var elem;
    			if(document.documentElement && document.documentElement.clientWidth != 0)
    			{   // ie strict
    				elem = document.documentElement;
    			}
    			else
    			{	// ie quirks
    				elem = document.body;
    			}
    			w = elem.clientWidth;
    			h = elem.clientHeight;
    			sx = elem.scrollLeft;
    			sy = elem.scrollTop;
    			
    		}
    		  
    		
    		return {width: w,height: h, scrollX: sx, scrollY: sy};
    		
    	}


    };


