Util = {};

//////////////////////////////////////////////////////////////////////////
/**
* @desc creates element
*/
//////////////////////////////////////////////////////////////////////////

Util.createElement = function(e, obj){
	try{
	  var elem = document.createElement(e);
	  for(prop in obj){
	   elem[prop] = obj[prop];
	  }
	}catch(e){
	   alert('error code: 001');	
    }
	
	return elem;
};

///////////////////////////////////////////////////////////////////////////
/**
* @desc append elemnt to DOM Tree
*/
///////////////////////////////////////////////////////////////////////////
Util.appendChild = function(){
   if(this.appendChild.arguments.length > 1){
	  var a = this.appendChild.arguments[0];
	  var eLen = this.appendChild.arguments.length;
	  for(var i = 1; i < eLen; i++){
		 if(arguments[i]){
		    a.appendChild(this.appendChild.arguments[i]);	 
		 }
	  }
	  return a;
   }
   else{
      return null;
   }
};

///////////////////////////////////////////////////////////////////////////
/**
* @desc removing elements
*/
///////////////////////////////////////////////////////////////////////////
Util.removeChildren = function(node){
   if(node == null){
       return ;
   }	
   while(node.hasChildNodes()){
      node.removeChild(node.firstChild);
   }
};
///////////////////////////////////////////////////////////////////////////
/**
*  @desc add listener
*/
///////////////////////////////////////////////////////////////////////////

Util.addListener = function(obj, eventName, listener){
   if(obj.attachEvent){
	  obj.attachEvent("on"+eventName, listener);   
   }
   else if(obj.addEventListener){
      obj.addEventListener(eventName, listener, false);
   }
   else{return false;}
   return true;
};
///////////////////////////////////////////////////////////////////////////
/**
* @desc remove event listener
*/
///////////////////////////////////////////////////////////////////////////
Util.removeListener = function(obj, eventName, listener){
   if(obj.detachEvent){
	  obj.detachEvent("on"+eventName, listener);   
   }
   else if(obj.removeEventListener){
      obj.removeEventListener(eventName,listener,false);
   }
   else{return false;}
   return true;
};
//////////////////////////////////////////////////////////////////////////
/**
* @desc changing the opacity
*/
///////////////////////////////////////////////////////////////////////////
Util.changeOpac = function(opac,id){
   var obj = this.get(id);
   obj.style.opacity      = (opac/100);
   obj.style.MozOpacity   = (opac/100);
   obj.style.KhtmlOpacity = (opac/100);
   obj.style.filter       = "alpha(opacity="+opacity+")"; 
};
///////////////////////////////////////////////////////////////////////////
/**
* @desc Includes JS files to application
*/
//////////////////////////////////////////////////////////////////////////
Util.includeJS = function(filepath){
 	var eLen = filepath.length;
	for(var i=0;i<eLen;i++){
	   document.write('<script type="text/javascript" src="'+ filepath[i]+'"></script>');	
	}
};
///////////////////////////////////////////////////////////////////////////
/**
* @desc Includes CSS files to application
*/
//////////////////////////////////////////////////////////////////////////
Util.includeCSS = function(filepath){
 	var eLen = filepath.length;
	for(var i=0;i<eLen;i++){
	   document.write('<link type="text/css" rel="stylesheet" href="'+ filepath[i]+'" />');	
	}
};
/////////////////////////////////////////////////////////////////////////
/**
* @desc  simple getElementById
*/
/////////////////////////////////////////////////////////////////////////
Util.get = function(elem){
  // no element provided
  if(!elem || elem == null){
	 return null;
  }
  // elements is a string
  if(typeof elem == 'string'){
	 return document.getElementById(elem);  
  }
  // element is a collection
  else if(elem instanceof Array){
	 var elems = [];
	 var eLen = elem.length;
	 for(var i = 0; i<eLen; i++){
	    elems[elems.length] = dfutil.get(elem[i]);
     }
	 return elems;
  }
  // element is just element
  else{
     return elem;
  }
  return null;
};
/////////////////////////////////////////////////////////////////////////
/**
* @desc debug function, NEEDS div tag with debug ID
*/
/////////////////////////////////////////////////////////////////////////
Util.debug = function(val){
   this.get('debug').innerHTML += val + "<br />";	
};
/////////////////////////////////////////////////////////////////////////
/**
* @desc toggle
*/
/////////////////////////////////////////////////////////////////////////
Util.toggle = function(id){
   var elem = this.get(id);
   elem.style.display = (elem.style.display == '')?'none':'';
};
////////////////////////////////////////////////////////////////////////
/**
* in Array
*/
////////////////////////////////////////////////////////////////////////
Util.inArray = function(arr, val){
   var iL = arr.length;
   for(var i=0; i<iL; i++){
      if(val == arr[i]){
	     return true;
		 break;
	  }
   }
   return false;
};
///////////////////////////////////////////////////
/**
* get Elements By Name or empty array
*/
//////////////////////////////////////////////////
Util.getByName = function(name){
    try{
	  var arr = document.getElementsByName(name);
	}
	catch(e){
	  var arr = [];
	}
	return arr;
}
//////////////////////////////////////////////////
/**
* secure ampersant value
*/
//////////////////////////////////////////////////
Util.secureAmp = function(val){
    var changedVal = "%26";	
	val = encodeURI(val);	
	val = val.replace("&", changedVal);	
	return val;
}