var irlnamespace = function(ns) {
	var names = ns.split('.');
	for (var i=0, base = window; i < names.length; i++) {
		var n = names[i];

		// To avoid overwriting existing objects.
		base[n] = base[n] || { };

		base = base[n];
	}
	return base;
};

irlnamespace('IRL').Galaxy = function() {
	var id = 'irlconnect_galaxy_iframe';
	var ifwidth = null;
	var ifheight = null;
	var jsFile = 'js/jquery-1.2.6.pack.js';
	
	var getBrowser =  function(){
		var OsObject = "";
		if(navigator.userAgent.indexOf("MSIE")>0) {
			return "MSIE";
		}
		if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
			return "Firefox";
		}
		if(isSafari=navigator.userAgent.indexOf("Safari")>0) {
			return "Safari";
		} 
		if(isCamino=navigator.userAgent.indexOf("Camino")>0){
			return "Camino";
		}
		if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){
			return "Gecko";
		}
	}
	
	/*--------------------------------------------------------------------------
								Get Window Height
	--------------------------------------------------------------------------*/
	var getWindowHeight = function() {
		if (window.self && window.self.innerHeight) {
			return window.self.innerHeight;
		}
		if (document.documentElement &&	document.documentElement.clientHeight) {
			return document.documentElement.clientHeight;
		}
		if (document.body && document.body.clientHeight) {
			return document.body.clientHeight;
		}
		return 0;
	};
	/*--------------------------------------------------------------------------
								Get Window Width
	--------------------------------------------------------------------------*/
	var getWindowWidth = function() {
		if (window.self && window.self.innerWidth) {
			return window.self.innerWidth;
		}
		if (document.documentElement &&	document.documentElement.clientWidth) {
			return document.documentElement.clientWidth;
		}
		if (document.body && document.body.clientWidth) {
			return document.body.clientWidth;
		}
		return 0;
	};

	var resizeWrapper = function (){		
		var windowWidth = getWindowWidth();
		var windowHeight = getWindowHeight();
		document.getElementById('irlconnect_galaxy_iframe').setAttribute('width', windowWidth);
		document.getElementById('irlconnect_galaxy_iframe').setAttribute('height', windowHeight);
		
	};

	var isFullScreen = function(){		
		if(irlconnect_if_width == null || irlconnect_if_width == undefined){
			return true;
		}
		if(irlconnect_if_height == null || irlconnect_if_height == undefined){
			return true;
		}
		ifwidth = parseInt(irlconnect_if_width);
		ifheight = parseInt(irlconnect_if_height);
		if(ifwidth > 0 && ifheight > 0 && ifwidth != NaN && ifheight != NaN){
			return false;
		}
		return true;
	};

	var init = function() {
		try{
			irlconnect_uid = irlconnect_uid;
		}catch (e){
			irlconnect_uid = 'www';
		}

		try{
			test_environment = test_environment == true ? true : false;
		}catch (e){
			test_environment = false;
		}

		try{
			irlconnect_if_width = parseInt(irlconnect_if_width);
		}catch (e){
			irlconnect_if_width = null;
		}

		try{
			irlconnect_if_height = parseInt(irlconnect_if_height);
		}catch (e){
			irlconnect_if_height = null;
		}

		try{
			irlconnect_if_border = parseInt(irlconnect_if_border);
		}catch (e){
			irlconnect_if_border = 0;
		}

		try{
			irlconnect_if_border_style = irlconnect_if_border_style;
		}catch (e){
			irlconnect_if_border_style = 'solid';
		}

		try{
			irlconnect_if_border_color = irlconnect_if_border_color;
		}catch (e){
			irlconnect_if_border_color = '';
		}

		try{
			irlconnect_if_default_location = irlconnect_if_default_location;
		}catch (e){
			irlconnect_if_default_location = null;
		}

		try{
			irlconnect_if_left_pane_hide = irlconnect_if_left_pane_hide == true ? true : false;
		}catch (e){
			irlconnect_if_left_pane_hide = false;
		}

		try{
			irlconnect_if_data_url = irlconnect_if_data_url;
		}catch (e){
			irlconnect_if_data_url = '';
		}

		try{
			irlconnect_if_external_data_layer = irlconnect_if_external_data_layer;
		}catch (e){
			irlconnect_if_external_data_layer = '';
		}

	};


	var createIframe = function() {
		var isFullScreenMode = isFullScreen();
		if(isFullScreenMode){
			document.write('<style>html, body{margin:0;padding:0px;height:100%;width:100%;overflow:hidden;}</style>');
			document.body.setAttribute('border', '0');
			document.body.setAttribute('scroll', 'no');
			document.body.setAttribute('style', 'height:100%;width:100%;margin:0;padding:0px;border:0px;outline-width:0px;overflow:hidden;outline-style:none;');
			var windowWidth = getWindowWidth();
			var windowHeight = getWindowHeight();
		}else{
			var windowWidth = ifwidth;
			var windowHeight = ifheight;
		}
		
		var style = '';
		if(irlconnect_if_border > 0 && irlconnect_if_border != NaN){
			if(irlconnect_if_border_style == null || irlconnect_if_border_style == false || irlconnect_if_border_style == undefined) {
				irlconnect_if_border_style = 'solid';
			}
			style = 'style="border:' + irlconnect_if_border + 'px ' + irlconnect_if_border_style + ' ' + irlconnect_if_border_color + ';"';
		}

		var irlconnect_galaxy_src = 'http://';
		if(irlconnect_uid){
			irlconnect_galaxy_src = irlconnect_galaxy_src + irlconnect_uid + '.';
		}
		if(test_environment){
			irlconnect_galaxy_src = irlconnect_galaxy_src + 'test.';
		}
		irlconnect_galaxy_src = irlconnect_galaxy_src + 'irlconnect.com/?';

		if(irlconnect_if_default_location != null && irlconnect_if_default_location != ''){
			irlconnect_galaxy_src = irlconnect_galaxy_src + '&defaultLocation=' + encodeURI(irlconnect_if_default_location);
		}

		if(irlconnect_if_left_pane_hide == true){
			irlconnect_galaxy_src = irlconnect_galaxy_src + '&leftPaneHide=true';
		}
		if(irlconnect_if_data_url != '' && irlconnect_if_data_url != null && irlconnect_if_data_url.length){
			irlconnect_galaxy_src = irlconnect_galaxy_src + '&dataurl=' + encodeURIComponent(irlconnect_if_data_url);
		}

		if(irlconnect_if_external_data_layer != '' && irlconnect_if_external_data_layer != null && irlconnect_if_external_data_layer.length){
			irlconnect_galaxy_src = irlconnect_galaxy_src + '&edLayer=' + encodeURIComponent(irlconnect_if_external_data_layer);
		}


		
		//irlconnect_galaxy_src = 'http://irlgalaxy.com/'; //this is only for test

		var irlconnect_galaxy_iframe = '<iframe ';
		irlconnect_galaxy_iframe += 'width="' + windowWidth + 'px" ';
		irlconnect_galaxy_iframe += 'height="' + windowHeight + 'px" ';
		irlconnect_galaxy_iframe += 'id="' + id + '" ';
		irlconnect_galaxy_iframe += 'src="' + irlconnect_galaxy_src;
		irlconnect_galaxy_iframe += '" scrolling="no" frameborder="0" border="0" marginheight="0" marginwidth="0" ' + style + '></iframe>';
		document.write(irlconnect_galaxy_iframe);
		//chengDocmentTitle();
		if(isFullScreenMode){
			window.onresize = function(){
				IRL.Galaxy.resizeWrapper();
			}
		}
	};

	var addJsfile = function(){
		var jsFileSrc = 'http://';
		if(test_environment){
			jsFileSrc = jsFileSrc + 'test.' ;
		}
		jsFileSrc = jsFileSrc + 'irlconnect.com/' + jsFile;
		document.write('<script type="text/javascript" src="' + jsFileSrc + '"></script>');
	};

	var chengDocmentTitle = function(num, title){
		if (title === false || title == null || title == '' || title == undefined){
			try{
				if($ && $.getJSON){
					var getTitleUrl = 'http://';
					if(test_environment){
						getTitleUrl = getTitleUrl + 'test.' ;
					}
					getTitleUrl = getTitleUrl + 'irlconnect.com/getGalaxyTitle.json';
					$.getJSON(getTitleUrl + '?type=json&u=' + irlconnect_uid + '&callback=?',
						function(data) {
							if (data.name != null || data.name != undefined){
								IRL.Galaxy.chengDocmentTitle(0, data.name + ' ');
							}
					});
				}else{
					setTimeout(IRL.Galaxy.chengDocmentTitle, 4000);
				}
			}catch(e){
				setTimeout(IRL.Galaxy.chengDocmentTitle, 4000);
			}
			title = irlconnect_uid + ' Galaxy at Irlconnect.com';
		}else{
			title = $.trim(title);
		}
		if(title == ''){
			title = irlconnect_uid + ' Galaxy at IrlGalaxy.com';
		}

		document.title = title;
	};

	return {
		init:init,
		createIframe:createIframe,
		addJsfile:addJsfile,
		resizeWrapper:resizeWrapper,
		chengDocmentTitle:chengDocmentTitle
	}
}();

IRL.Galaxy.init();
IRL.Galaxy.addJsfile();
IRL.Galaxy.createIframe();
IRL.Galaxy.chengDocmentTitle(0, null);