cst = {lat:'', lng:'', location:'', country:'',city:'',address:'',distance:''};
csf = {
	location : {field: 'inSFLocation', plink: 'l',  ajax: 'location',    "deflt": ''},
	country  : {field: 'inSFCountry',  plink: 'c',  ajax: 'countryCode', "deflt": 'DE'},
	city     : {field: 'inSFCity',     plink: 'ct', ajax: 'city',        "deflt": ''},
	address  : {field: 'inSFAddress',  plink: 'a',  ajax: '',            "deflt": ''},
	distance : {field: 'inSFDistance', plink: 'd',  ajax: 'distance',    "deflt": '10'}
};

var globalEventDictionary =
{
	'keydown': {
				'mozName' : 'keydown',
				'ieName' : 'onkeydown'
			},
	'onmouseover': {
				'mozName' : 'keydown',
				'ieName' : 'onkeydown'
			}
};

function getElementValueById(elementId)
{
	var element = document.getElementById(elementId);
	if (element)
	{
		if (element.tagName == 'INPUT' && element.type == 'text')
		{
			return element.value;
		}
		else if (element.tagName == 'SELECT')
		{
			return element.options[element.selectedIndex].value;
		}
		else if (element.tagName == 'A')
		{
			if (element.text)
			{
				return element.text;
			}
			else
			{
				return element.firstChild.data;
			}
		}
	}
}
function setElementValueById(elementId,val)
{
	var element = document.getElementById(elementId);
	if (element)
	{
		if (element.tagName == 'INPUT' && element.type == 'text')
		{
			element.value = val;
		}
		else if (element.tagName == 'SELECT')
		{
			for(var i = 0; i < element.options.length; i++)
			{
				if(element.options[i].value == val)
				{
					element.selectedIndex = i;
					break;
				}
			}
		}
	}
}

function getElementsByClass(searchClass,node,tag){
	var classElements=new Array();
	if(node==null)node=document;
	if(tag==null)tag = '*';
	var els=node.getElementsByTagName(tag);
	var elsLen=els.length;
	var pattern=new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for(i=0,j=0;i<elsLen;i++)
		if(pattern.test(els[i].className)){classElements[j]=els[i];j++;}
	return classElements;
}

function getXmlHttpObject()
{
	var objXMLHttp = null
	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest()
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
	}
	return objXMLHttp
}

function disableElements(parent, enable){
	var status=enable?false:true;
	var elements=new Array();
	elements=parent.getElementsByTagName('select');
	for(var i=0;i<elements.length;i++)elements[i].disabled=status;
	elements = parent.getElementsByTagName('input');
	for(var i=0;i<elements.length;i++)elements[i].disabled=status;
}
function emptyNode(node){
	while(node&&node.childNodes[0])node.removeChild(node.childNodes[0]);
}
function showElementById(id, style){
	var e=document.getElementById(id)
	if(e&&e.style)e.style.display = style ? style : 'block';
}
function hideElementById(id){
	showElementById(id, 'none');
}
function createElementByTemplate(d){
    var e=null;
    if(typeof d=='number'||typeof d=='string')e=document.createTextNode(d)
    else if(typeof d=='object'&&d instanceof Object&&d.tag&&(e=document.createElement(d.tag))){
	for(atr in d.attr)e[atr]=d.attr[atr]
	for(ev in d.event)addEvent(e,ev,d.event[ev])
        if(d.content)constructElement(e,d.content)
    }
    else e=d;
    if(e)return e;return null
}
function constructElement(p,d){
	var e=null;
	if(typeof d=='object'&&d instanceof Array)for(var i=0;i<d.length;i++)constructElement(p,d[i])
	else e=createElementByTemplate(d)
	if(e)p.appendChild(e)
}
function createPager(tp,cp,h){
	// tp = total number of pages, cp = number of current page, h = name of function handling page switching
	var i,c=0,r=[],s=4;
	if(cp<1)cp=1;if(cp>tp)cp=tp;
        function PagerPage(n)
	{
		this.tag='li';this.content={tag:'a',attr:{href:"javascript:"+h+"("+n+");void(0);"},content:n}
	}
	if(tp-cp<s)c=s-tp+cp;
	for(i=cp-1;i>0&&i>cp-s-1-c;i--){r.unshift(new PagerPage(i));}
	r.push({tag:'li',content:{tag:'span',content:cp}});
	if(cp+1<s)c=s-cp+1;
	for(i=cp+1;i<=tp&&i<cp+s+1+c;i++){r.push(new PagerPage(i));}
	if(cp>1)r.unshift({tag:'li',content:{tag:'a',attr:{href:"javascript:"+h+"("+(cp-1)+");void(0);"},content:'<<'}});
	if(cp<tp)r.push({tag:'li',content:{tag:'a',attr:{href:"javascript:"+h+"("+(cp+1)+");void(0);"},content:'>>'}});
	return createElementByTemplate({tag:'ul',attr:{className:'pagerList'},content:r});
}
function createAdvancedPager(tp,cp,h)
{
	var sp=createPager(tp,cp,h)
	var s={
		tag:'div',attr:{className:'advancedPager'},
		content:[
			{tag:'div',attr:{className:'pagerListing'},
			content:sp
			},
			{tag:'div',attr:{className:'pagerNavigator'},
			content:[
				'Gehe zu Seite: ',
				{tag:'input',attr:{type:'text',id:'inPagerNavigatorNumber',className:'pagerNavigatorNumber'}},
				{tag:'input',attr:{type:'button',value:'Los!'},
				event:{click:"var n=toInt(document.getElementById('inPagerNavigatorNumber').value);if(n<1)n=1;if(n>"+tp+")n="+tp+";"+h+"(n);"}}
			]},
			{tag:'div',content: tp + ' Seite gesamt.'}
		]
	};
	return createElementByTemplate(s);
}
function addEvent(instance, eventName, listener)
{
	if (typeof listener == 'string')
	{
		listener = new Function('event', listener);
	}
	var listenerFn = listener;
	if (instance.addEventListener) {
		instance.addEventListener(eventName, listenerFn, false);
	    } else if (instance.attachEvent) {
		listenerFn = function() {
		    listener(window.event);
		}
		instance.attachEvent("on" + eventName, listenerFn);
	    } else {
		throw new Error("Event registration not supported");
	    }
	    return {
		instance: instance,
		name: eventName,
		listener: listenerFn
	    };
}

function getUrlParameter(name)
{
	  name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	  var regexS="[\\?&]"+name+"=([^&#]*)";
	  var regex=new RegExp(regexS);
	  var results=regex.exec(window.location.href);
	  if(results==null)return "";else return results[1];
}
function toFloat(s){
    var r=parseFloat(s);return isNaN(r)?0:r;
}
function toInt(s){
    var r=parseInt(s);return isNaN(r)?0:r;
}
function addToInput(val, id)
{
	document.getElementById(id).value = val;
}
