var browser = {
    isIE:     !!(window.attachEvent && !window.opera),
    isOpera:  !!window.opera,
    isWebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
    isGecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
    isMobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
};

Object.prototype.Extend = function ( object, replaceOldProp ) {
	
	for ( var property in object ) {
	
		if ( replaceOldProp || !this[ property ] ) {
			this[ property ] = object[ property ];
		}

	}
	
}

Function.prototype.Extend (
	
	{

		Arguments2Array : function( arguments ) {

			var results = new Array( );
		
			for ( var i = 0, length = arguments.length; i < length; i++ ) {
				results.push( arguments[i] );
			}
		
		    return results;
		
		},

		bindWithEvent : function( object ) {

			var _method = this, argv = this.Arguments2Array( arguments );
			argv.shift();
		
			return function( event ) {
				return _method.apply( object, [event || window.event].concat(argv) );
			}
		
		},

		bind : function( object ) {

			var _method = this;
		
			return function( ) {
				return _method.apply( object, arguments );
			}
		
		}

	}

);

var Events = { };
Events.Extend (

	{

		Attach : function( objectTarget, eventType, funcionHandler ) {
			
			if ( objectTarget.addEventListener ) { //for DOM-compliant browsers
				objectTarget.addEventListener( eventType, funcionHandler, false );
			}
			else if ( objectTarget.attachEvent ) { //for IE
				objectTarget.attachEvent('on' + eventType, funcionHandler );
			}
			else { //for all others
				objectTarget['on' + eventType] = funcionHandler;
			}
			
		},

		Detach : function( objectTarget, eventType, funcionHandler ) {
		
			if ( objectTarget.addEventListener ) { //for DOM-compliant browsers
				objectTarget.removeEventListener( eventType, funcionHandler, false );
			}
			else if ( objectTarget.attachEvent ) { //for IE
				objectTarget.detachEvent('on' + eventType, funcionHandler );
			}
			else { //for all others
				objectTarget['on' + eventType] = '';
			}
		
		},

		StopBubble : function ( event ) {

			if ( !browser.isIE ) {
				window.event.cancelBubble = true;
				window.event.returnValue = false;
			}
			else {
				event.preventDefault( );
				event.stopPropagation( );
			}

		},

		x : function ( event ) {

			if ( !browser.isGecko && !browser.isWebKit ) {
				var positionMouseX = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
			}
			else {
				var positionMouseX = event.clientX + window.scrollX;
			}

			return positionMouseX;

		},

		y : function ( event ) {

			if ( !browser.isGecko && !browser.isWebKit ) {
				var positionMouseY = window.event.clientY + document.documentElement.scrollLeft + document.body.scrollLeft;
			}
			else {
				var positionMouseY = event.clientY + window.scrollY;
			}

			return positionMouseY;

		}
		
	}

);

var Style = { };
Style.Extend (

	{
		RealDimenstions : function ( object ) {
	
			var objFloat = browser.isIE ? object.style.styleFloat : object.style.cssFloat;
			var width = 0;
			var height = 0;
			var cssText = null;
	
			if ( !objFloat || objFloat == 'none' ) {
				cssText = object.style.cssText;
				object.style.styleFloat = 'left';
				object.style.cssFloat = 'left';
			}
		
			width = object.offsetWidth;
			height = object.offsetHeight;
		
			if ( cssText ) {
				object.style.cssText = cssText;
			}
		
			return {
				width : width,
				height : height
			}
	
		},
	
		RealWidth : function ( object ) {
			
			return this.RealDimenstions( object ).width;
			
		},
		
		RealHeight : function ( object ) {
			
			return this.RealDimenstions( object ).height;
			
		},
		
		OffsetTop : function ( object ) {
			
			return object.offsetTop;
			
		},

		OffsetLeft : function ( object ) {
			
			return object.offsetLeft;
			
		}
	
	}

);

Array.prototype.Extend(

	{
		Each : function ( handler ) {
			
			for( var i = 0, count = this.length; i < count; i++ ) {
				
				handler( this[i], i );

			}

		},
		
		EachHash : function ( handler ) {
			
			for ( var item in this ) {
			
				if ( typeof ( this[item] ) == "string" &&  typeof ( item ) == "string" ) {
					handler( this[item], item );
				}
					
			}

		}

	}

);

Timer = { };
Timer.Extend(

	{

		timers : new Array(),
		
		Start : function ( func, seconds ) {
			
			this.timers[func] = setInterval( func, seconds * 1000 );
			
		},
		
		Stop : function ( func ) {

			clearInterval( this.timers[func] );
			this.timers[func] = null;

		}
		
	}

);

$ = function ( id ) {
	return document.getElementById( id );
}

$n = function ( name ) {
	return document.getElementsByName( name );
}

$t = function ( tagName, parentObject ) {
	return ( parentObject || document ).getElementsByTagName( tagName );
}

$c = function ( partClass, parentObject ) {
	var objects = $t( '*', parentObject );
	var ret = new Array( );
	
	var reg = new RegExp(partClass);
	
	for( var i = 0, count = objects.length; i < count; i++ ) {
		if (objects[i].className.match( reg ) ) {
			ret.push( objects[i] );
		}
	}
	
	return ( ret.length  == 1 ) ? ret[0] : ret;
}

function setElementOpacity(oElem, nOpacity)
{
	var p = getOpacityProperty();
	(setElementOpacity = p=="filter"?new Function('oElem', 'nOpacity', 'nOpacity *= 100;	var oAlpha = oElem.filters["DXImageTransform.Microsoft.alpha"] || oElem.filters.alpha;	if (oAlpha) oAlpha.opacity = nOpacity; else oElem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";'):p?new Function('oElem', 'nOpacity', 'oElem.style.'+p+' = nOpacity;'):new Function)(oElem, nOpacity);
}

function getOpacityProperty()
{
	var p;
	if (typeof document.body.style.opacity == 'string') p = 'opacity';
	else if (typeof document.body.style.MozOpacity == 'string') p =  'MozOpacity';
	else if (typeof document.body.style.KhtmlOpacity == 'string') p =  'KhtmlOpacity';
	else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) p =  'filter';
	
	return (getOpacityProperty = new Function("return '"+p+"';"))();
}

function fadeOpacity(sElemId, sRuleName, bBackward)
{
	var elem = document.getElementById(sElemId);
	if (!elem || !getOpacityProperty() || !fadeOpacity.aRules[sRuleName]) return;
	
	var rule = fadeOpacity.aRules[sRuleName];
	var nOpacity = rule.nStartOpacity;
	
	if (fadeOpacity.aProc[sElemId]) {clearInterval(fadeOpacity.aProc[sElemId].tId); nOpacity = fadeOpacity.aProc[sElemId].nOpacity;}
	if ((nOpacity==rule.nStartOpacity && bBackward) || (nOpacity==rule.nFinishOpacity && !bBackward)) return;

	fadeOpacity.aProc[sElemId] = {'nOpacity':nOpacity, 'tId':setInterval('fadeOpacity.run("'+sElemId+'")', fadeOpacity.aRules[sRuleName].nDalay), 'sRuleName':sRuleName, 'bBackward':Boolean(bBackward)};
}

fadeOpacity.addRule = function(sRuleName, nStartOpacity, nFinishOpacity, nDalay){fadeOpacity.aRules[sRuleName]={'nStartOpacity':nStartOpacity, 'nFinishOpacity':nFinishOpacity, 'nDalay':(nDalay || 30),'nDSign':(nFinishOpacity-nStartOpacity > 0?1:-1)};};

fadeOpacity.back = function(sElemId){fadeOpacity(sElemId,fadeOpacity.aProc[sElemId].sRuleName,true);};

fadeOpacity.run = function(sElemId)
{
	var proc = fadeOpacity.aProc[sElemId];
	var rule = fadeOpacity.aRules[proc.sRuleName];
	
	proc.nOpacity = Math.round(( proc.nOpacity + .1*rule.nDSign*(proc.bBackward?-1:1) )*10)/10;
	setElementOpacity(document.getElementById(sElemId), proc.nOpacity);
	
	if (proc.nOpacity==rule.nStartOpacity || proc.nOpacity==rule.nFinishOpacity) {
		clearInterval(fadeOpacity.aProc[sElemId].tId);
		if ( proc.sRuleName == 'out' ) fadeOpacity.callBack( document.getElementById(sElemId) );
	}
}
fadeOpacity.aProc = {};
fadeOpacity.aRules = {};


var NextTime;
var ChangeNextTime;
var nextElementArray = null;

function SetNextTime ( ) {

	try {
		
		NextTime = $('nowtime').innerHTML;
		ChangeNextTime = $('nexttime').innerHTML;
		
		nextElementArray = GetNextTime( );
		
	}
	catch ( e ) {
	}
	
	setTimeout( ChangeNews, (ChangeNextTime - NextTime) * 1000 );

	
}

function GetNextTime( ) {

	for ( var i = 0, count = today.length; i < count; i++ ) {
		
		if ( ( today[i]['time'] - ChangeNextTime ) > 0  && today[i]['time'] != ChangeNextTime ) {
			
			return today[i];
			
		}
		
	}

}

function ChangeNews( ) {
	
	$('now_title').innerHTML = $('next_title').innerHTML;
	
	if ( !nextElementArray ) {

		$('nextBlock').style.display = 'none';
		return;
		
	}
	
	$('next_title').innerHTML = nextElementArray['url'] ? ( '<a href="' + nextElementArray['url'] + '" title="' + nextElementArray['name'] + '. ' + nextElementArray['short_name']  + '">' + nextElementArray['name'] + '</a>' ) : nextElementArray['name'];
	
	$('nowtime').innerHTML = $('nexttime').innerHTML;
	$('nexttime').innerHTML = nextElementArray['time'];
	
	SetNextTime( );
	
}