function AJAX_Saljes(varname, containerid)
{
	var webkit_version = userAgent.match(/applewebkit\/([0-9]+)/);

	if (AJAX_Compatible && !(is_saf && !(webkit_version[1] >= 412)))
	{
       if(CURRENT_SITE=='lagenhet'){
            this.highlightColor='#CCF';
            this.nohighlightColor='#f5f5f5';
            this.nohighlightColorTwo='#E5E5E5';

            this.activeObjectBorder='1px solid #777';
            this.activeObjectRowBackground='#CCC';
            this.resultTableBorder='';
            this.resultTableMargin='0 5px 0 5px';
            this.resultTableWidth='100%';
            this.resultCellsFont='11px tahoma, verdana, geneva, lucida, arial, helvetica, sans-serif';
       }
       else {
            this.highlightColor='#CCF';
            this.nohighlightColor='#f5f5f5';
            this.nohighlightColorTwo='#E5E5E5';

            this.activeObjectBorder='1px solid #777';
            this.activeObjectRowBackground='#CCC';
            this.resultTableBorder='';
            this.resultTableMargin='0 5px 0 5px';
            this.resultTableWidth='100%';
            this.resultCellsFont='11px tahoma, verdana, geneva, lucida, arial, helvetica, sans-serif';
       }


		this.varname = varname;
		this.fragment = '';
		this.doneforum = '';
		this.timeout = null;
		this.saljes = new Array();
        this.xml_sender = null;
        this.xml_sender_kommun = null;
        this.xml_sender_info = null;
        this.xml_sender_kommuninfo = null;
        this.xml_sender_click = null;
        this.sortvar = '';
        this.pagelinks = '';
        this.lan = '';
        this.showinfoNotClosed='';
        this.kommuner = new Array();
        this.origtrigger='';
        this.origmaklare=origmaklare;
        this.maklare=origmaklare;
        this.objektinfo='';
        this.kommuninfo='';
        this.sokinfo='';
        this.requestPage = 1;
        this.sortstring='';


		this.trigger = function(text)
		{
            var string = '/http:\/\/saljes\.lagenhet2\.se/i';
            //if(/http:\/\/saljes\.lagenhet2\.se/i.test(location.href)){
            if(this.maklare=='')
            {
                if(this.origtrigger=='')
                {
                    this.origtrigger=text;
                }
                if(this.origtrigger == 'new' || this.origtrigger == text || kommun_no_redirect==true){
                    this.sortvar='';
                    this.requestPage=1;
                    this.fragment=text;
                    fetch_object('saljesresultat').innerHTML='<div style="padding:15px; font-size:11px; font-weight:bold">Genomför sökning ...</div>';
                    this.maklare='';
                    clearTimeout(this.timeout);
        			this.timeout = setTimeout(this.varname + '.item_search();', 1);
                    var expires = new Date();
                    expires.setTime(expires.getTime() + (1000 * 86400 * 1000));
                    if(this.kommun_no_redirect!=true) SetCookie('saljes-search', text);
                }
                else{
                    fetch_object('trigger').value=text;
                    fetch_object('sendtrigger').submit();
                }
            //}
            //else {
            //     fetch_object('saljesstatus').innerHTML='<span style="font-weight:bold; color:red">Obs.</span><br />För att sökningen på denna sida ska fungera korrekt måste du gå till <a href="http://saljes.lagenhet2.se">http://saljes.lagenhet2.se</a><br /><br />';
            //}
            }
            else {
                this.maklare_trigger(text);
            }
		}

        this.maklare_trigger = function(text)
        {
                if(this.origtrigger=='')
                {
                    this.origtrigger=text;
                }
                if(this.origtrigger == 'new' || this.origtrigger == text || kommun_no_redirect==true){
                    this.sortvar='';
                    this.requestPage=1;
                    this.fragment=text;
                    fetch_object('saljesresultat').innerHTML='<div style="padding:15px; font-size:11px; font-weight:bold">Genomför sökning ...</div>';
                    clearTimeout(this.timeout);
                    this.timeout = setTimeout(this.varname + '.item_maklare_search();', 1);
                    var expires = new Date();
                    expires.setTime(expires.getTime() + (1000 * 86400 * 1000));
                    if(this.kommun_no_redirect!=true) SetCookie('saljes-search', text);
                }
                else{
                    fetch_object('trigger').value=text;
                    fetch_object('sendtrigger').submit();
                }
        }

		/**
		* Sends the fragment to search the database
		*/
		this.item_search = function()
		{
                this.saljes = new Array();
				if (!this.xml_sender)
				{
					this.xml_sender = new vB_AJAX_Handler(true);
				}
				this.xml_sender.onreadystatechange(this.onreadystatechange);
				this.xml_sender.send('http://saljes.' + CURRENT_DOMAIN + '/ajax-saljes.php', 'kommun=' + escape(this.fragment) + '&url=' + escape(document.location) + '&ref=' + escape(document.referrer) + '&page=' + this.requestPage);
                var temp = this.fragment.split('|');
                if(temp[1]) this.fragment=temp[1];

		}

        this.item_maklare_search = function()
        {
                this.saljes = new Array();
                if (!this.xml_sender)
                {
                    this.xml_sender = new vB_AJAX_Handler(true);
                }
                this.xml_sender.onreadystatechange(this.onreadystatechange);
                this.xml_sender.send('http://saljes.' + CURRENT_DOMAIN + '/ajax-saljes.php', 'kommun=' + escape(this.fragment) + '&maklare=' + escape(this.maklare) + '&url=' + escape(document.location) + '&ref=' + escape(document.referrer) + '&page=' + this.requestPage);
                var temp = this.fragment.split('|');
                if(temp[1]) this.fragment=temp[1];

        }

        this.getKommuner = function(selectedlan)
		{
            if(selectedlan!='valj'){
                this.kommuner = new Array();
				if (!this.xml_sender_kommun)
				{
					this.xml_sender_kommun = new vB_AJAX_Handler(true);
				}
				this.xml_sender_kommun.onreadystatechange(this.onreadystatechange_kommun);
				this.xml_sender_kommun.send('http://saljes.' + CURRENT_DOMAIN + '/ajax-saljes.php', 'lan=' + escape(selectedlan));
            }
            else {
                this.kommuner = new Array();
                me.kommunselect_build();
            }

		}

        this.outclick = function (id){
            if (!this.xml_sender_click)
            {
                    this.xml_sender_click = new vB_AJAX_Handler(true);
            }
            this.xml_sender_click.onreadystatechange(this.onreadystatechange);
            this.xml_sender_click.send('http://saljes.' + CURRENT_DOMAIN + '/ajax-saljes.php', 'click=' + id + '&url=' + escape(document.location));
       }

        this.getInfo = function(object)
		{
            if(parseInt(object)==object){
                    this.infos = new Array();
    				if (!this.xml_sender_info)
    				{
    					this.xml_sender_info = new vB_AJAX_Handler(true);
    				}
    				this.xml_sender_info.onreadystatechange(this.onreadystatechange_info);
    				this.xml_sender_info.send('http://saljes.' + CURRENT_DOMAIN + '/ajax-saljes.php', 'objekt=' + object + '&url=' + escape(document.location));
            }
		}

        this.getKommunInfo = function(object)
        {
                    //this.kommuninfo = ='';
                    if (!this.xml_sender_kommuninfo)
                    {
                        this.xml_sender_kommuninfo = new vB_AJAX_Handler(true);
                    }
                    this.xml_sender_kommuninfo.onreadystatechange(this.onreadystatechange_kommuninfo);
                    this.xml_sender_kommuninfo.send('http://saljes.' + CURRENT_DOMAIN + '/ajax-saljes.php', 'kommuninfo=' + object + '&url=' + escape(document.location));
        }

		var me = this;

		/**
		* OnReadyStateChange callback. Uses a closure to keep state.
		* Remember to use 'me' instead of 'this' inside this function!
		*/
        this.onreadystatechange = function()
		{
			if (me.xml_sender.handler.readyState == 4 && me.xml_sender.handler.status == 200 && me.xml_sender.handler.responseXML)
			{
                var sokning = fetch_tags(me.xml_sender.handler.responseXML, 'sokinfo');
                me.sokinfo = me.xml_sender.fetch_data(sokning[0]);

                var pages = fetch_tags(me.xml_sender.handler.responseXML, 'pagelinks');
                me.pagelinks = me.xml_sender.fetch_data(pages[0]);

                var objekt = fetch_tags(me.xml_sender.handler.responseXML, 'objekt');
                for (i = 0; i < objekt.length; i++)
				{
                    me.saljes[i] = me.xml_sender.fetch_data(objekt[i]);
				}

                me.table_build();

				me.xml_sender.handler.abort();
			}
		}

        this.onreadystatechange_kommun = function()
		{
			if (me.xml_sender_kommun.handler.readyState == 4 && me.xml_sender_kommun.handler.status == 200 && me.xml_sender_kommun.handler.responseXML)
			{
                var kommun = fetch_tags(me.xml_sender_kommun.handler.responseXML, 'kommun');
                for (i = 0; i < kommun.length; i++)
				{
                    me.kommuner[i] = me.xml_sender_kommun.fetch_data(kommun[i]);
				}

                me.kommunselect_build();

				me.xml_sender_kommun.handler.abort();
			}
		}

        this.onreadystatechange_info = function()
		{
			if (me.xml_sender_info.handler.readyState == 4 && me.xml_sender_info.handler.status == 200 && me.xml_sender_info.handler.responseXML)
			{
                var objekt = fetch_tags(me.xml_sender_info.handler.responseXML, 'objekt');
                me.objektinfo = me.xml_sender_info.fetch_data(objekt[0]);
                //fetch_object('saljesstatus').innerHTML=me.objektinfo;
                me.setInfo();
				me.xml_sender_info.handler.abort();
			}
		}

        this.onreadystatechange_kommuninfo = function()
        {
            if (me.xml_sender_kommuninfo.handler.readyState == 4 && me.xml_sender_kommuninfo.handler.status == 200 && me.xml_sender_kommuninfo.handler.responseXML)
            {
                var objekt = fetch_tags(me.xml_sender_kommuninfo.handler.responseXML, 'info');
                me.kommuninfo = me.xml_sender_kommuninfo.fetch_data(objekt[0]);
                me.setKommunInfo();
                me.xml_sender_kommuninfo.handler.abort();
            }
        }

        this.kommunselect_build = function(){
            var kommunselect = fetch_object('kommunselect');
            kommunselect.options.length=0;
            if(this.kommuner.length>0){
                kommunselect.options[0]= new Option("Välj kommun", "0", true, true);
                var j=1;
                for (i in this.kommuner)
    			{
                    var parts = this.kommuner[i].split('|');
                    kommunselect.options[j]= new Option(parts[0], parts[1], false, false);
                    j++;
                }
                kommunselect.disabled='';
            }
            else {
               kommunselect.disabled='disabled';
            }

        }

		/**
		* Bygger tabellen
		*/
        this.table_build = function()
		{


			var table = document.createElement('table');
            table.width=this.resultTableWidth;
            table.style.margin=this.resultTableMargin;
			table.cellPadding = 2;
			table.cellSpacing = '0';
			table.border = 0;
            table.style.border=this.resultTableBorder;

            // sökinfo
            var tr = table.insertRow(-1);
            var td = tr.insertCell(-1);
            if(this.pagelinks!='') td.innerHTML=this.sokinfo + '<div align="right">' + this.pagelinks + '</div>';
            else td.innerHTML=this.sokinfo;

            td.colSpan='99';
            td.style.font=this.resultCellsFont;
            td.style.padding='10px 10px 10px 10px';
            td.style.border='1px solid #999';
            td.style.borderBottom='0 none #FFF';
            td.style.backgroundColor='#DDD';


            var tr = table.insertRow(-1);
            tr.style.cursor='pointer';
            tr.style.cursor='hand';

            var td = tr.insertCell(-1);
    		td.className = 'thead';
            td.innerHTML = 'Inlagd';
            td.id='SORTts';
            td.style.paddingLeft='10px';
            td.style.width='85px';
            td.onclick=saljes.sorting;
            td.title='Sortera efter inläggsdatum';

            var td = tr.insertCell(-1);
    		td.className = 'thead';
            td.innerHTML = 'Område';
            td.id='SORTort';
            td.onclick=saljes.sorting;
            td.title='Sortera efter område';

            var td = tr.insertCell(-1);
    		td.className = 'thead';
            td.innerHTML = 'Adress';
            td.id='SORTadress';
            td.onclick=saljes.sorting;

            var td = tr.insertCell(-1);
    		td.className = 'thead';
            td.innerHTML = 'Rum';
            td.id='SORTrum';
            td.onclick=saljes.sorting;
            td.title='Sortera efter antalet rum';
            td.style.width='55px';
            td.align='center';

            var td = tr.insertCell(-1);
    		td.className = 'thead';
            td.innerHTML = 'Area';
            td.id='SORTarea';
            td.onclick=saljes.sorting;
            td.title='Sortera efter area';
            td.style.width='65px';
            td.align='center';

            //var td = tr.insertCell(-1);
    		//td.className = 'thead';
            //td.innerHTML = 'Tomtarea';
            //td.id='SORTtomtarea';
            //td.onclick=saljes.sorting;
            //td.title='Sortera efter tomtarea';

            var td = tr.insertCell(-1);
    		td.className = 'thead';
            td.innerHTML = 'Pris';
            td.id='SORTpris';
            td.onclick=saljes.sorting;
            td.align='right';
            td.title='Sortera efter pris';
            td.style.paddingRight='10px';
            td.style.width='100px';

            if(CURRENT_SITE=='lagenhet')
            {
                var td = tr.insertCell(-1);
                td.className = 'thead';
                td.innerHTML = 'Avgift';
                td.id='SORTavgift';
                td.onclick=saljes.sorting;
                td.align='right';
                td.title='Sortera efter avgift';
                td.style.paddingRight='10px';
                td.style.width='100px';
            }

            var k=0;
			for (i in this.saljes)
			{

                    var parts = this.saljes[i].split('|||||');

				    var tr = table.insertRow(-1);
                    tr.id = parts[0];
                    tr.onclick=saljes.showinfo;
                    tr.onmouseover=saljes.highlight;
                    tr.title='Klicka för mer info';
                    if(k==0){
                        tr.style.backgroundColor=this.nohighlightColor;
                        tr.className=this.nohighlightColor;
                        k=1;
                    }
                    else {
                        tr.style.backgroundColor=this.nohighlightColorTwo;
                        tr.className=this.nohighlightColorTwo;
                        k=0;
                    }

                    //td.style.font=this.resultCellsFont;


                    // Inlagd
                    var td = tr.insertCell(-1);
    				td.className = 'saljesresultat';
                    td.innerHTML = parts[8];
                    td.style.paddingLeft='10px';
                    td.style.font=this.resultCellsFont;
                    

                    // Område
                    var td = tr.insertCell(-1);
    				td.className = 'saljesresultat';
                    td.innerHTML = parts[5] + '&nbsp;';
                    td.style.font=this.resultCellsFont;

                    // adress
                    var td = tr.insertCell(-1);
    				td.className = 'saljesresultat';
                    td.innerHTML = parts[1] + '&nbsp;';
                    td.style.font=this.resultCellsFont;

                    //rum
                    var td = tr.insertCell(-1);
    				td.className = 'saljesresultat';
                    td.innerHTML = parts[3];
                    td.style.font=this.resultCellsFont;
                    td.align='center';


                    //area
                    var td = tr.insertCell(-1);
    				td.className = 'saljesresultat';
                    td.innerHTML = parts[4];
                    td.style.font=this.resultCellsFont;
                    td.align='center';

                    //tomtarea
                    //var td = tr.insertCell(-1);
    				//td.className = 'saljesresultat';
                    //td.innerHTML = parts[6];


                    // pris
                    var td = tr.insertCell(-1);
    				td.className = 'saljesresultat';
                    td.innerHTML = parts[2];
                    td.align='right';
                    td.style.paddingRight='10px';
                    td.style.font=this.resultCellsFont;

                    if(CURRENT_SITE=='lagenhet')
                    {
                    // avgift
                        var td = tr.insertCell(-1);
                        td.className = 'saljesresultat';
                        td.innerHTML = parts[7];
                        td.align='right';
                        td.style.paddingRight='10px';
                        td.style.font=this.resultCellsFont;
                    }

                    // tom rad för info
                    var tr = table.insertRow(-1);

                    var td = tr.insertCell(-1);
                    td.id='info' + parts[0];
                    td.colSpan='99';
                    td.style.padding='0';
                    td.innerHTML = '<div style="display:none; padding:5px 5px 5px 5px; background-color:#EEE;" id="info' + parts[0] + 'layer"></div>';

			}

            if(this.pagelinks!='') {
                var tr = table.insertRow(-1);
                var td = tr.insertCell(-1);
                td.colSpan='99';
                td.innerHTML= '<div style="margin-top:10px;">' + this.pagelinks + '</div>';
            }

            fetch_object('saljesresultat').innerHTML='';
            fetch_object('saljesresultat').appendChild(table);
		}

       this.highlight = function(){
           this.style.backgroundColor=me.highlightColor;
           this.style.cursor='pointer';
           this.style.cursor='hand';
           this.onmouseout=me.drophighlight;

       }

       this.drophighlight = function(){
            var varname = this.className;
            this.style.backgroundColor=varname;
       }

       this.setInfo = function (){
            var parts = this.objektinfo.split('|||||');
            var layerobj = fetch_object('info' + parts[0] + 'layer');
            layerobj.innerHTML= parts[1];
            var id = parts[0];
            var obj = fetch_object(id);
            var infoObject = fetch_object('info' + id);
            fetch_object('info' + id + 'layer').style.display='block';

            infoObject.style.borderTop=me.activeObjectBorder;
            infoObject.style.borderBottom=me.activeObjectBorder;
            var children = getImmediateChildren(obj, 'td');
            for(i=0; i<children.length; i++){
                children[i].style.borderTop=me.activeObjectBorder;
            }


            obj.style.backgroundColor=me.activeObjectRowBackground;
            obj.onmouseover='';
            obj.onmouseout='';
            obj.onclick=me.hideinfo;

       }

       this.showadmin = function (id)
       {
                var obj = fetch_object("info" + id + "layer");
                obj.innerHTML='<iframe src="http://saljes.' + CURRENT_DOMAIN + '/admin.php?id=' + id + '" width="600" height="250"></iframe>';
       }

       /**
	   * Visar info om objektet (använd me)
	   */
       this.showinfo = function(){
            var id = this.id;
            me.getInfo(id);
       }

       this.showinfo_remote = function(id){
            this.getInfo(id);
       }

       /**
	   * Döljer info om objektet (använd me)
	   */
       this.hideinfo = function(){
            var id = this.id;
            var infoObject = fetch_object('info' + id);
            var rowobj = fetch_object(id);
            fetch_object('info' + id + 'layer').style.display='none';

            infoObject.style.borderTop='';
            infoObject.style.borderBottom='';

            var children = getImmediateChildren(this, 'td');
            for(i=0; i<children.length; i++){
                children[i].style.borderTop='';
            }

            this.style.backgroundColor=saljes.highlightColor;
            this.style.borderTop='';
            this.onmouseover=me.highlight;
            this.onmouseout=me.drophighlight;
            this.onclick=me.showinfo;
       }

       this.hideinfo_remote = function(id){
            var infoObject = fetch_object('info' + id);
            var rowobj = fetch_object(id);
            fetch_object('info' + id + 'layer').style.display='none';

            infoObject.style.borderTop='';
            infoObject.style.borderBottom='';

            var children = getImmediateChildren(rowobj, 'td');
            for(i=0; i<children.length; i++){
                children[i].style.borderTop='';
            }

            rowobj.style.backgroundColor=rowobj.className;
            rowobj.style.borderTop='';
            rowobj.onmouseover=me.highlight;
            rowobj.onmouseout=me.drophighlight;
            rowobj.onclick=me.showinfo;
       }

       this.refresh = function(){
            clearTimeout(saljes.timeout);
            if(this.sortstring!='')
            {
                this.fragment = this.sortstring + '|' + this.fragment;
            }
            if(this.maklare!='')
                saljes.timeout = setTimeout(saljes.varname + '.item_maklare_search();', 1);
            else
                saljes.timeout = setTimeout(saljes.varname + '.item_search();', 1);
       }

       /**
	   * Skickar ny request med sortering efter valt objekt.
	   */
       this.sorting = function(){
            if(this.id==saljes.sortvar){
                 var sortorder = 'ASC';
                 saljes.sortvar = '';
            }
            else {
                var sortorder='DESC';
                saljes.sortvar = this.id;
            }
            saljes.requestPage=1;
            saljes.sortstring = this.id + sortorder;
            saljes.fragment = this.id + sortorder + '|' + saljes.fragment;
            fetch_object('saljesresultat').innerHTML='Utför sortering. Var god vänta.';
            clearTimeout(saljes.timeout);
			if(this.maklare!='')
                saljes.timeout = setTimeout(saljes.varname + '.item_maklare_search();', 1);
            else
                saljes.timeout = setTimeout(saljes.varname + '.item_search();', 1);
       }

       /**
       * Skickar ny request med sortering efter valt objekt.
       */
       this.Page = function(pageno){
            this.requestPage = pageno;
            clearTimeout(saljes.timeout);
            if(this.sortstring!='')
            {
                this.fragment = this.sortstring + '|' + this.fragment;
            }
            if(this.maklare!='')
                saljes.timeout = setTimeout(saljes.varname + '.item_maklare_search();', 1);
            else
                saljes.timeout = setTimeout(saljes.varname + '.item_search();', 1);
       }



       /**
       * Skickar en fritextsökning.
       */
       this.fritext = function(text){
            this.maklare='';
            if(text.length > 3){
                saljes.fragment = 'fritext###' + text;
                fetch_object('saljesresultat').innerHTML='<div style="padding:15px; font-size:11px; font-weight:bold">Din sökning utförs. Du kan fortsätta skriva om du vill specifiera den.</div>';
                clearTimeout(saljes.timeout);
                saljes.timeout = setTimeout(saljes.varname + '.item_search();', 500);
            }
       }

       this.show_kommuninfo = function (id){
            obj = fetch_object('kommuninfo');
            var extremes = extremepoints();
            obj.style.top = (minY + 200) + 'px';
            obj.innerHTML='Hämtar kommuninfo';
            obj.style.display='block';
            saljes.getKommunInfo(id);
       }

       this.hide_kommuninfo = function (id){
            fetch_object('kommuninfo').style.display='none';
       }

       this.setKommunInfo = function (){
           fetch_object('kommuninfo').innerHTML = this.kommuninfo;
       }

	}
}

function getImmediateChildren(node, tagName)
{
	if(!node || !node.childNodes) return;
	if(!tagName) tagName = "*";
	var elements = document.getElementsByTagName(tagName);
	var nodeCount = elements.length;
	var children = new Array();
	for(var i=0;i<nodeCount;i++)
	{
		if(elements[i].parentNode == node)
		{
			children[children.length] = elements[i];
		}
	}
	return children;
}


function extremepoints(){ // hämtar extrempunkter att ta hänsyn till vid placering av element
    if( typeof( window.innerWidth ) == 'number' ) {
    // 'Normal' browsers
        maxX = window.innerWidth;
        maxY = window.pageYOffset + window.innerHeight;
        minY = window.pageYOffset;
    }
    else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    // IE standard mode
        maxX = document.documentElement.clientWidth;
        maxY = document.documentElement.clientHeight + document.documentElement.scrollTop;
        minY = document.documentElement.scrollTop;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //OLD IEs
        maxX = document.body.clientWidth;
        maxY = document.body.clientHeight + document.body.scrollTop;
        minY = document.body.scrollTop;
  }
  return [maxX,maxY,0,minY];
}

function SetCookie( name, value, path, domain, secure ) {
    var today = new Date();
    var expires = 5*365;
    today.setTime( today.getTime() );
    if ( expires ) {
        expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    document.cookie = name+"="+escape( value ) +
        ( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
        ( ( path ) ? ";path=" + path : "/" ) + ";domain=" + "." + CURRENT_DOMAIN +
        ( ( secure ) ? ";secure" : "" );
}