//######## prototyping 
String.prototype.trim = function () {return this.replace(/(^\s*)|(\s*$)/g, '');}
Array.prototype.contains = function(obj){for(var i = 0; i < this.length; i++){if (obj == this[i]){return true;}}return false;}
Array.prototype.set = function(obj){if(!this.contains(obj)){this.push(obj);}}
Array.prototype.remove = function(obj){for(var i = 0; i < this.length; i++){if (obj == this[i]){this.splice(i,1);return i;}}return -1;}
Array.prototype.withValue = function(){var pUnique = new Array();var pLast = null;this.sort();for(var i = 0; i < this.length; i++){if(this[i] != pLast && this[i] !=''){pUnique.push(this[i]);pLast = this[i];};};return pUnique;}
//######### cookie functions
function getCookie(sName)
{
	sName = sName.toLowerCase();
	var oCrumbles = document.cookie.split(';');
	for(var i=0; i<oCrumbles.length;i++)
	{
		var oPair= oCrumbles[i].split('=');
		var sKey = oPair[0].trim().toLowerCase();
		var sValue = oPair.length>1?oPair[1]:'';
		if(sKey == sName)
			return unescape(sValue)
	}
	return '';
}

function setCookie(sName,sValue)
{
	var oDate = new Date();
	oDate.setYear(oDate.getFullYear()+1);
	sValue = sValue.replace(/,/g,'%2c')
	var sCookie = sName + '=' + sValue + ';expires=' + oDate.toGMTString() + ';path=/';
	//alert(sCookie)
	document.cookie= sCookie;
}


function clearCookie(sName)
{
	setCookie(sName,'');
}

function cookiesEnabled()
{
	setCookie('Cookies','Enabled');
	return getCookie('Cookies') == 'Enabled';
}
//########## favorite functions
var _FAVORITE_COOKIE_NAME = 'fav';

function addFavorite(sId)
{
	var sClids = getCookie(_FAVORITE_COOKIE_NAME);
	var oClids = sClids.split(',');
	oClids.set(sId);
	sClids = oClids.join(',');
	setCookie(_FAVORITE_COOKIE_NAME,sClids);
}
function removeFavorite(sId)
{
	var sClids = getCookie(_FAVORITE_COOKIE_NAME);
	var oClids = sClids.split(',');
	oClids.remove(sId);
	sClids = oClids.join(',');
	setCookie(_FAVORITE_COOKIE_NAME,sClids);
}
function isFavorite(sId)
{
	var sClids = getCookie(_FAVORITE_COOKIE_NAME);
	var oClids = sClids.split(',');
	return oClids.contains(sId);
}
function clearFavorite()
{
	setCookie(_FAVORITE_COOKIE_NAME,'');
}
function getFavorites()
{
	var sClids = getCookie(_FAVORITE_COOKIE_NAME);
	var oClids = sClids.split(',');
	return oClids.withValue().join(',');
}
function getFavoritesCount()
{
	var sClids = getCookie(_FAVORITE_COOKIE_NAME);
	var oClids = sClids.split(',');
	return oClids.withValue().length;
}
// ######### automation

var _Favorites_OldOnload = window.onload;
window.onload = function()
{
    try{
    if(_Favorites_OldOnload)
        _Favorites_OldOnload();
    }catch(e){}

    var oDivs = document.getElementsByTagName('IMG');
    for(var i = 0 ; i < oDivs.length;i++)
    {
        var oDiv = oDivs[i];
        for(var j=0;j<oDiv.attributes.length;j++)
        {
            var oAttrib = oDiv.attributes[j]    
            if(oAttrib.nodeName.toLowerCase().indexOf('fav') != -1)
            {
                _initFav(oDiv,oAttrib.nodeValue);
                break;
            }
        }
    }
}
function _initFav(oImg,sParams)
{
	var sID = sParams;
	var sImage = oImg.src;
    var oSplit =  sParams.split(',');
    if(oSplit.length==2)
    {
        sID = oSplit[0];
        sImage = oSplit[1];
    }    	
    oImg.favOn = sImage;
    oImg.favOff = oImg.src;
    oImg.estate = sID;
    
   	oImg.src = isFavorite(sID)?oImg.favOn:oImg.favOff;

    oImg.onclick = function()
    {
    	var oCount = document.getElementById('favcount');
    	var oAsFav = document.getElementById('asfav');
    	var oNoFav = document.getElementById('nofav');

    	if(isFavorite(this.estate))
    	{
    		removeFavorite(this.estate);
    		this.src = oImg.favOff;
    	}
    	else
    	{
    		addFavorite(this.estate);
    		this.src = oImg.favOn;
    	}
		if(oCount)oCount.innerHTML = getFavoritesCount();
		if(getFavoritesCount()>0)
		{
			
			if(oNoFav)oNoFav.style.display='none';
			if(oAsFav)oAsFav.style.display='block';

		}
		else
		{
			if(oNoFav)oNoFav.style.display='block';
			if(oAsFav)oAsFav.style.display='none';
		}
    }
    
}
//dyn populate code
function populate(sTarget,oSource,sFile)
{
	var oTarget = document.getElementById(sTarget);
	if(!oTarget)
		return;
	
	for(var i=oTarget.options.length-1;i>0;i--)
	{
		if(oTarget.options[i].value != '' && oTarget.options[i].value != '0')
			oTarget.remove(i);
	}
	
	$.ajax({  
  		url: sFile+'?id='+oSource.value,  
  		success: function(sData)
  		{  
   			var oSplit = sData.split(',');
   			for(var i = 0; i < oSplit.length; i++)
			{
				if(!oSplit[i])
					continue;
				var oOption = document.createElement("OPTION");
				oOption.text = oSplit[i];
				oOption.value = oSplit[i];
				oTarget.options[oTarget.options.length] = oOption;	
			}
  		}
	});
}
