/* */

// wir brauchen moderne Browser

var DOM = false;

if (document.getElementById && document.createElement) { DOM = true }

window.onload = init;

function init() {
	if ( ! DOM ) { return true }

	hideAllPoppers();
	
	check_news();
	
	form_handlers();

	create_link_symbols();
	
	adapt_styles();
	
	return true;
}

/* Poppers */

var idx = 0;
var m_active;
var active;

function getPoppers () {
	var poppers = new Array();
	poppers.push( window.document.getElementById( 'popper01' ) );
	
	return poppers;
}

function getMenus () {
	var menus = new Array();
	
	menus.push( window.document.getElementById( 'menu01' ) );
	
	return menus;
}

function hideAllPoppers () {
	var poppers = getPoppers();
	
	for (  var i=0; i<poppers.length;i++ ) {
		try {
			poppers[i].style.visibility = 'hidden';
		}
		catch (e) {}
	}
}

function showPopper (  index ) {
	idx = index;
	m_active = window.setTimeout("__showPopper__()",600);
}

function __showPopper__ ( ) {
	var p = getPoppers()[idx];
	var m = getMenus()[idx];
	
	var offsetLeft = m.offsetLeft;
	parentTag = m.offsetParent;
	
	while ( parentTag.tagName.toLowerCase() != 'body' ) {
			offsetLeft += parentTag.offsetLeft;
			parentTag = parentTag.offsetParent;
	}
	
	p.style.left = offsetLeft + 'px';
	p.style.visibility = 'visible';
}

function popperOut( s ) {
        if ( s==0 ) { active = window.setTimeout( "hideAllPoppers()",600 ); }
        if ( s==1 ) { window.clearTimeout( active ); }
        if ( s==2 ) { window.clearTimeout( m_active ); }

}

function form_handlers () {
	var inputs = document.getElementsByTagName( 'input' );
	var texts = document.getElementsByTagName( 'textarea' );
	var i = 0;
	
	for ( i=0; i<=inputs.length;i++ ) {
		var obj = inputs[i];

		if (obj) { 
			obj.onfocus = set_form_focus;
			obj.onblur = set_form_focus;
		}
	}
	
	for ( i=0; i<=texts.length;i++ ) {
		var obj = texts[i];

		if (obj) { 
			obj.onfocus = set_form_focus;
			obj.onblur = set_form_focus;
		}
	}
}

function set_form_focus ( e ) {

	if (!e) { var e = window.event }

	var targ;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;

	var color = "#ffffff";
	if ( e.type == 'blur' ) var color = "#f5f5f5";
	
	targ.style.backgroundColor = color;
	
	if ( ! $( 'no-formhandler' ) ) {
		if( targ.type == 'text' && targ.value==targ.defaultValue ) targ.value='';
	}

	return true;
}

// Link Symbols

function MICONS () {
	this.pdf = new Array( 'url(/vgm/vorlagen/icons/pdf.gif) center right no-repeat', '14px' );
	this.zip = new Array( 'url(/vgm/vorlagen/icons/zip.gif) center right no-repeat', '15px' );
	this.xls = new Array( 'url(/vgm/vorlagen/icons/xls.gif) center right no-repeat', '13px' );
	this.doc = new Array( 'url(/vgm/vorlagen/icons/doc.gif) center right no-repeat', '18px' );
	this.ppt = new Array( 'url(/vgm/vorlagen/icons/ppt.gif) center right no-repeat', '13px' );
	this.outer = new Array( 'url(/vgm/vorlagen/icons/weblink.gif) center right no-repeat', '13px' );
}

function create_link_symbols () {
	
	if (!DOM) { return false };
	
	var micons = new MICONS();

	Origin = $( 'origin' );

	if ( ! Origin ) { return false; }
	
	var Links = Origin.getElementsByTagName( 'a' );
	
	for ( var i=0; i<=Links.length;i++ ) {
		var obj = Links[i];

		if (obj) { 
			try {
				
				if ( ! obj.host ) { continue }
				
				// Links nach aussen
				if ( ! obj.host.match( /\.gbv\.de?/ ) ) {
					obj.style.background = micons['outer'][0];
					obj.style.paddingRight = micons['outer'][1];
					continue;
				}
				
				// PDFs, ZIPs
				var basename = obj.pathname.toLowerCase().split( '/' ).pop();
				var suffix = basename.split( '.' ).pop();

				for ( var x in micons ) {
					if ( suffix == x ) {
						obj.style.background = micons[x][0];
						obj.style.paddingRight = micons[x][1];
						break;
					}
				}
			}
			catch (e) {}
		}
	}
	
}

function adapt_styles() {

	try {
		// Test auf Mozilla
		var x = new XMLHttpRequest();

		Origin = $( 'origin' );

		if ( ! Origin ) { return false; }
		
		// Listen

		var ListElems = Origin.getElementsByTagName( 'li' );
	
		for ( var i=0; i<=ListElems.length;i++ ) {
			var obj = ListElems[i];
			
			var limage = computedStyle( obj, 'list-style-image'  );
			
			if ( ! limage ) { continue }

			if ( limage.match( 'map_ex\.gif' ) ) {
				obj.style.listStyleImage = "url('/vgm/vorlagen/icons/map_ff.gif')";
			}
			if ( limage.match( 'map_1_ex\.gif' ) ) {
				obj.style.listStyleImage = "url('/vgm/vorlagen/icons/map_1_ff.gif')";
			}
		}
	}
	catch ( e ) {}
}

function check_news () {
		var recentNews = $( 'recentNews' );
		
		if ( ! recentNews ) { return false; }
		
		var ListElems = recentNews.getElementsByTagName( 'li' );
		
		if ( ! ListElems.length ) {
			recentNews.style.visibility = "hidden";
		}
}

function isValidEmail(str) {

    var at="@";
    var dot=".";
    var lat=str.indexOf(at);
    var lstr=str.length;
    var ldot=str.indexOf(dot);

    if (str.indexOf(at)==-1){
        return false;
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
        return false;
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        return false;
    }

    if (str.indexOf(at,(lat+1))!=-1){
    return false;
    }

    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
    return false;
    }

    if (str.indexOf(dot,(lat+2))==-1){
    return false;
    }

    if (str.indexOf(" ")!=-1){
    return false;
    }

    return true;
}

function qp_validate () {

    var mandatory = new Array( 'name', 'email', 'question' );
    var isValid = true;
    var fObj = $( 'eform' );

    // Pflichtfelder
    for ( var i=0; i<=(mandatory.length-1); i++ ) {
        try {
            var obj = $( mandatory[i] );
            if ( ! obj ) { next };

            var eId = "error_" + mandatory[i];
            var eObj = $( eId );
            var eNode = SPAN('');

            if ( ! obj.value ) {
                isValid = false;
                eNode = SPAN('Diese Angabe ist erforderlich. Bitte machen Sie eine Eingabe.');
            }
            replaceChildNodes( eObj, eNode );
        }
        catch (e) {
            log( e );
            isValid = false;
        }
    }

    // E-Mail
    try {
        var obj = $( 'email' );
        var eObj = $( 'error_email' );
        var eNode = SPAN('');

        if ( ! isValidEmail(obj.value) ) {
            isValid = false;
            eNode = SPAN('Bitte tragen Sie eine gültige E-Mail Adresse ein.');
        }
        replaceChildNodes( eObj, eNode );
    }
    catch (e) {
        log( e );
        isValid = false;
    }

    if ( isValid ) { 
        fObj.submit()
/*
        jObj = new Object();
        jObj.name = $( 'name' ).value;
        jObj.question = $( 'question' ).value;
        var defer = loadJSONDoc( 'http://www.gbv.de/de/services/questionpoint/conv', jObj );
        defer.addCallbacks( cbQpConv, cbErr );
*/
    }
}

function cbQpConv( result ) {
    var fObj = $( 'eform' );

    $( 'name' ).value = result.name;
    $( 'question' ).value = result.question;

    fObj.submit()
}

function cbErr( err ) {
    log(err);
}