var Cookie={
	set:function(name,value,daysToExpire){
		var expire='';
		if(daysToExpire!=undefined){
			var d=new Date();
			d.setTime(d.getTime()+(86400000*parseFloat(daysToExpire)));
			expire='; expires='+d.toGMTString();
		}
		return(document.cookie=escape(name)+'='+escape(value||'')+expire);
	},
	get:function(name){
		var cookie=document.cookie.match(new RegExp('(^|;)\\s*'+escape(name)+'=([^;\\s]*)'));
		return(cookie?unescape(cookie[2]):null);
	},
		erase:function(name){
		var cookie=Cookie.get(name)||true;
		Cookie.set(name,'',-1);
		return cookie;
	},
		accept:function(){
		if(typeof navigator.cookieEnabled=='boolean'){
			return navigator.cookieEnabled;
		}
		Cookie.set('_test','1');
		return(Cookie.erase('_test')='1');
	}
};
var FAVORITES_ISEMPTY="Currently you have no favorites. <"+"br />Click <"+"img src='images/verysmalljellyfish.gif' alt='' /> next to a domain name to add it to your favorites.";
var DELETE_IMAGE="images/delete.gif";
var favorites=getFavoritesFromCookie();
var tldchecked = [];
var rememberFavorites=getRememberFavoritesFromCookie();

function addToFavorites(domain){
	if (trim(domain) != "") {
		domain=domain.toLowerCase();
		if(favorites.indexOf(domain)==-1)
			favorites.push(domain);
		favorites.sort();
		addFavoriteToCookie(domain);
		redrawFavorites();
	}
}

function removeFromFavorites(domain){
	favorites.removeItems(domain);
	removeFavoriteFromCookie(domain);
	redrawFavorites();
}

function redrawFavorites(){
	var output="<ul>";
	for(var i=0;i<favorites.length;i++){
		itemId='favorite_'+createIdFromDomain(favorites[i]);
		output+="<li id='"+itemId+"'>";
		var domain=favorites[i];
		output+="<a href='#' class='removefromlist' onclick='removeFromFavorites(\""+favorites[i]+"\");return false;'><img src='"+DELETE_IMAGE+"' alt='Remove "+domain+" from favorites' title='Remove "+domain+" from favorites' /></a>";
	output+="<a href='#' onclick='$(\"domainForm\").value=\""+favorites[i]+"\"; beginWhois();return false;'>"+domain+"</a>";
		output+="</li>";
		}
		output+="</ul>";
		$('favorites').innerHTML='';
		if(favorites.length>0){
		$('favorites').innerHTML=output;
		$('favorites').className='';
	}
	else{
		$('favorites').innerHTML=FAVORITES_ISEMPTY;
		$('favorites').className='empty';
	}
}

function getAddToFavoritesLink(domain){
	var domain=domain.toLowerCase();
	if(favorites.indexOf(domain)==-1){
		var linkId='addToFavorites_'+domain.replace('.','_');
		var output="<a id='"+linkId+"' class='addtofavorites' href='#' onclick=\"javascript:addToFavorites('"+domain+"');removeElement('"+linkId+"');return false;\">"
		output+="<img src='/static/images/tinyheart.gif' alt='Add to favorites' title='Add to favorites' />"
		output+="</a>";
		return output;
	}
	return"";
}

function isArray(obj)
{
	return!(obj.constructor.toString().indexOf("Array")==-1)
}

function createIdFromDomain(domain){
	return domain.replace(/\./g,'_');
}

function getRememberFavoritesFromCookie(){
	var id='remember_favorites';
	if(Cookie.get(id)==null){
		Cookie.set(id,'1',365);
		return true;
	}
	else{
		return Cookie.get(id)=='1';
	}
}

function addFavoriteToCookie(value){
	if(!getRememberFavoritesFromCookie())
		return;
	var id='favorites';
	value=value.toLowerCase();
	var strFavorites=Cookie.get(id)||"";
	var arFavorites=sanitizeArray(strFavorites.split(','));
	if(arFavorites.indexOf(value)==-1)
		arFavorites.push(value);
	arFavorites.sort();
	strFavorites=arFavorites.toString();
	Cookie.set(id,strFavorites,365);
}

function removeFavoriteFromCookie(value){
	var id='favorites';
	value=value.toLowerCase();
	var strFavorites=Cookie.get(id)||"";
	var arFavorites=sanitizeArray(strFavorites.split(','));
	arFavorites=removeFromArray(arFavorites,value);
	strFavorites=arFavorites.toString();
	Cookie.set(id,strFavorites,365);
}

function getFavoritesFromCookie(){
	var id='favorites';
	if(!getRememberFavoritesFromCookie())
		return[];
	else{
		var strFavorites=Cookie.get(id)||"";
		return sanitizeArray(strFavorites.split(','));
	}
}

function sanitizeArray(arr){
	if(arr.length==1&&arr[0]==''){
		arr.splice(0,1);
	}
	return arr
}

function removeFromArray(arr,value){
	while(arr.indexOf(value)>-1){
		arr.splice(arr.indexOf(value),1);
	}
	return arr;
}

Array.prototype.removeItems=function(itemsToRemove){
	if(!/Array/.test(itemsToRemove.constructor)){
		itemsToRemove=[itemsToRemove];
	}
	var j;
	for(var i=0;i<itemsToRemove.length;i++){
		j=0;
		while(j<this.length){
			if(this[j]==itemsToRemove[i]){
				this.splice(j,1);
			}else{
				j++;
			}
		}
	}
}

function exclicked(checkbox) {
	if (checkbox.checked) {
		new Effect.Appear('response_' + checkbox.value);
		beginWhoisOnCheck(checkbox.value);
	} else {
		new Effect.Fade('response_' + checkbox.value)
	}
}