
function CLanguages()
{

	this.defaultLanguage = 'en';
	this.validLanguages = [ this.defaultLanguage, 'cz', 'fr', 'de' ];
	
	this.isValid = function( lang )
	{
		for( var vlang in this.validLanguages )
		{
			if( this.validLanguages[ vlang ] == lang )
			{
				return true;
			}
		}
		return false;
	}
	
	this.validate = function( lang )
	{
		if( !this.isValid( lang ) )
		{
			return this.defaultLanguage;
		}
		return lang;
	}
	
	this.isDefault = function( lang )
	{
		return lang == this.defaultLanguage;
	}
	
}

var Languages = new CLanguages();

function CURLInfo( url )
{

	this.url = '';
	this.language = '';
	this.name = '';
	this.parts = [];
	this.isFollowable = true;
	
	this.parse = function( url )
	{
		if( url == null )
		{
			url = window.location.href;
		}
		this.url = url;
		this.parts = url.split( '/' );
		this.name = this.parts.splice( this.parts.length - 1, 1 )[ 0 ];
		if( this.name.substr( 0, 11 ) == 'javascript:' || this.name[ 0 ] == '#' )
		{
			this.language = Languages.defaultLanguage;
			this.isFollowable = false;
		}
		if( this.isFollowable )
		{
			this.language = this.parts[ this.parts.length - 1 ];
			if( !Languages.isValid( this.language ) )
			{
				this.language = Languages.defaultLanguage;
			}
			else
			{
				this.parts.splice( this.parts.length - 1, 1 );
			}
		}
	};
	
	this.parse( url );
	
	this.hasLanguage = function( lang )
	{
		lang = Languages.validate( lang );
		return this.language == lang;
	}
	
	this.hasName = function( name )
	{
		var pname = ( name == 'index.html' ? '' : name );
		var tname = ( this.name == 'index.html' ? '' : this.name );
		return pname == tname;
	}
	
	this.getURL = function()
	{
		var out = '';
		if( this.parts.length > 0 )
		{
			out += this.parts.join( '/' );
		}
		if( this.isFollowable )
		{
			if( out.length > 0 )
			{
				out += '/';
			}
			if( !Languages.isDefault( this.language ) )
			{
				out += this.language + '/';
			}
		}
		out += this.name;
		return out;
	};
	
	this.toString = function()
	{
		return this.getURL();
	};
	
}

