
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function translatable() {
	var toLang = readCookie("translatable");
	if(toLang && toLang!="sv") {
		var allTags = getElementsArrayByID("translatable");
		var i=0, e;
		while(e=allTags[i++]){
			translate(e, "sv",toLang);
		}
	}
}

function getElementsArrayByID(id) {
	var outTag = new Array();
	var allTags=document.getElementsByTagName('*'), i=0, e;
	while(e=allTags[i++]){
		if(e.id==id){ outTag.push(e); }
	}
	return outTag;
}

function translate(tag, langFrom, langTo) {
	var textBreak = getTextWithBreak(tag.innerHTML, 500);
	var outText="";
	tag.innerHTML="";
	if(tag.innerHTML.length>40) {
		if(langTo=="en") {
			tag.innerHTML = "Loading...";
		} else {
			tag.innerHTML = ". . .";
		}
	}

	var collect = 0;
	for(i=0; i<textBreak.length;i++) {
		google.language.translate(i+" "+textBreak[i],langFrom, langTo, function (result) {
			if (!result.error) { 
				var text = result.translation;
				text = text.ltrim();
				var lengtofindex = text.indexOf(" ");
					if(lengtofindex!=-1) {
					var index = text.substring(0,lengtofindex); 
					textBreak[index] = text.substring(lengtofindex+1);
					collect++;
						if(collect==textBreak.length) {
							tag.innerHTML=textBreak.join(" "); 
						}
					}
			}
		});
	}
}

function getTextWithBreak(text, maxlimit) {
	var outTag = new Array();
	if(text.length<maxlimit) {
		
		outTag.push(text);
	} else if(text.length>0) {

		while(text.length>maxlimit) {
			var cutHere = maxlimit;
			var tempText = text.substring(0,maxlimit);
			var keyArray = new Array(".","?","!");
			var tempcut=0;
			for(x in keyArray) {
				var index = tempText.lastIndexOf(keyArray[x]);
				if(tempcut<index) {
					tempcut = index;
				}
			}
			if(tempcut==0) {
				tempcut = maxlimit;
			}
			cutHere = tempcut+1;
			if(cutHere>0) {
				var selectText = text.substring(0,cutHere);
				var tagStart = selectText.lastIndexOf("<");
				var tagEnd = selectText.lastIndexOf(">");
				if(tagStart>tagEnd) {
					selectText = selectText.substring(0,tagEnd+1);
				}
				outTag.push(selectText);
				text = text.substring(selectText.length);
			}
			
		}
		outTag.push(text)
	}
	
	return outTag;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

