/**
 * RF namespace
 * @version 1.0
 */

/**
 * RF global namespace
 * @constructor
 */
var RF = window.RF || {};

/**
 * Returns the namespace specified and creates it if it doesn't exist
 *
 * RF.namespace("property.package");
 * RF.namespace("RF.property.package");
 *
 * Either of the above would create RF.property, then
 * RF.property.package
 *
 * @param  {String} sNameSpace String representation of the desired
 *                             namespace
 * @return {Object}            A reference to the namespace object
 */
RF.namespace = function( sNameSpace ) {

    if (!sNameSpace || !sNameSpace.length) {
        return null;
    }

    var levels = sNameSpace.split(".");

    var currentNS = RF;

    // RF is implied, so it is ignored if it is included
    for (var i=(levels[0] == "RF") ? 1 : 0; i<levels.length; ++i) {
        currentNS[levels[i]] = currentNS[levels[i]] || {};
        currentNS = currentNS[levels[i]];
    }

    return currentNS;
};

/**
 * Reference to the RF Logger
 * @see #enableLogger
 */
//var RF.LOGGER = null;

// Declare Util namespace
RF.namespace("Util");

/**
 * Add script tag to the document. Usage example:
 * <blockquote>
 *  RF.Util.addScript(RF.Util.getBaseURL(), "util/Logger.js");
 * </blockquote>
 * @see #getBaseURL
 * @param  {String} sBaseURL  base URL
 * @param  {String} sURL      URL to the script
 * @param  {String} sType     script type (default is  text/javascript)
 * @return {Void}
 */
RF.Util.addScript = function(sBaseURL, sURL, sType) {
  if(!sType) sType = "text/javascript";
  document.write("<script src=\""+sBaseURL+"/"+sURL+"\" type=\""+sType+"\"></script>");
};

/**
 * Finds base URL to RF scripts
 *
 * @see #addScript
 * @return {String} base URL to the RF scripts
 */
RF.Util.getBaseURL = function() {
	// return cached, if exists
	if(RF.Util.baseURL){
		return RF.Util.baseURL;
	}
	// discover base and cache	
	var scripts = document.getElementsByTagName("head")[0].getElementsByTagName("script");
	for(var i = 0; i < scripts.length; i++){
	  var src = scripts[i].getAttribute("src");
      if(src != null && src.indexOf("/RF.js") != -1){
		  RF.Util.baseURL = src.substring(0, src.indexOf("/RF.js"));
	  }
	}

	if (typeof(RF.Util.baseURL)  == "undefined") {
	    RF.Util.baseURL = "http://map.blizko.ru/map_data/v3/javascripts/";
	}
	//return discovered
	return RF.Util.baseURL;
};

/**
 * Enables RF Logger. Loads Logger script if needed and registers
 * logger instance with RF.LOGGER. Usage example:
 *
 * <blockquote>
 *  //enable rokfor logger
 *  RF.Util.enableLogger(RF.Util.Logger.ERROR);
 *  //log message
 *	RF.LOGGER.error("Oh My Ass! Whatta fuck?!");
 * </blockquote>
 *
 * @see RF.Util.Logger
 * @see RF.LOGGER
 * @param  {Number} level  Logger level, if none provided INFO will be used
 * @return {Void}
 */
RF.Util.enableLogger = function(level) {
	if(typeof(RF.Util.Logger) == "undefined"){
      RF.Util.addScript(RF.Util.getBaseURL(), "util/Logger.js");
	  Event.observe(window, 'load',
					function(){
	                     RF.LOGGER = new RF.Util.Logger();if(level){ RF.LOGGER.setLevel(level); }
					}
					, false);
	  return;
	}
	RF.LOGGER = new RF.Util.Logger();
	if(level){
	 RF.LOGGER.setLevel(level);
	}
};

// Load Prototype lib if none was loaded before
if("undefined" == typeof(Prototype)){
  RF.Util.addScript(RF.Util.getBaseURL(), "prototype/prototype.js");
};

var seed = Math.round(Math.random()*65535);
var haveFlash = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;

if( haveFlash ){
haveFlash = (parseInt(haveFlash.description.substring(haveFlash.description.indexOf(".")-1))>=7);
} else if ( navigator.userAgent && navigator.userAgent.indexOf( "MSIE" ) >=0
  && ( parseFloat( navigator.appVersion )  >=4)
  && ( navigator.userAgent.indexOf( "Windows 95" ) >=0
|| navigator.userAgent.indexOf( "Windows NT" ) >=0
|| navigator.userAgent.indexOf( "Windows 98" ) >=0 )
){
document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
document.write(' on error resume next \n');
document.write(' haveFlash = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.7")))\n');
document.write('</SCR' + 'IPT\> \n');
}
