var urlbase = '/';

function initialization()
{
// 	if(!redirect('gablab.net'))
// 	{
		if(typeof localinit == 'function')
		{
			localinit();
		}
// 	}
}

// Redirect to the main web address if this page was
// accessed using another domain name, unless the page
// is accessed locally.
function redirect(mainaddress)
{
	var array = window.location.href.split("/");
	
	// If accessed from the net but not from mainaddress, redirect to mainaddress
	if((array[2].endsWith('.com') ||
		array[2].endsWith('.org') ||
		array[2].endsWith('.net')) &&
		array[2] != mainaddress)
		{
			array[2] = mainaddress;
			window.location = array.join("/");
			return true;
		}
		// if accessed locally
		else if(array[2] == 'localhost')
		{
			urlbase = '/gabriellemondelabrecque.com/';
		}
		
		return false;
}

function isImageOk(img) {
	// During the onload event, IE correctly identifies any images
	// that weren't downloaded as not complete. Others should too.
	// Gecko-based browsers act like NS4 in that they report this
	// incorrectly: they always return true.
	if (!img.complete) {
		return false;
	}
	
	// However, they do have two very useful properties: naturalWidth
	// and naturalHeight. These give the true size of the image. If
	// it failed to load, either of these should be zero.
	if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
		return false;
	}
	
	// No other way of checking: assume it's ok.
	return true;
}

function insertAtCaret(obj, text) {
	if(document.selection) {
		obj.focus();
		var orig = obj.value.replace(/\r\n/g, "\n");
		var range = document.selection.createRange();
		
		if(range.parentElement() != obj) {
			return false;
		}
		
		range.text = text;
		
		var actual = tmp = obj.value.replace(/\r\n/g, "\n");
		
		for(var diff = 0; diff < orig.length; diff++) {
			if(orig.charAt(diff) != actual.charAt(diff)) break;
		}
		
		for(var index = 0, start = 0; 
		tmp.match(text) 
		&& (tmp = tmp.replace(text, "")) 
		&& index <= diff; 
		index = start + text.length
		) {
			start = actual.indexOf(text, index);
		}
	} else if(obj.selectionStart >= 0) {
		var start = obj.selectionStart;
		var end   = obj.selectionEnd;
		
		obj.value = obj.value.substr(0, start) 
		+ text 
		+ obj.value.substr(end, obj.value.length);
	}
	
	if(start != null) {
		setCaretTo(obj, start + text.length);
	} else {
		obj.value += text;
	}
}

function setCaretTo(obj, pos) {
	if(obj.createTextRange) {
		var range = obj.createTextRange();
		range.move('character', pos);
		range.select();
	} else if(obj.selectionStart) {
		obj.focus();
		obj.setSelectionRange(pos, pos);
	}
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
		|| this.searchVersion(navigator.appVersion)
		|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
			searchString: function (data) {
				for (var i=0;i<data.length;i++)	{
					var dataString = data[i].string;
					var dataProp = data[i].prop;
					this.versionSearchString = data[i].versionSearch || data[i].identity;
					if (dataString) {
						if (dataString.indexOf(data[i].subString) != -1)
							return data[i].identity;
					}
					else if (dataProp)
						return data[i].identity;
				}
			},
			searchVersion: function (dataString) {
				var index = dataString.indexOf(this.versionSearchString);
				if (index == -1) return;
				return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
			},
			dataBrowser: [
			{
				string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
			},
			{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
			},
			{
				string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
			},
			{
				prop: window.opera,
			identity: "Opera"
			},
			{
				string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
			},
			{
				string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
			},
			{
				string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
			},
			{
				string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
			},
			{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
			},
			{
				string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
			},
			{
				string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
			},
			{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
						  subString: "Mozilla",
						  identity: "Netscape",
						  versionSearch: "Mozilla"
			}
			],
						  dataOS : [
						  {
							  string: navigator.platform,
						  subString: "Win",
						  identity: "Windows"
						  },
						  {
							  string: navigator.platform,
						  subString: "Mac",
						  identity: "Mac"
						  },
						  {
							  string: navigator.userAgent,
						  subString: "iPhone",
						  identity: "iPhone/iPod"
						  },
						  {
							  string: navigator.platform,
						  subString: "Linux",
						  identity: "Linux"
						  }
						  ]
						  
};

BrowserDetect.init();

