function cloneObject(obj) {
	var clone = {};
	for(var i in obj) {
		if(typeof(obj[i])=="object")
			clone[i] = cloneObject(obj[i]);
		else
			clone[i] = obj[i];
	}
	return clone;
};

function isSet(variable) {
	return ((typeof variable) != 'undefined' );
}

function addslashes(str) {
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\0/g,'\\0');
	return str;
}

function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\0/g,'\0');
	str=str.replace(/\\\\/g,'\\');
	return str;
}

function alertObject(obj) {
	var out = '';
	for (var i in obj) { out += i + '=' + obj[i] + '\n '};
	alert (out);
}

function padZeros(theNumber, max) {
    var numStr = String(theNumber);

    while ( numStr.length < max) {
        numStr = '0' + numStr;
    }

    return numStr;
}

function num_bytes_as_text(num) {
	if (num < 1024) {
		return num+"b";
	} else if (num < 1048576) {
		var size_kb = parseInt(num/1024);
		return size_kb + "KB";
	} else {
		size_mb = parseInt(num/1048576);
		return size_mb + "MB";
	}
}

function getRadioValue(radioElement) {
	var result = -1;
	for (var i=0; i < radioElement.length; i++) {
	   if (radioElement[i].checked) result = i;
	}
	return result;
}

function getFilenameSuffix(fname) {
	return fname.match(/\.([^\.]+)$/g);
}

function basename(path) {
    return path.replace(/\\/g,'/').replace( /.*\//, '' );
}

function truncateString(str, len) {
	if (str.length <= len) {
		return str;
	} else {
		return str.substr(0, len) + '...';
	}
}
