// calvertgiving.js

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//////////////////////////////////////////////////////////////////////////

function swapImage(imgName, new_src) {
    if (document.images && document[imgName] && (document[imgName].src != new_src)) {
        document[imgName].src = new_src;
    }
}

function swapImageById(imgId, new_src) {
    if (document.getElementById && document.getElementById(imgId) && (document.getElementById(imgId).src != new_src)) {
        document.getElementById(imgId).src = new_src;
    }
}

//////////////////////////////////////////////////////////////////////////

var inMenu = false;
var curMenuLayer = '';
var curMenu = '';
var menuTimeout = null;

function menuItemOn(layerName) {
    clearTimeout(menuTimeout);
    inMenu = true;
}

function menuItemOff(layerName) {
    inMenu = false;
    menuTimeout = setTimeout('hideMenu(curMenuLayer)', 50);
}

function showLayer(layerName) {
    if (navigator.appName == 'Netscape' && !document.getElementById) {
        eval('document.layers.'+layerName+'.visibility = "show"');
    } else if (document.getElementById) {
        document.getElementById(layerName).style.visibility = 'visible';
    } else {
        document.all[layerName].style.visibility = 'visible';
    }
}

function hideLayer(layerName) {
    if (navigator.appName == 'Netscape' && !document.getElementById) {
        eval('document.layers.'+layerName+'.visibility = "hide"');
    } else if (document.getElementById) {
        document.getElementById(layerName).style.visibility = 'hidden';
    } else {
        document.all[layerName].style.visibility = 'hidden';
    }
}

function showMenu(layerName, menuName) {
    if (menuTimeout != null) {
        clearTimeout(menuTimeout);
        hideMenu(curMenuLayer);
    }

    curMenu = menuName;

    showLayer(layerName);

    curMenuLayer = layerName;
}

function hideMenu(layerName) {
    if (!inMenu) {
        hideLayer(layerName);
    }
}

function setMenuTimer() {
    // time after mouse moves away from menu heading before menu is hidden
    menuTimeout = setTimeout('menuTimeUp()',150);
}

function menuTimeUp() {
    if (!inMenu) {
        hideMenu(curMenuLayer);
    }
}

function initializeMenus(menuContainer) {
    var menu = document.getElementById(menuContainer);
    var menuRows = menu.getElementsByTagName('li');

    for (var i=0; i<menuRows.length; i++) {
        menuRows[i].onmouseover = function() {
            this.className = 'on';
            menuItemOn(this.offsetParent.offsetParent);
            document.getElementById('nav1_'+curMenu).className = 'menu active';
        };
        menuRows[i].onmouseout = function() {
            this.className = 'off';
            menuItemOff(this.offsetParent.offsetParent);
            if (curMenu != nav1active) {
                document.getElementById('nav1_'+curMenu).className = 'menu';
            }
        };
    }
}

//////////////////////////////////////////////////////////////////////////

function setCookie(name, value, path, expires, domain, secure) {
    var curCookie = name + "=" + escape(value) +
      ((path) ? "; path=" + path : "") +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
    document.cookie = curCookie;
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }

    return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
  if (getCookie(name)) {
      document.cookie = name + "=" +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

function centerLayer(layerName, layerWidth, layerHeight) {
    if (document.getElementById) {
        layerObj = document.getElementById(layerName);

        var scrollX = 0, scrollY = 0;
        if ( typeof( window.pageYOffset ) == 'number' ) {
            //Netscape compliant
            scrollY = window.pageYOffset;
            scrollX = window.pageXOffset;
        } else if ( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
            //DOM compliant
            scrollY = document.body.scrollTop;
            scrollX = document.body.scrollLeft;
        } else if ( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
            //IE6 standards compliant mode
            scrollY = document.documentElement.scrollTop;
            scrollX = document.documentElement.scrollLeft;
        }

        if ( typeof( window.innerWidth ) == 'number' ) {
            //Non-IE
            myWidth = window.innerWidth;
            myHeight = window.innerHeight;
        } else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
            //IE 6+ in 'standards compliant mode'
            myWidth = document.documentElement.clientWidth;
            myHeight = document.documentElement.clientHeight;
        } else if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
            //IE 4 compatible
            myWidth = document.body.clientWidth;
            myHeight = document.body.clientHeight;
        }

        scrollX += ( (myWidth-layerWidth) >>1 );
        scrollY += ( (myHeight-layerHeight) >>1 );
        layerObj.style.left = scrollX + 'px' ;
        layerObj.style.top = scrollY + 'px' ;

        setTimeout("centerLayer('"+layerName+"',"+layerWidth+","+layerHeight+")", 500);
    }
}

function collectEmail(linkObj) {
    var url = linkObj.href;
    var wrapper = "/download_wrapper.cgi";
    var wrapped_url = wrapper+'?url='+encodeURIComponent(url);

    var email = getCookie('email');
    if ((!email || !email.length) && document.getElementById) {
        centerLayer('downloadRegistration',350,200);

        document.getElementById('downloadRegistrationLink').href = wrapped_url;
        document.getElementById('downloadRegistrationLink').setAttribute('target', '_blank');
        showLayer('downloadRegistration');
        document.getElementById('downloadRegistrationEmail').select();
        document.getElementById('downloadRegistrationEmail').focus();
        return false;
    } else {
        linkObj.href = wrapped_url;
        linkObj.setAttribute('target', '_blank');
        return true;
    }
}
if (document.getElementById && document.getElementById('downloadRegistration')) {
    window.onscroll = setTimeout("centerLayer('downloadRegistration',350,200)",500);
}

function validateDownloadRegistration(emailFieldObj) {
    var emailPat = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/;

    var errorText = "";

    if (emailFieldObj.value.length < 1) {
        errorText += "Please enter your email address in the appropriate field.\n";
    } else if (!emailPat.test(emailFieldObj.value)) {
        errorText += "Please check your email address entry to make sure it's correct.\n";
    }
    if (errorText.length > 0) {
        alert(errorText);
	emailFieldObj.select();
	emailFieldObj.focus();
        return false;
    }

    var expires = new Date();
    expires.setTime(expires.getTime() + 180*24*60*60*1000); // 180 days
    setCookie('email', emailFieldObj.value, '/', expires, '.giving.org');
    document.getElementById('downloadRegistrationLink').href += '&email='+encodeURIComponent(emailFieldObj.value);

    hideLayer('downloadRegistration');

    return true;
}
