//
//ns
	if(!_.com){
		_.com = {};
	}
	
//
//Common Functions
	//
	//create universal obj
        _.o = function(exp){
                //
                var jqObj = $(exp);
                //
                if(jqObj.length > 0){
                        var out = {
                                j: jqObj,
                                d: jqObj[0]
                        };
                }else{
                        out = false;
                }
                return out;
        };
	
	_.com.upperFirst = function(str){
   		return str.substr(0, 1).toUpperCase();
	};	
	

	//
	//set checkbox value
	_.com.setCheckbox = function(selection, val, func){
		if(val){
			$(selection).attr("checked", "checked");
		}else{
			$(selection).removeAttr("checked");
		}
		if(func){
			func(val);
		}
		_.jobs.updateUi();
	};
	
	//
	//get first item in an obj
	_.com.obRev = function(ob){
		for (var i in ob){
			return ob[i];
		}
	};	
	//
	//boolean to Integer
	_.com.b2i = function(boo){
		if(boo){
			return 1;
		}else{
			return 0;
		}
	};
	//
	//Integer to boolean
	_.com.i2b = function(i){
		if(i){
			var tTest = Math.abs(i);
			if(tTest == 1){
				return true;
			}else{
				return false;
			}
		}else{
			return false;
		}
	};	
	
	//
	//get first item in an obj
	_.com.first = function(ob){
		for (var i in ob){
			return ob[i];
		}
	};		
	
	//
	//sort in multidimensional arr by value
	_.com.mSort = function(inArr, inx, dir){
		//
		//vars		
		var tempOb = {};
		var ii = 0;
		var thisVal = 0;
		var nextVal = 0;
		if(YAHOO.lang.isObject(inx)){
			arr = _.com.ob2Arr(inArr);
		}else{
			arr = inArr;
		}
		var cnt = arr.length;
		
		//
		//direction
		if(!dir){
			dir = "a";
		}

		while(ii < cnt-1){
			
			if(YAHOO.lang.isArray(inx)){
		        thisVal = Math.abs(arr[ii][inx[0]][inx[1]]);
				nextVal = Math.abs(arr[ii+1][inx[0]][inx[1]]);	
			}else{
		        thisVal = Math.abs(arr[ii][inx]);
				nextVal = Math.abs(arr[ii+1][inx]);	
			}
			
			if(dir == "a"){
		        if(thisVal > nextVal){
		            tempOb = arr[ii];
		            arr[ii] = arr[ii+1];
		            arr[ii+1] = tempOb;
		            //
		            //reset
		            ii = 0;
		        }else{
					ii++;
				}
			}else{
		        if(thisVal < nextVal){
		            tempOb = arr[ii];
		            arr[ii] = arr[ii+1];
		            arr[ii+1] = tempOb;
		            //
		            //reset
		            ii = 0;
		        }else{
					ii++;
				}
			}
		}
		
		//
		//reindex
		if (YAHOO.lang.isObject(inx)) {
			var tempArr = [];
			for(var i in arr){
				var key = arr[i]._orgkey;
				tempArr[key] = arr[i];
			}
			arr = tempArr;	
		}
		
		return arr;		
	};
		
	//
	//number to currency
	_.com.num2cur = function(amount, setPrefix){
		
		var prefix = "&pound;";
		var i = parseFloat(amount);
		var num = 0;
		var s = 0;
		
		if (isNaN(i)) {
			i = 0.00;
		}
		var minus = '';
		
		if(i < 0) { 
			minus = '-'; 
		}
		
		i = Math.abs(i);
		i = parseInt((i + 0.005) * 100, 0);
		i = i / 100;
		s = i+"";
		if(s.indexOf('.') < 0) { 
			s += '.00'; 
		}
		if(s.indexOf('.') == (s.length - 2)) {
			 s += '0'; 
		}
		s = minus + s;
		
		if(setPrefix !== undefined){
			num = setPrefix + s;
		}else{
			num = prefix + s;
		}
		
		return num;
	};
	//
	//convert timecode to date
	_.com.time2Date = function(oData){
		var timestamp = parseInt(oData, 0);
		var n = new Date(timestamp*1000);
		return {
		    "t":_.com.pad(n.getHours(),2) + ":" + _.com.pad((n.getMinutes()+1),2) + ":" + _.com.pad((n.getSeconds()+1),2),
		    "str":_.com.pad(n.getDate(),2) + "/" + _.com.pad((n.getMonth()+1),2) + "/" + n.getFullYear(),
		    "d": n
		};
	};

        //
        //string from date
        _.com.strFromDate = function(n){
            n =  new Date();
            var out = "";
            if(n){
                out = n.toLocaleFormat("%A, %d %B %Y");
            }
            return out;
        };
	
	//
	//inArray -  key in Arr
	_.com.exists = function(arr, key, val){
		key +='';
		val +='';		
		if(arr){
			for(var i in arr){
				if(arr[i][key]){
					if((arr[i][key]+'') === val){
						return i;
					}
				}
			}
		}
		return false;
	};	
	
	//
	//gets the containing obj searching from an obj with in it to a given obj with a root id
		_.com.getContainerWithClass = function(startAt, cla, rootIdOrClass){
			var node = $(startAt);
			while(node){
				if(node.attr("id") == rootIdOrClass || node.hasClass(rootIdOrClass)){
					return false;
				}else{
					if(node.hasClass(cla)){
						return node;
					}				
					node = node.parent();
				}	
			}
		};	
	//
	//Pad number
		_.com.pad = function (val, len) {
			val = String(val);
			len = len || 2;
			while (val.length < len) {
				val = "0" + val;
			}
			return val;
		};		
	//
	//Trim functions
		_.com.trim = function(s) {
			return s.replace(/^\s+|\s+$/g,"");
		};
		_.com.ltrim = function(s) {
			return s.replace(/^\s+/,"");
		};
		_.com.rtrim = function(s) {
			return s.replace(/\s+$/,"");
		};
	//
	//try till no error
	_.com.dTry = function(func){
		try{
			func();
		}
		catch(e){
			setTimeout(function(){
				_.com.dTry(func);
			},1000);
		}
	};
		
	//
	//array or object copy
		_.com.cArr = function(arr, removeDup, key){
			var newObj = (arr instanceof Array) ? [] : {};
			for (i in arr) {
				if (YAHOO.lang.isArray(arr[i]) || YAHOO.lang.isObject(arr[i])) {
					newObj[i] = _.com.cArr(arr[i]);
				} else {
					if (removeDup) {
						if(key){
							if (!_.com.exists(newObj, key, arr[i][key])) {
								newObj[i] = arr[i];
							}
						}else{
							if (!$.inArray(arr[i], newObj)) {
								newObj[i] = arr[i];
							}
						}
					}else{
						newObj[i] = arr[i];
					}
				}
			}
			return newObj;
		};
		
	_.com.remDup = function(arr, removeDup, key){
		var newObj = [];
		
		if (YAHOO.lang.isArray(arr) || YAHOO.lang.isObject(arr)) {
			for (var i in arr) {
				if (removeDup) {
					if (key) {
						if (!_.com.exists(newObj, key, arr[i][key])) {
							if(arr[i][key]){
								newObj[i] = arr[i];
							}
						}
					}
					else {
						if (!$.inArray(arr[i], newObj)) {
							newObj[i] = arr[i];
						}
					}
				}else {
					newObj[i] = arr[i];
				}
			}
		}
		return _.com.ob2Arr(newObj);
	};
	//
	//stript html from a str
		_.com.strip = function(str){
			return str.replace(/<\S[^><]*>/g, "");
		};
	//
	//count items in an object (should be moved to common functions)
		_.com.obCount = function(ob){
			var cnt = 0;
			for(var i in ob){
				cnt++;
			}
			return cnt;
		};		
	//
	//count items in an object (should be moved to common functions)
		_.com.ob2Arr = function(ob, forgetKey){
			var arr = [];
			for(var i in ob){
				if(!forgetKey){
					//ob[i]._orgkey = i;
				}
				arr.push(ob[i]);
			}
			return arr;
		};		
	//
	//encode id
		_.com.encodeId = function(filename){
			if(filename){
				filename = filename.toLowerCase();
				return filename.replace(/[^A-Za-z0-9]+/g, '');
			}else{
				return "";
			}	
		};
	//
	//gets the filename part of a path
		_.com.getBaseName = function(filename){
			if(filename){
				var pArr = _.com.path2arr(filename);
				return pArr.pop();
			}
		};
	//
	//create parameter str
		_.com.ap = function(obj){
			var pArr = [];
			for(var i in obj){
				pArr.push(i + "=" + escape(obj[i]));
			}
			return pArr.join('&');
		};
	//
	//Format path object
		_.com.path2arr = function(path){
			if(path){
				var arr = path.split('/');
				if(!arr[0]){
					arr.shift();
				}
				if(!arr[arr.length-1]){
					arr.pop();
				}
				return arr;
			}
			return false;
		};		
		
	//
	//add files to selected arr
		_.com.arrAdd = function(arr, type, obj){
			if(type && obj){
				//
				//add to sel arr
				arr.push($.extend(obj, {"type":type}));
				return arr;
			}
		};		
	//
	//remove 
		_.com.arrRemove = function(arr, objOrKey, val){
			if(objOrKey){
				if (arr.length > 0) {
					for (var i in arr) {
						if (YAHOO.lang.isObject(objOrKey)) {
							if (arr[i].obj === objOrKey) {
								delete arr[i];
							}
						}
						else {
							if (arr[i].obj[objOrKey] === val) {
								delete arr[i];
							}
						}
					}
				}
			}
		};	
	//
	//find in array given an object or a key/value pair
		_.com.find = function(arr, sObj){
			
			con(arr, 'find arr');
			var outArr = [];
			
			if(arr && sObj){
				for (var i in arr) {	
					for(var q in sObj.query){
						con(arr[i][q]);
						if(arr[i][q] != sObj.query[q]){
							delete arr[i];
							break;
						}
					}
				}
				
				//
				//rebuild arr
				for(var r in arr){
					if(arr[r]){
						outArr.push(arr[r]);
					}
				}
			
				//
				//return whats left
				if(outArr.length > 0){
					return outArr;
				}else{
					return false;
				}
			}
			return false;
		};