﻿function Position( x, y )
{
	this.X = x;
	this.Y = y;
}
	
function CitClient()
{
	//member variables
	this.m_iBrowser			= 0;
	this.m_fVersion			= 0;
	
	this.m_strVersion		= '';
	this.m_strSearchKey		= '';
	
	this.m_iScreenWidth		= 0;
	this.m_iScreenHeight	= 0;
	
	this.GetBrowserType();
	this.GetTypeVersion();
	this.GetScreenDimensions();
}

CitClient.BROWSER_UNDEFINED	= 0;
CitClient.BROWSER_IE			= 1;
CitClient.BROWSER_FF			= 2;
CitClient.BROWSER_OPERA		= 3;
CitClient.BROWSER_SAFARI		= 4

//properties
CitClient.prototype.GetBrowser			= function() {return this.m_iBrowser;}
CitClient.prototype.GetVersion			= function() {return this.m_fVersion;}
CitClient.prototype.GetScreenWidth		= function() {return this.m_iScreenWidth;}
CitClient.prototype.GetScreenHeight		= function() {return this.m_iScreenHeight;}
	
//utility methods
CitClient.prototype.GetBrowserType = function()
{
	if( navigator.userAgent.indexOf( 'Firefox' ) != -1 )
	{
		this.m_iBrowser		= CitClient.BROWSER_FF;
		this.m_strVersion	= navigator.userAgent;
		this.m_strSearchKey	= 'Firefox';
	}
		
	else if( navigator.userAgent.indexOf( 'Opera' ) != -1 )
	{
		this.m_iBrowser		= CitClient.BROWSER_OPERA;
		this.m_strVersion	= navigator.userAgent;
		this.m_strSearchKey	= 'Opera';
	}
	
	else if( navigator.userAgent.indexOf( 'Safari' ) != -1 )
	{
		this.m_iBrowser		= CitClient.BROWSER_SAFARI;
		this.m_strVersion	= navigator.appVersion;
	}

	else if( navigator.userAgent.indexOf( 'MSIE' ) != -1 )
	{
		this.m_iBrowser		= CitClient.BROWSER_IE;
		this.m_strVersion	= navigator.appVersion;
		this.m_strSearchKey	= 'MSIE';
	}
				
	else
	{
		this.m_iBrowser		= CitClient.BROWSER_UNDEFINED;
		this.m_strVersion	= '';
	}	
}

CitClient.prototype.GetTypeVersion = function()
{
	var index = this.m_strVersion.indexOf( this.m_strSearchKey );
	
	if( index == -1 )
		this.Version = 0.0;
		
	this.m_fVersion = parseFloat( this.m_strVersion.substring( index+this.m_strSearchKey.length+1 ) );
}

CitClient.prototype.GetScreenDimensions = function()
{
	if( self.innerWidth )
	{
		this.m_iScreenWidth	    = self.innerWidth;
		this.m_iScreenHeight	= self.innerHeight;
	}
	else if( document.documentElement && document.documentElement.clientWidth )
	{
		this.m_iScreenWidth	    = document.documentElement.clientWidth;
		this.m_iScreenHeight	= document.documentElement.clientHeight;
	}
	else if( document.body )
	{
		this.m_iScreenWidth		= document.body.clientWidth;
		this.m_iScreenHeight	= document.body.clientHeight;
	}
}	

CitClient.prototype.CenterElementInWindow = function( element )
{
	if( typeof( element ) == 'string' )
		element = document.getElementById( element );
		
	this.GetScreenDimensions();
	
	var elm_w		= element.clientWidth;
	var elm_h		= element.clientHeight;
	var scroll_x	= document.body.scrollLeft;
	var scroll_y	= document.body.scrollTop;
	
	if( this.m_iBrowser != CitClient.BROWSER_IE )
	{
		scroll_x = window.pageXOffset;
		scroll_y = window.pageYOffset;
	}
	else if( document.documentElement && document.documentElement.clientWidth )
	{
		scroll_x = document.documentElement.scrollLeft;
		scroll_y = document.documentElement.scrollTop;
	}
	
	element.style.top	= (((this.m_iScreenHeight-elm_h)/2+scroll_y))+'px';
	element.style.left	= ((this.m_iScreenWidth-elm_w)/2+scroll_x)+'px';
}

CitClient.prototype.GetElementPosition = function( elm )
{
	var curleft = 0;
	var curtop	= 0;
	var obj		= null;
	
	if( typeof( elm ) == 'string' )
		obj = document.getElementById( elm );
	else
		obj	= elm;
	
	if( obj.offsetParent )
	{
		while( obj.offsetParent )
		{
			curleft += obj.offsetLeft
			curtop	+= obj.offsetTop;
			
			obj		= obj.offsetParent;
		}
	}
	else if( obj.x )
	{
		curleft += obj.x;
		curtop	+= obj.y;
	}
	
	return new PhPosition( curleft, curtop );
}

var g_oClient = new CitClient();
