/*
    used for the login area on each page
*/
        $(function() {
            $(".usernameHint").focus(function() {
                if ($(this).val() == '')
                    $(this).toggleClass('usernameHint');
            });
            
            $(".usernameHint").blur(function() {
                if ($(this).val() == '')
                    $(this).toggleClass('usernameHint');
            });
            
            $(".passwordHint").focus(function() {
                if ($(this).val() == '')
                    $(this).toggleClass('passwordHint');
            });
            
            $(".passwordHint").blur(function() {
                if ($(this).val() == '')
                    $(this).toggleClass('passwordHint');
            });
        });



/*
    unobtrusively attach events to any object
    http://www.dustindiaz.com/rock-solid-addevent/
*/
function addEvent( obj, type, fn ) {
    if (obj.addEventListener) {
        obj.addEventListener( type, fn, false );
        EventCache.add(obj, type, fn);
    }
    else if (obj.attachEvent) {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
        obj.attachEvent( "on"+type, obj[type+fn] );
        EventCache.add(obj, type, fn);
    }
    else {
        obj["on"+type] = obj["e"+type+fn];
    }
}
var EventCache = function(){
    var listEvents = [];
    return {
        listEvents : listEvents,
        add : function(node, sEventName, fHandler){
            listEvents.push(arguments);
        },
        flush : function(){
            var i, item;
            for(i = listEvents.length - 1; i >= 0; i = i - 1){
                item = listEvents[i];
                if(item[0].removeEventListener){
                    item[0].removeEventListener(item[1], item[2], item[3]);
                };
                if(item[1].substring(0, 2) != "on"){
                    item[1] = "on" + item[1];
                };
                if(item[0].detachEvent){
                    item[0].detachEvent(item[1], item[2]);
                };
                item[0][item[1]] = null;
            };
        }
    };
}();
addEvent(window,'unload',EventCache.flush);

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/
function getElementsByClassName(className, tag, elm){
    var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
    var tag = tag || "*";
    var elm = elm || document;
    var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    var returnElements = [];
    var current;
    var length = elements.length;
    for(var i=0; i<length; i++){
        current = elements[i];
        if(testClass.test(current.className)){
            returnElements.push(current);
        }    
    }
    return returnElements;
}

// Print function
function printit(){
    if (window.print) {
        window.print() ;
    } else {
        alert('Please use the print feature of your browser.');
    }
} 

// Call from the onKeyPress event to limit text entry to only digits 0-9, delete, and backspace.
function digitsOnly(event) 
{
    if (window.Event)  // handle Netscape style 
    {
        return (event.which >= 48 && event.which <= 57 || event.which == 8 || event.which == 0);
    }
    else if (navigator.userAgent.indexOf("Mac") == -1)
    {
        // handle IE style (ignore Mac IE since key events are not supported)
        event.returnValue = (event.keyCode >= 48 && event.keyCode <= 57);
    }
}
// Call from the onKeyPress event to limit text entry to only digits 0-9, delete, and backspace.
function digitsAndDashesOnly(event) 
{
    // keycodes: <dash>=45
    if (window.Event)  // handle Netscape style
    {
        return ((event.which >= 48 && event.which <= 57) || event.which == 45 || event.which == 8 || event.which == 0);
    }
    else if (navigator.userAgent.indexOf("Mac") == -1)
    {
        // handle IE style (ignore Mac IE since key events are not supported)
        event.returnValue = (event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 45);
    }
}
// Call from the onKeyPress event to limit text entry to phone keypad (digits, letters, *, #), dash, delete and backspace.
function internationalPhoneKeysOnly(event)
{
    // fox codes: digits=48-57, letters=65-90 or 97-122, *=42, #=35, -=45, DEL=0, BACKSPACE=8
    // ie keycodes: digits=48-57, letters=65-90 or 97-122, *=42, #=35, -=45
    // Call from the onKeyPress event to allow digits, letters, delete, dash, and backspace.
    if (window.Event)  // handle Netscape style 
    {
        return ((event.which >= 48 && event.which <= 57) || (event.which >= 65 && event.which <= 90) || (event.which >= 97 && event.which <= 122) || event.which == 42 || event.which == 35 || event.which == 45 || event.which == 0 || event.which == 8);
    }
    else if (navigator.userAgent.indexOf("Mac") == -1)
    {
        // Handle IE style (ignore Mac IE since key events are not supported)
        event.returnValue = ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 65 && event.keyCode <= 90) || (event.keyCode >= 97 && event.keyCode <= 122) || event.keyCode == 42 || event.keyCode == 35 || event.keyCode == 45);
    }    
}
// Allow only up to a specific number of characters in a textarea
function limitMaxLength(event, ctl, maxChars) 
{
    var isValidLength = (ctl.value.length <= maxChars);
    if (window.Event) // handle Netscape style
    {
        return (isValidLength || event.which == 8 || event.which == 0);
    }
    else if (navigator.userAgent.indexOf("Mac") == -1)
    {
        event.returnValue = isValidLength;
    }
}
//Empty form fields
function clearText(objField){

    if (objField.id == "search")
    {
        document.getElementById(objField.id).value = '';
    }
    if (objField.id == "username" || objField.id == "password" )
    {
        document.getElementById('username').value = '';
        document.getElementById('password').value = '';
    }


    if (objField.defaultValue==objField.value)
    objField.value = "";
}
function resetText(objField){
    if (objField.value=="")
    objField.value = objField.defaultValue;
}
//JS for Suckerfish dropdown nav
sfHover = function() {
var sfEls = document.getElementById("nav").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
    sfEls[i].onmouseover=function() {
        this.className+=" sfhover";
    }
    sfEls[i].onmouseout=function() {
        this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
    }
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
 
//Search functions
function do_search()
{
    //Use form tags to keep querystrings(URLS) clean per Scope
       var numberForms = document.forms.length;
       var formIndex;
       for (formIndex = 0; formIndex < numberForms; formIndex++)
       {
            if (document.forms[formIndex].id == 'aspnetForm' || document.forms[formIndex].id == 'frmsearch')
            {
                document.forms[formIndex].action = "/full_search.aspx";
                document.forms[formIndex].submit();
            }
          
          //alert(document.forms[formIndex].id);
       }
    //document.forms['frmsearch'].submit();
}
//save_search called from Full Search.
function save_search(txtSearch)
{
    document.getElementById("search").value = txtSearch;
}
//SignIn functions
function do_signin()
{
    document.forms[0].action="/DMC_Login.aspx";
    document.forms[0].submit();
}
function go_seg(field,seg)
{
    //Use form tags to keep querystrings(URLS) clean per Scope
    document.getElementById('username').value = '';
    document.getElementById('password').value = '';
    document.getElementById(field).value = seg;
    document.forms[0].action="seg_search.aspx";
    document.forms[0].submit();
}
// convert password field to password when clicked into
function dss_addLoadEvent(fn) {
  if(typeof(fn)!="function")return;
  var tempFunc=window.onload;
  window.onload=function() {
    if(typeof(tempFunc)=="function")tempFunc();
    fn();
  }
}

// Example 2 (JS part 1)
function changeInputType(
  oldElm, // a reference to the input element
  iType, // value of the type property: 'text' or 'password'
  iValue, // the default value, set to 'password' in the demo
  blankValue, // true if the value should be empty, false otherwise
  noFocus) {  // set to true if the element should not be given focus
  if(!oldElm || !oldElm.parentNode || (iType.length<4) || 
    !document.getElementById || !document.createElement) return;
  var newElm = document.createElement('input');
  newElm.type = iType;
  if(oldElm.name) newElm.name = oldElm.name;
  if(oldElm.id) newElm.id = oldElm.id;
  if(oldElm.className) newElm.className = oldElm.className;
  if(oldElm.size) newElm.size = oldElm.size;
  if(oldElm.tabIndex) newElm.tabIndex = oldElm.tabIndex;
  if(oldElm.accessKey) newElm.accessKey = oldElm.accessKey;
  newElm.onfocus = function(){return function(){
    if(this.hasFocus) return;
    var newElm = changeInputType(this,'password',iValue,
      (this.value.toLowerCase()==iValue.toLowerCase())?true:false);
    if(newElm) newElm.hasFocus=true;
  }}();
  newElm.onblur = function(){return function(){
    if(this.hasFocus)
    if(this.value=='' || (this.value.toLowerCase()==iValue.toLowerCase())) {
      changeInputType(this,'text',iValue,false,true);
    }
  }}();
 // hasFocus is to prevent a loop where onfocus is triggered over and over again
  newElm.hasFocus=false;
  oldElm.parentNode.replaceChild(newElm,oldElm);
  if(!blankValue) newElm.value = iValue;
  if(!noFocus || typeof(noFocus)=='undefined') {
    window.tempElm = newElm;
    setTimeout("tempElm.hasFocus=true;tempElm.focus();",1);
  }
  return newElm;
}
// Example 2 (JS part 2)
dss_addLoadEvent(function(){
  // Normally I use object detection, however, in this case since I need to 
  // detect Konqueror and Safari which don't have unique objects,
  // I will use the user agent string to detect them. Only use this type of 
  // detection as a last resort.
  // I'm doing this because example 2 crashes Konqueror and Safari and 
  // generates errors in IE5/Mac
  var ua = navigator.userAgent.toLowerCase();
  if(!((ua.indexOf('konqueror')!=-1) && (document.all || 
    (ua.indexOf('khtml/3.4')!=-1))) && !(((ua.indexOf('safari')!=-1) && 
    !window.print) || (document.defaultCharset && !window.print))) {
      // Set the third value to the text you want to appear in the field.
      // changeInputType(document.forms[0].password,'text','password',false,true);
  }
});

// add alternating row colors to tables
function addAltRows()
{
     var objTableDivs = getElementsByClassName("tblcontent", "div", document.getElementById("maincontent1"));
     var objTR;
     
     for (var t=0;t<objTableDivs.length;t++) {         
         objTR = objTableDivs[t].getElementsByTagName('tr');         
         for (var i=0;i<objTR.length;i++) {              
            if (!(i%2)) {
                objTR[i].className = 'altrow';
            }           
         }
     }
}
addEvent(window, "load", addAltRows);
 

function popUp(objLink, w, h) {
    window.open(objLink.href, "popup", "width="+w+",height="+h+",scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no");
}

/*  hide and show content on click   */
function hideshow(objLink)
{
    var objHSBlock = objLink.parentNode.parentNode.parentNode;
    
    if (objHSBlock.className == "hsblock")
    {
        objHSBlock.className = "hsblock hsopen";
    } else {
        objHSBlock.className = "hsblock";
    }
    
}
/*  hide or show all blocks on click   */
function hideshowAll(strHideShow)
{
    var objHSBlocks = getElementsByClassName("hsblock", "div", document.getElementById("maincontent1"));
    var strHSClasses;
    
    if (strHideShow == "show")
    {
        strHSClasses = "hsblock hsopen";
    } else {
        strHSClasses = "hsblock";
    }
    
    for (var i=0;i<objHSBlocks.length;i++) {
        objHSBlocks[i].className = strHSClasses;
    }
    
}
 

/* standard form validation */
function validate(theForm)
    {
    var returnFlag;
    var frmLength;
    var firstBlank;
    var strEmailAddress;
    var strMessage;
        
    var arrReqFields = getElementsByClassName("required", "*", document.getElementById(theForm.id));
    
    strMessage = "Please complete all required fields.";
    firstBlank = -1;
    
    // loop through fields to clear out default values
    frmLength = arrReqFields.length;
    
    for (i=0; i<frmLength;i++){ 
        if(arrReqFields[i].value == "")
        {
            
            //arrReqFields[i].className = "required warning";
            $(arrReqFields[i]).addClass("warning");
            returnFlag = false;
            if(firstBlank == -1) {
                firstBlank = i;
            }
        }
        else if(arrReqFields[i].name.lastIndexOf("email") > -1) {
            strEmailAddress = arrReqFields[i].value;
            intAtPosition = strEmailAddress.indexOf("@");
            intLastDotPosition = strEmailAddress.lastIndexOf(".");
            if((strEmailAddress=="") || (intAtPosition == 0) || (intAtPosition == 1) || (intLastDotPosition == -1) || (intAtPosition > intLastDotPosition) || (intLastDotPosition+1 == strEmailAddress.length)){
                //arrReqFields[i].className = "required warning";
                $(arrReqFields[i]).addClass("warning");
                returnFlag = false;
                if(firstBlank == -1) {
                    firstBlank = i;
                    strMessage = "Please enter a valid email address";
                    
                }
            }
            else {
                $(arrReqFields[i]).removeClass("warning");
            }
        }
        else {
            //arrReqFields[i].className = "required";
            $(arrReqFields[i]).removeClass("warning");
        }
    }
        
    var arrReqSelect = getElementsByClassName("requiredselect", "*", document.getElementById(theForm.id));
    // loop through fields to clear out default values
    frmLength = arrReqSelect.length;    
    for (i=0; i<frmLength;i++){     
         if(arrReqSelect[i].value == "") {
             if((arrReqSelect[i].options[arrReqSelect[i].selectedIndex].text == "") || arrReqSelect[i].options[arrReqSelect[i].selectedIndex].text.indexOf("--") >= 0) {
                //arrReqSelect[i].className = "requiredselect warning";
                $(arrReqSelect[i]).addClass("warning");
                if(firstBlank == -1) {
                    firstBlank = 0;
                }
                returnFlag = false;
             } else {
                 //arrReqSelect[i].className = "requiredselect";
                 $(arrReqFields[i]).removeClass("warning");
             }
         }    
    }
    if(returnFlag == false)
        {
            alert(strMessage);
            arrReqFields[firstBlank].focus()
        }
        
    return returnFlag;
    }