/* ------------------------------------- PageStatus ------------------------------------------- */
/* Class PageStatus saves conditions of loaded page
** includes ActionData - storage of page onload methods, example - slider
** 
*/

PageStatus = (function () {	
	var _get = {}, /* get, anchor, cookies parameters*/
		//langs = new RegExp( /\/(ru|en|es|ar|fr|id|cn|tr)\//i ).exec( window.location.href ),
		_lang,
		siteNames = {
			ar : /-ar\.com/,
			fa : /-fa\.com/,
			id : /-id\.com/,
			ir : /-ir\.com/,
			ru : /\.ru/,
			cn : /-markets\.cn/,
			en : /-forex\.com/,
			es : /\.mx/,
			fr : /-fr\.com/,
			tr : /-tr\.com/,

			jp : /\.jp/,
			de : /\.de/
		};
	
	/* parseLang - parses url to get Language 
	** @url - string or location.href
	*/
	function parseLang( url ) {
		var url = url || document.location.href,
		lang = url.replace(/https?:\/\/([^\/]+)\/([^\/]+).*/, '$2');

		if( lang.length != 2 ) {
			for( var c in siteNames ) {
				if( siteNames[c].test( url ) ) {
					lang = c;
					break;
				}
			}
		}

        if( lang.length != 2 )
            lang = 'ru';
        
		return lang;
	}
	_lang = parseLang();

	/* parseGetParameters - parses url 
	** @url - string or location.href
	** @_get - local or PageStatus array of get parameters
	*/
	function parseGetParameters( url, get_arr ) {
		var split_arr = [ ( url ? undefined : document.cookie ) ],
			url = url || document.location.href,
			str_search_number = url.search( /\?/ ),
			str_search = ( str_search_number != -1 ? url.substring( str_search_number + 1 ) : url );

		str_search_number = str_search.indexOf('#');
		if( str_search_number != -1 )
		    str_search = str_search.substring( 0, str_search_number );

		if( !get_arr )
			get_arr = _get;
		split_arr.unshift( str_search );

		// Add anchor info to get_arr array
		if( document.location.hash )
			get_arr[ 'anchor' ] = document.location.hash.substring(1);

		// get cookies and get parameters, add them to get_arr array, in [get,cookie] order
		for ( var i in split_arr )
		{
			if( split_arr[i] ) {
				var pairs = split_arr[i].split( /[&;]/ );
				for( var i = 0; i < pairs.length; i++ ) {
					var pair = pairs[ i ].split( '=' );
					if(
						pair &&
						pair instanceof Array
					) {
						get_arr[ pair[ 0 ] ] = pair[ 1 ];
					}
				}
			}
		}
	
		return get_arr;
	}
	parseGetParameters();

	return {
		GetParams : function( url, arr ) {
			if( url && arr && typeof arr == 'object' )
				return parseGetParameters( url, arr );
			return _get;
		},
		Lang : function( url ) { 
			if( url )
				return parseLang( url );
			return _lang;
		},
		ExecuteActions : function() {
			// Execute page actions - tab slider 
			for( i in _get ) {
				if( PageStatus.ActionData.ExistAction( i ) )
					PageStatus.ActionData.ExecuteAction( i, _get[i] );
			}	
		}
	}
	
})();

PageStatus.PreloadImg = function( src ) { 
	if( document.images && src ) {
		if( src instanceof Array ) {
			var preImages = new Array();
			for( var i = 0; i < src.length; i++ ) {
				preImages[i] = new Image();
				preImages[i].src = src[i];
			}
		}
		else {
			preImages = new Image();
			img.src = src;
		}
		return true;
	}
	return false;
}

/*	 ActionData
**	 storage for page onload actions - names and functions	 
*/
PageStatus.ActionData = (function() {
	var _actions = {}; 
	
	return {
		AddAction : function( name, func ) {
			if( name && func ) {
				_actions[name] = func;
				return true;
			}
			return false;
		},
		ExistAction : function( name ) {
			return _actions[name];
		},
		ExecuteAction : function( name, args ) {
			if( _actions[name] && _actions[name] instanceof Function ) {
				_actions[name]( args );
				return true;
			}
			return false;
		}
	}
})();

/*PageStatus.ActionData.AddAction( 'tab', function( className ) { $( '.tabs>h2.'+className ).click(); });*/
$(function(){
	window.setTimeout( function() {
	    PageStatus.ExecuteActions();
    }, 200 )
});
