function findElement(elementID) {
  var elem;
  if(document.getElementById) {// DOM
    elem = document.getElementById(elementID);
  } else if(document.all) { // old MSIE
      elem = document.all[elementID];
  } else if(document.layers) { // NN4
    elem = document.layers[elementID];
  } else {
  	elem = null;
  }
  return elem;
}
function findObj(elementID) {
  return findElement(elementID);
}
function showElement(elementID) {
	if(findElement(elementID)!=null) {findElement(elementID).style.display='block';}
}
function hideElement(elementID) {
	if(findElement(elementID)!=null) {findElement(elementID).style.display='none';}
}


function typePhoneNum(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode; 
	if (charCode > 32 && (charCode < 46 || charCode > 57))	{return false;}
	else {return true;}
}
function typePositiveInteger(evt){
	var charCode = (evt.which) ? evt.which : event.keyCode; 
	if (charCode!=8 && charCode!=13 && charCode!=127 && (charCode < 48 || charCode > 57))	{return false;}
	else {return true;}
}



function generateACode(nrchars) {
	var possible_characters = "abcdefghijklmnopqrstuvwxyz1234567890";
		
	var maxValue = 35;
	var string = "";
	for (i=0; i<nrchars; i++) {
		retValue = Math.round(Math.random()*(maxValue-1));
		string = String.concat(string, possible_characters.substr(retValue,1));
	}
	return string;		
}

function checkFileType(form,filefield,allowed) {
  var file = document.forms[form][filefield].value;
  var fileparts = file.split(".");
  var ext = fileparts[fileparts.length-1];
  ext = ext.toLowerCase();
  var allowed_ext = allowed.split("|");
  Array.prototype.hasElement = function(s){ 
    return new RegExp('(^|\,)'+s+'(\,|$)','gi').test(this);
  } 
  if(!allowed_ext.hasElement(ext)) {
  	document.forms[form][filefield].value='';
    alert('Nu sunt permise decat fisierele tip '+ allowed_ext.join(", ") +'.');
    return false;
  } else return true; 
}



function replaceWideWithBasicASCII(str) { 
		str=str.replace(/／/gi, "/");
		str=str.replace(/﹡/gi, "*");
		str=str.replace(/％/gi, "%");
		str=str.replace(/＆/gi, "&");
		str=str.replace(/＋/gi, "+");
		str=str.replace(/＼/gi, "\\");
		str=str.replace(/＄/gi, "$");
		str=str.replace(/＜/gi, "<");
		str=str.replace(/＞/gi, ">");
		str=str.replace(/＝/gi, "=");
		str=str.replace(/？/gi, "?");
		str=str.replace(/＃/gi, "#");
		str=str.replace(/？/gi, "?");	
		str=str.replace(/＂/gi, "”");	
		str=str.replace(/＇/gi, "΄");
	return str;
}



// sterge elementele DOM dintr-un obiect DOM
function lr_empty_var(id) {
    o = document.getElementById(id);
    if (o!=null && o!='undefined') {
        if (o.childNodes.length > 0) {
            while(o.childNodes.length>0)
                o.removeChild(o.childNodes[o.childNodes.length-1]);
        }
    }
}
function lr_trim(text, type, expr) {
    pattern = "";
    token = '\\s';
    if (expr!="") token = expr;
    l = expr.length;
    if (l > 0) {
        escaped = '[;/?:@&=+$,](){}.-';
        tmp = token.split('');
        for(i=0;i<tmp.length;i++)
            if (escaped.indexOf(tmp[i]) > -1)
                tmp[i] = '\\'+tmp[i];
        token = tmp.join('');
        if (l > 1) token = '(' + token + ')';
    }

    switch(type) {
        case "r":
            pattern = token + '+$';
        break;
        case "l":
            pattern = '^' + token + '+';
        break;
        default:
            pattern = '^' + token + '+|' + token + '+$';
        break;
    }
    regexp = new RegExp(pattern, "gi");
    return text.replace(regexp, '');
}



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: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			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.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();



// seteaza pentru selectorul specificat, elementul cu valoarea specificata
function lr_set_selected(uid, v) {
    o = document.getElementById(uid);
    for(var i=0;i<o.options.length;i++) if (o.options[i].value==v) o.options[i].selected = true;
}

// seteaza pentru colectia de radiobutoane specificata pe cel selectat
function radio_set_selected(formName, radioName, selValue) {
  		var collection;
  		collection = document.forms[formName].elements[radioName];
  		for (i=0;i<collection.length;i++) {
    		if (collection[i].value == selValue) return(collection[i].checked = "true");
  		}
}



function SetAllCheckBoxes(FormName, FieldName, CheckValue)
{
	if(!document.forms[FormName])
		return;
	var objCheckBoxes = document.forms[FormName].elements[FieldName];
	if(!objCheckBoxes)
		return;
	var countCheckBoxes = objCheckBoxes.length;
	if(!countCheckBoxes)
		objCheckBoxes.checked = CheckValue;
	else
		// set the check value for all check boxes
		for(var i = 0; i < countCheckBoxes; i++)
			objCheckBoxes[i].checked = CheckValue;
}


function checkUncheckAll(theElement) {
     var theForm = theElement.form, z = 0;
	 for(z=0; z<theForm.length;z++){
      if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall'){
	  theForm[z].checked = theElement.checked;
	  }
     }
}