function array_merge(arr) {
	var merged = arr;
	for (var i = 1; i < arguments.length; i++) {
		merged = merged.concat(arguments[i]);
	}
	return merged;
}

function getInputs(formulari){
   return array_merge(
      formulari.getElementsByTagName("INPUT"),
			formulari.getElementsByTagName("TEXTAREA"),
			formulari.getElementsByTagName("SELECT")
   );
}

    function Utf8Encode(string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    };

function getObject( obj ) {

  if ( document.getElementById ) {
    obj = document.getElementById( obj );

  } else if ( document.all ) {
    obj = document.all.item( obj );

  } else {
    obj = null;
  }

  return obj;
  }

 //crea un nou ajax
 function nuevoAjax(){
	var xmlhttp=false;
 	try {
 		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 	} catch (e) {
 		try {
 			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 		} catch (E) {
 			xmlhttp = false;
 		}
  	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
 		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function getOptionText(nom){
  var select=document.getElementById(nom);
  switch(select.tagName){
    case "INPUT":
      return select.value;
      break;
    case "SELECT":
      return select.options[select.selectedIndex].text;
      break;
  }  
}

function getOptionValue(nom){
  var select=document.getElementById(nom);
  switch(select.tagName){
    case "INPUT":
      return select.value;
      break;
    case "SELECT":
      return select.options[select.selectedIndex].value;
      break;
  }  
}


function creaElement(nom,tag){
  var temp=document.createElement(tag);
  
  if(nom!=""){temp.id=nom;}
  
  var str_tag=new String(tag);
  switch(str_tag.toLowerCase()){
    case "input":
      temp.name=temp.id;
      break;
    case "form":
      temp.method="post";
      break;
  }
  return temp;
}

function getChecked(nom_formulari,radio_nom){
    var radios = document.forms[nom_formulari][radio_nom];
    var i=0;
    var trobat=false;
    while(!trobat && i<radios.length){
      trobat=radios[i].checked;
      if(!trobat){i++;}
    }
    if (trobat){return radios[i];}
    else {return false;}
}

//comprova que un checkbox estigui CHECKED
function isChecked(nom){
  var temp=document.getElementById(nom);
  if(temp){
    return temp.checked;
  }else{return false;}
}

//----------------- COLLECTION TO ARRAY
function collectionToArray(col) {
	a = new Array();
	for (i = 0; i < col.length; i++)
		a[a.length] = col[i];
	return a;
}


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();

