///////////////////////////////////////////////////
//                                               //
//    Loomsday javascript functions go in here   //
//                                               //
///////////////////////////////////////////////////

var f='document.forms.';

/* EXAMPLE: :buffer.location.href = "/html/good_example_short.html"; 
             document.getElementById("centrecontent").innerHTML = 
                buffer.document.body.innerHTML;' */

//////////////////////////////
function display_document () {
//////////////////////////////

    // IE and OPERA trigger this function via ONLOAD, FF not.

    // don't load dummy (req. against IE nonsecure/permission denied issues)
    // from linkBuffer into div (first call of WEB_page...)
    if(linkBuffer.location.href == dummy_ie_dummy ||
       linkBuffer.location.href == 'about::blank')
        return; 

    // display current document
    document.getElementById("centrecontent").innerHTML = 
        linkBuffer.document.body.innerHTML;
    }

//////////////////////////////////
function display_alert (message) {
//////////////////////////////////

    alert(message);

    document.getElementById("centrecontent").innerHTML = 
        linkBuffer.document.body.innerHTML;
    }

///////////////////////
function showdoc(doc) {
///////////////////////

    // currently unused

    if(eval(doc+'.document.body.innerHTML.length') == 0)
        alert("Page not completely loaded yet. Please try again in a few moments...");
        document.getElementById("centrecontent").innerHTML = 
            eval(doc+'.document.body.innerHTML');
    }

/////////////////////////////////////////
function set_keyb_focus (form, element) {
/////////////////////////////////////////

    // currently unused

    if(eval(f+form+element))
        eval(f+form+element+'.focus()');
    }

//////////////////////////////////////
function hide_dotted_link_borders () {
//////////////////////////////////////

    <!-- this cutey hides the dotted borders around focused links -->
    var link_nohandler= window.clientInformation ? null : window.undefined;
    function link_down() { this.onfocus= this.blur; }
    function link_up() { this.onfocus= link_nohandler; }
    function link_bind() {
        for (var i=0; i< document.links.length; i++) {
            document.links[i].onmousedown= link_down;
            document.links[i].onmouseup= link_up;
            }
        }
    link_bind();
    }

//////////////////////////////////////////////
function qualify_url (url) {
//////////////////////////////////////////////

    var goodurl = url.match(/^https?:\/\//gi);

    if(!goodurl) 
        return 'http://'+url;
    else 
        return url;
    }

/////////////////////////////////////////////////
function validate_email (form, element, errmsg) {
/////////////////////////////////////////////////

    var email = eval(f+form+'.'+element);

    var goodEmail = email.value.match(/(\S+@\S+\.\S+)/gi);

    if(!goodEmail) {
        alert(errmsg);
        email.focus();
        return false;
        }
    else {
        return true;
        }
    }

/////////////////////////////////////////////////
function validate_phone (form, element, errmsg) {
/////////////////////////////////////////////////

    var field = eval(f+form+'.'+element);

    var goodnum = field.value.match(/^\+?\d+/gi);

    if(!goodnum) {
        if(errmsg) 
            alert(errmsg);
        else 
            alert('Phone number expected in form field. Please re-enter!');
        field.focus();
        return false;
        }
    else {
        return true;
        }
    }

//////////////////////////////////////////////////
function validate_number (form, element, errmsg) {
//////////////////////////////////////////////////

    var field = eval(f+form+'.'+element);

    var goodnum = field.value.match(/^\d+([\.,]\d+)?$/gi);

    if(!goodnum) {
        if(errmsg) 
            alert(errmsg);
        else 
            alert('Non-numeric content in form field. Please re-enter! (Numbers and fractions of numbers, e.g. "0.25", allowed)');
        field.focus();
        return false;
        }
    else {
        return true;
        }
    }

////////////////////////////////////////////////////
function validate_notempty (form, element, errmsg) {
////////////////////////////////////////////////////

    var field = eval(f+form+'.'+element);

    if(!field.value) {
        if(errmsg) 
            alert(errmsg);
        else 
           alert('Input field must not be empty. Please fill in a value!');
        field.focus();
        return false;
        }
    else {
        return true;
        }
    }

////////////////////////////////////////////
function validate_checked (form, element) {
////////////////////////////////////////////

    var field = eval(f+form+'.'+element);

    return field.checked ? true : false;
    }

////////////////////////////
function nav_markup (cl,d,du) {
////////////////////////////

    var i,ob,tA,tuA,h,fnd,obu;
    h=document.location.href;
    if(document.getElementById){
        ob=(d)?document.getElementById(d):document;
        if(ob){
            tA=ob.getElementsByTagName('A');
            for(i=0;i<tA.length;i++){
                //alert(tA[i].href+' => '+h);
                var link = tA[i].href;
                if(h.match( link )) {
                    tA[i].className=cl;
                    fnd = 1;
                    }
                }
            }
        obu=(du)?document.getElementById(du):document;
        if(obu){
            tuA=obu.getElementsByTagName('A');
            for(i=0;i<tuA.length;i++){
                //alert(tuA[i].href+' => '+h);
                var link = tuA[i].href;
                if(h.match( link )) {
                    tuA[i].className=cl;
                    fnd = 1;
                    }
                }
            }
        // no url match, select first menu entry ("welcome")
        if(ob && !obu && !fnd && h.match(/\/$/)) tA[0].className=cl;
        }
    }

//
var setGradient = (function(){
//     
    //private variables;
    var p_dCanvas = document.createElement('canvas');
    var p_useCanvas =  !!( typeof(p_dCanvas.getContext) == 'function');
    var p_dCtx = p_useCanvas?p_dCanvas.getContext('2d'):null;
    var p_isIE = /*@cc_on!@*/false;


     //test if toDataURL() is supported by Canvas since Safari may not support it

   try{   p_dCtx.canvas.toDataURL() }catch(err){
          p_useCanvas = false ;
   };

    if(p_useCanvas){

       return function (dEl , sColor1 , sColor2 , bRepeatY ){

            if(typeof(dEl) == 'string') dEl =  document.getElementById(dEl);
            if(!dEl) return false;
            var nW = dEl.offsetWidth;
            var nH = dEl.offsetHeight;
            p_dCanvas.width = nW;
            p_dCanvas.height = nH;

        var dGradient;
            var sRepeat;
            // Create gradients
            if(bRepeatY){
                dGradient = p_dCtx.createLinearGradient(0,0,nW,0);
                sRepeat = 'repeat-y';
            }else{
                dGradient = p_dCtx.createLinearGradient(0,0,0,nH);
                sRepeat = 'repeat-x';
            }

            dGradient.addColorStop(0,sColor1);
            dGradient.addColorStop(1,sColor2);

            p_dCtx.fillStyle = dGradient ;
            p_dCtx.fillRect(0,0,nW,nH);
            var sDataUrl = p_dCtx.canvas.toDataURL('image/png');

            with(dEl.style){
                backgroundRepeat = sRepeat;
                backgroundImage = 'url(' + sDataUrl + ')';
                backgroundColor = sColor2;
            };
       }
    }else if(p_isIE){
        p_dCanvas = p_useCanvas = p_dCtx =  null;
        return function (dEl , sColor1 , sColor2 , bRepeatY){
            if(typeof(dEl) == 'string') dEl =  document.getElementById(dEl);
            if(!dEl) return false;
            dEl.style.zoom = 1;
            var sF = dEl.currentStyle.filter;
            dEl.style.filter += ' ' + ['progid:DXImageTransform.Microsoft.gradient( GradientType=',  +(!!bRepeatY ),',enabled=true,startColorstr=',sColor1,', endColorstr=',sColor2,')'].join('');

        };

    }else{

        p_dCanvas = p_useCanvas = p_dCtx =  null;
        return function(dEl , sColor1 , sColor2  ){

            if(typeof(dEl) == 'string') dEl =  document.getElementById(dEl);
            if(!dEl) return false;
            with(dEl.style){
                 backgroundColor = sColor2;
            };
            //alert('your browser does not support gradient effet');
        }
    }
})();


