function parseColor(str)
{
	try
	{
		document.getElementById('sizeTest').style.color=str
	}
	catch(e)
	{
		return ''
	}
	return str
}


function formatSize(str)
{
	str=str.toLowerCase()
	return str;	
}


function parseLatLng(str)
{
	var val,h=0,m=0,s=0,match=null;
	if(str)
	{
		if(match=str.match(/\s*-?\s*([0-9]{1,3})\s+([0-9]{1,2})\s+([0-9]{1,2})/))
		{
				h=parseFloat(match[1]);
				m=parseFloat(match[2]);
				if(m>60)return NaN
				m/=60;
				s=parseFloat(match[3]);
				if(s>60)return NaN
				s/=3600;
		}
		else if(/[\xB0\x27\x60\x91\x92\xB4\x22\xA8]/g.test(str))
		{
			if(match=str.match(/\s*-?\s*([0-9]*\.?[0-9]*)\xB0*/))
			{
				h=parseFloat(match[1])
			}
			if(match=str.match(/([0-9]{1,2})[\x27\x60\x91\x92\xB4]/))
			{
				m=parseFloat(match[1]);
				if(m>60)return NaN
				m/=60;
			}
			else return NaN
			if(match=str.match(/([0-9]*\.*[0-9]*)[\x22\xA8]/))
			{
				s=parseFloat(match[1]);
				if(s>60)return NaN
				s/=3600;
			}
			else return NaN
		}
		else if(match=str.match(/\s*-?\s*([0-9]{0,3}\.?[0-9]{1,})/))
		{
			h=parseFloat(match[1])
		}
		else return NaN
	}
	else return 0
	if((/-/g.test(str)))
	{
		if(h>0)h=-h
		if(m>0)m=-m
		if(s>0)s=-s
	}
	val=h+m+s;
	if((/[SW]/g.test(str)) && !(/-/g.test(str)))val=-val
	return val 
}

function formatLat(val)
{
	var ns=((val>=0)?'N':'S')
	val=Math.abs(val)
	var h=parseInt(val)
	var m=parseInt((val-h)*60)
	var s=Math.ceil((val-h-(m/60))*3600000)/1000
	return h+String.fromCharCode(176)+' '+m+'\' '+s+'" '+ns
}


function formatLng(val)
{
	var ew=((val>=0)?'E':'W')
	val=Math.abs(val)
	var h=parseInt(val)
	var m=parseInt((val-h)*60)
	var s=Math.ceil((val-h-(m/60))*3600000)/1000
	return h+String.fromCharCode(176)+' '+m+'\' '+s+'" '+ew
}


function getUID()
{
	return '$'+((new Date().getTime())+parseInt(Math.random()*999999)).toString(36)
}

function typeOf(obj)
{
	var type=typeof obj
	if(type=='object')
	{
		if(!obj)return 'object'
		if(obj instanceof Array)return 'array';
		if(obj instanceof Date)	return 'date';
		if(obj instanceof RegExp)return 'regexp';
	}
	return type
}

function escapeString(str)
{
	for(var code,x=0,out='';x<str.length;x++)
	{
		switch(str.charCodeAt(x))
		{
			case 39:
				out+='\\\''
			break;
			case 34:
				out+='\\\"'
			break;
			case 92:
				out+='\\\\'
			break;
			case 9:
				out+='\\t'
			break;
			case 10:
				out+='\\n'
			break;
			case 11:
				out+='\\v'
			break;
			case 12:
				out+='\\f'
			break;
			case 13:
				out+='\\r'
			break;
			default:
			out+=str.charAt(x);
		}
	}
	return out;
}

function objToJs(obj)
{
		var x,r='',d=0;
		switch(typeOf(obj))
		{
			case 'object':
				for(x in obj)
				{
					if(d)r+=',';
					d++;
					r+=x+':';
					switch(typeOf(obj[x]))
					{
						case 'boolean':
						case 'number':
							r+=obj[x];
						break;
						case 'function':
							r+=obj[x];
						break;
						case 'date':
							r+='new Date('+(new Date(obj[x])).getTime()+')'
						break;
						case 'regexp':
							r+='new RegExp("'+obj[x].source+'","'+((obj[x].global)?'g':'')+((obj[x].ignoreCase)?'i':'')+((obj[x].multiline)?'m':'')+'")'
						break;
						case 'string':
								r+='\''+escapeString(obj[x])+'\'';
						break;
						case 'object':
								if(!obj[x])r+='null';
								else
								{
									r+=objToJs(obj[x]);
								}
						break;
						case 'array':
							r+=objToJs(obj[x]);
						break;
					}
				}
				return '{'+r+'}';
			break;
			case 'array':
				for(var x=0;x<obj.length;x++)
				{
					if(d)r+=',';
					d++;
					switch(typeOf(obj[x]))
					{
						case 'boolean':
						case 'number':
							r+=obj[x]
						break;
						case 'function':
							r+=obj[x]
						break;
						case 'date':
							r+='new Date('+(new Date(obj[x])).getTime()+')'
						break;
						case 'regexp':
							r+='new RegExp("'+obj[x].source+'","'+((obj[x].global)?'g':'')+((obj[x].ignoreCase)?'i':'')+((obj[x].multiline)?'m':'')+'")'
						break;
						case 'string':
								r+='\''+escapeString(obj[x])+'\'';
						break;
						case 'object':
								if(!obj[x])r+='null';
								else	r+=objToJs(obj[x]);
						break;
						case 'array':
							r+=objToJs(obj[x]);
						break;
					}
				}
				return '['+r+']';
			break;
			case 'boolean':
			case 'function':
			case 'number':
				return obj 
			break;
			case 'string':
				return'\''+escapeString(obj)+'\'';
			case 'date':
				return 'new Date('+(new Date(obj)).getTime()+')'
			break;
			case 'regexp':
				return 'new RegExp("'+obj.source+'","'+((obj.global)?'g':'')+((obj.ignoreCase)?'i':'')+((obj[x].multiline)?'m':'')+'")'
			break;
		}
}



