//<![CDATA[
/************************
*   Array Methodes
************************/

Array.prototype.copy = function() {alert("Array.prototype.copy --- ");
    var arr = [];
    for (var i = 0; i < this.length; i++) {
        arr[i] = this[i];
    }
    return arr
}

Array.prototype.map = function(func) {alert("Array.prototype.map --- func");
    for (var i = 0; i < this.length; i++) {
        this[i] = func(this[i]);
    }
    return this
}

Array.prototype.each = function(func) {alert("Array.prototype.each --- func");
    for (var i = 0; i < this.length; i++) {
        func(this[i]);
    }
}

/*Array.prototype.concat = function(arr) {alert("Array.prototype.concat --- arr");
    for (var i = 0; i < arr.length; i++) {
        this.push(arr[i]);
    }
}*/


//checks if T contains elem
function in_T(T,elem)
	{	
		var res = false;
		for(var ct = 0 ; ct < T.length ; ct++)
		{
			if(T[ct] == elem){
				res = true;
				break;
			}
		}
		return res;
	}
	
function countT(T)
	{
		var c = 0,str="";
		for(var u in T){
			c++;
			str += u+",";
		}
		return [str,c];
			
	}	

//returns thre first name of an associatives array
function getFirstName(T)
	{
		for(var n in T)
			return n;
	}
/************************
*   Object Methodes
************************/
function AlertObjProperties(o) 
	{
	   for (var prop in o){
	      alert( prop + " is " + o[prop]);
	   }
	}
function ObjToString(o) 
	{
	   var ret = "Object " + o.name + " is "+o.length+"[\n"
	   var sema = 0
	   for (var prop in o){
	      ret += " " + prop + " is " + o[prop] + ";"
		/* if(sema == 6){
	      	ret +="<br/>";
	      	sema = 0;
	      }*/
	      sema++;
	   }
	   //document.write(ret);
	   return ret + "]"
	}
function ObjToStringClean(o) 
	{
	   var ret = "Object " + o.name + " is "+o.length+"[\n"
	   var sema = 0
	   for (var prop in o){
   		  if(prop!="copy" && prop!="each")
      		ret += " " + prop + " is " + o[prop] + ";"
	      sema++;
	   }
	   //document.write(ret);
	   return ret + "]"
	}

function copy_obj(o) 
	{
          var c = new Object();
          for (var e in o) {
              if (typeof o[e] =='array' && o[e].constructor == Array) {
                 c[e] = c[e].copy();
              }
              else {
                 c[e] = o[e]; 
              }
          }
          return c;
    }	//]]>