/*******************************************************************
 * some CGI style functions                                        *
 *******************************************************************
 * 11.11.2004                                                      *
 * written and copyright by Viktor Janoschka, INICO.com            *
 * email: Viktor@Janoschka.net                                     *
 *******************************************************************/
function gebi(r)
{
	try { return document.getElementById(r); }
	catch (e)
	{
	}

}


function jsHtmlify(s)
{
	if(s == undefined||s.length == 0)return ''
	s=s.replace(/\&/g,'&amp;')
	s=s.replace(/\"/g,'&quot;')
	s=s.replace(/\'/g,"&#39;")
	s=s.replace(/\</g,'&lt;')
	s=s.replace(/\>/g,'&gt;')
	return s
}

function jsNl2br(s)
{
	if(s == undefined||s.length == 0)return '';
	s=s.replace(/(\r\n|\r|\n)/g,"<br />\r\n")
	return s
}

function htmlNest()
{
	a=htmlNest.arguments;
	if(a==undefined||a.length==0)
		return ''
	else if (a.length==1)
		return htmlTag(a[0],{},'')
	else if (a.length==2)
		return htmlTag(a[0],{},a[1])
	else if (a.length>2)
		return htmlTag(a[0],a[1],a[2])
}

function htmlTag(tagN,attrib,v)
{
	if(tagN==undefined || tagN.length==0)return ''
	var a='<' + tagN;
	if(attrib!=undefined){
		for (var key in attrib){a +=  ' '+key + '="' + jsHtmlify(attrib[key]?attrib[key]:key) + '"' }
	}
	if(v != undefined)
		return a + '>' + v + htmlEnd(tagN);
	else
		return a + ' />';
}

function htmlStart(tagN,attrib)
{
	if(tagN==undefined || tagN.length==0)return ''
	var a='<' + tagN;
	if(attrib!=undefined){
		for (var key in attrib){a +=  ' '+key + '="' + jsHtmlify(attrib[key]?attrib[key]:key) + '"'}
	}
	return a+'>'
}

function htmlEnd(tagN)
{
	if(tagN!=undefined && tagN.length>0)
		return "</"+tagN+">"
	else
		return ""
}

function htmlComment(v)
{
	if(v==undefined || v.length==0)
		return ""
	else
		return "<!-- "+v+" -->"
}

function jsTag(s)
{
	if(s==undefined || !s) return "";
	var eol ="\r\n"
	return htmlTag('script',{'type':'text/javascript','language':'javascript'},eol + htmlComment(eol + s + eol + "// ")+ eol )
}

function styleTag(s)
{
	if(s==undefined || !s) return "";
	var eol ="\r\n"
	return htmlTag('style',{'type':'text/css'},eol + htmlComment(eol + s + eol) + eol)
}

function toQuery(a1,a2)
{
	var qs=''
	// merge a2 to a1 (only for undef-values or null-values and new key/value pairs )
	if(a2!=undefined )
	    for (var k in a2){ if(!a1[k]) a1[k]= a2[k] };
	// process a1
	if(a1!=undefined){
		for (var key in a1){
			qs += (qs.length>0?'&':'')+ escape(key) + '=' + escape(a1[key])
		}
	}
	return '?'+qs
}

function parseQuery(s)
{
    // parses a query string and returns a asso-array
    if(s==undefined || s.length==0)
	return false

    if(s.charAt(0)=='?')
    	s=s.substring(1);

    var hash = new Array();
    s=s.replace(/\+/g,' ');
    var ar=  s.split("&")
    if(ar && ar.length >0){
	for(i=0;i<ar.length ;i++){
	    if(ar[i].length>0){
	    	var ar2=  ar[i].split('=',2);
	    	if(ar2 && ar2.length >0){
	    	    if(!ar2[0])continue
	    	    hash[unescape(ar2[0])]= unescape(ar2[1]?ar2[1]:'')
    	        }
	    }
	}
    }
    return hash
}


function toggleItem(iIdx, action, actisblock)
{

itemIdx = String(iIdx);

	var actShow = document.getElementById(("show" + itemIdx));
	var actHide = document.getElementById(("hide" + itemIdx));
    var theCont = document.getElementById("item" + itemIdx);

	if(actisblock)
			actis = "block"
	else
			actis = "inline"


	if (action && action == "hide")
	{
				actShow.style.visibility 	= "visible";
				actShow.style.display 		= actis;
				actHide.style.visibility 	= "hidden";
				actHide.style.display 		= "none";
				theCont.style.visibility 	= "hidden";
		theCont.style.display 		= "none";


	}
	else
	{
		actShow.style.visibility 	= "hidden";
		actShow.style.display 		= "none";
		actHide.style.visibility 	= "visible";
		actHide.style.display 		= actis;
		theCont.style.visibility 	= "visible";
		theCont.style.display 		= "block";
	}

	return true;

}
function parse_email(s){

	if (typeof s != "string")
			return s;

	s = s.replace(/^[^a-zA-Z0-9\_\-\.\'\@]+/g,'');
	s = s.replace(/[^a-zA-Z0-9\_\-\.\'\@]+$/g,'');


	var email_pattern=/^[a-zA-Z0-9\_\-\']+(?:\.[a-zA-Z0-9\_\-\']+)*@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*(?:\.[a-zA-Z]{2,7})$/;
	var email = email_pattern.exec(s);

	if(email[0])
	return email[0].toLowerCase();
	else
	return '';

}

function extract_all_emails(s){

	if (typeof s != "string")
			return s;

	var email_pattern=/^[a-zA-Z0-9\_\-\']+(?:\.[a-zA-Z0-9\_\-\']+)*@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*(?:\.[a-zA-Z]{2,7})$/;
	var all_emails = new Array();

	splitted= s.split(/[^a-zA-Z0-9\_\-\.\'\@]+/);
	for(i=0;i<splitted.length;i++){
		var email = email_pattern.exec(splitted[i]);
		if(email && email[0])
			all_emails.push(email[0].toLowerCase());
	}

	return all_emails;
}




