package env;

use strict;
use vars qw( $VERSION );
use HTTP::BrowserDetect;
use Geo::IP::PurePerl;

$VERSION = '0.01';

sub new {
 	my $obj = shift;
 	my $ref = {};
	
	$ref->{'browser'} = 'Firefox';
	$ref->{'browserVersion'} = 0;
	$ref->{'browserCountry'} = '';
	$ref->{'browserLang'} = '';
	$ref->{'OS'} = '';
	$ref->{'lang'} = 'de'; 			# ISO 639-1 e.g.: de,en,fr...
	$ref->{'country'} = 'AT'; 		# ISO 3166 
 	$ref->{'countryName'} = '';		# Full Country Name
	$ref->{'cssSyntax'} = $ref->{'browser'};
	$ref->{'mozillaVersion'} = 0;
	 

	# try to get Mozilla
	if( $ENV{'HTTP_USER_AGENT'} =~ /Mozilla\/(\d\.\d)/i ) {
		$ref->{'mozillaVersion'} = $1;
	}

	# try for language
	if( $ENV{'HTTP_ACCEPT_LANGUAGE'} =~ /^([a-z][a-z])/ ) {
		$ref->{'browserLang'} = $1;
	}

	# try for contry
	if( $ENV{'HTTP_ACCEPT_LANGUAGE'} =~ /\-([a-z][a-z])/i ) {
                $ref->{'browserCountry'} = uc $1;
        }

	# try for contry with geoIP
	my $geo = Geo::IP::PurePerl->new();
	$ref->{'country'} = $geo->country_code_by_addr( $ENV{'REMOTE_ADDR'} );
	$ref->{'countryName'} = $geo->country_name_by_addr( $ENV{'REMOTE_ADDR'} );

	# Detect Browser / OS
	my $brow = HTTP::BrowserDetect->new( $ENV{'HTTP_USER_AGENT'} );
	$ref->{'browser'} = $brow->browser_string();
	$ref->{'browserVersion'} = $brow->version();
	$ref->{'OS'} = $brow->os_string();

	if( $ref->{'browser'} ) {
		if( $ref->{'browser'} ne 'Netscape' ) {
			$ref->{'cssSyntax'} = $ref->{'browser'};
		} else {
			$ref->{'cssSyntax'} = 'Firefox';
		}
	}	


	# TEST
	#$ref->{'lang'} = 'de';
	#$ref->{'country'} = 'RU';
	#$ref->{'cssSyntax'} = $ref->{'browser'};

	bless($ref,$obj);
 	return($ref);
}


sub getBrowser {
	my ($ref) = @_;
	return $ref->{'browser'};
}

sub getBrowserCountry {
	my ($ref) = @_;
	return $ref->{'browserCountry'};
}

sub getBrowserLang {
	my ($ref) = @_;
	return $ref->{'browserLang'};
}

sub getBrowserVersion {
	my ($ref) = @_;
        return $ref->{'browserVersion'};
}

sub getOS {
	my ($ref) = @_;
        return $ref->{'OS'};
}

sub getLang {
	my ($ref) = @_;
        return $ref->{'lang'};
}

sub getCountry {
	my ($ref) = @_;
	return $ref->{'country'}
}

sub getCountryName {
        my ($ref) = @_;
        return $ref->{'countryName'}
}

sub getCssSyntax {
	my ($ref) = @_;
	return $ref->{'cssSyntax'};
}

sub getMozilla {
	my ($ref) = @_;
	return $ref->{'mozillaVersion'};
}

1;


