﻿
// force hover on the current page in the sub nav.
function selectPageLink()
{
    var lastSlashPosition = location.href.lastIndexOf("/");   
    var fileName = location.href.substr(lastSlashPosition + 1);
    //cut off any query string info
    var aspxPosition = fileName.lastIndexOf("aspx");
    fileName = fileName.substr(0, aspxPosition + 4);
    if(fileName == "History.aspx" 
        || fileName == "News.aspx"
            || fileName == "Roster.aspx"
                || fileName == "AboutBBGun.aspx"
                || fileName == "AboutAirRifle.aspx"
                || fileName == "AboutAirPistol.aspx"
                || fileName == "AboutSmallBore.aspx")
        {
        //these are sub navs below the about us page. force the hover.
        //these are not graphics
        var selectSubPageLink = document.getElementById(fileName);
        selectSubPageLink.style.textDecoration = "none"; 
        selectSubPageLink.style.color = "#0d3e99";

        fileName = "AboutUs.aspx";
    }
    if(fileName != "CalendarEventDetails.aspx" && fileName != "ClubNewsDetails.aspx")
    {
        var selectPageAdminLink = document.getElementById(fileName);
        selectPageAdminLink.className= "active";
    }
}

// force hover on the current page in the admin nav.
function selectPageAdminLink()
{
    var lastSlashPos = location.href.lastIndexOf("/");    
    var fileName = location.href.substr(lastSlashPos + 1);
        fileName = fileName.substr(0, parseInt(fileName.lastIndexOf("aspx") + 4));
        
    var arMenu = docObj('menu').getElementsByTagName('a');
    var regEx  = new RegExp(fileName + '$', 'i');
    var aLnk;

    if (arMenu && arMenu.length)
    {
        for (var i = 0; i < arMenu.length; i++)
        {
            if (arMenu[i].href.match(regEx))
            { aLnk = arMenu[i]; break; }
        }
    }
    if (aLnk)
        aLnk.className = 'active';
}

/*************************************************************************
/* 03/06/2008 mn */

function doAdHover(obj,img,b)
{
    obj.src = 'images/sponsor/' + (b ? '' : 'g') + img;
}

function toggleAgeGroupSelection(obj,ageGroupId,DobId)
{
    if (obj.options[obj.selectedIndex].text.match(/shooter/gi))
    {
        docObj(ageGroupId).disabled = false;
        autoSelectAgeGroup(docObj(DobId),ageGroupId);
    }
    else
    {
        docObj(ageGroupId).options.selectedIndex = 0;
        docObj(ageGroupId).disabled = true;
    }
}

function autoSelectAgeGroup(obj,id)
{
    if (obj.value.match(/[0-9\/]{8,10}/))
    {
	    var val, yob, date, year;	     
	    date = new Date();
	    year = date.getFullYear();
	    yob  = obj.value.split('/')[2];
	    
	    var age = parseInt(year) - parseInt(yob);
	    switch (age)
	    {
	        case  8: case  9:                   val = 1; break;
	        case 10: case 11:                   val = 2; break;
	        case 12: case 13: case 14: case 15: val = 3; break;
	        default:                            val = 4; break;
	    }
	    docObj(id).options[val].selected = true;
    }
    else
        docObj(id).options[0].selected = true;
}

function toggleAgeGroupFilterSelection(obj,id)
{
    var selVal = obj.options[obj.selectedIndex].text.match(/shooter/gi);
    if (! selVal)
        docObj(id).options.selectedIndex = 0;
    docObj(id).disabled = !selVal;
}

function autoFillEndDate(val,id)
{
    var txtEndDate = dotNetObj(id);
    if (txtEndDate.value.length < 6)
        txtEndDate.value = val;
}

function autoSelectEndTime(obj,id)
{
    dotNetObj(id,'select').options.selectedIndex = obj.selectedIndex;
}

function toggleTimeSelection(obj)
{
    var arTimeDdl      = ['startTime','endTime'];
    var arTimePartsDdl = ['ddlTime','ddlMinutes','ddlMeridan'];
    
    if (obj.checked)
    {
        var startHour    = dotNetObj(arTimeDdl[0]+'_'+arTimePartsDdl[0],'select');
        var startMinute  = dotNetObj(arTimeDdl[0]+'_'+arTimePartsDdl[1],'select');
        var startMeridan = dotNetObj(arTimeDdl[0]+'_'+arTimePartsDdl[2],'select');
        
        var endHour      = dotNetObj(arTimeDdl[1]+'_'+arTimePartsDdl[0],'select');
        var endMinute    = dotNetObj(arTimeDdl[1]+'_'+arTimePartsDdl[1],'select');
        var endMeridan   = dotNetObj(arTimeDdl[1]+'_'+arTimePartsDdl[2],'select');
        
        startHour.value    = '8';  endHour.value    = '5';
        startMinute.value  = endMinute.value        = '00';
        startMeridan.value = 'am'; endMeridan.value = 'pm';
    }

    for (var i = 0; i < arTimeDdl.length; i++)
    {
        for (var n = 0; n < arTimePartsDdl.length; n++)
        {
            var id = arTimeDdl[i]+'_'+arTimePartsDdl[n];
            dotNetObj(id,'select').disabled = obj.checked;
        }
    }
}

function toggleCriticalQuestionDiv(chk)
{
    dotNetObj('divRandomCritical','div').style.display = (chk ? 'block' : 'none');
}
function adjustCriticalQuestionAmount(obj)
{
    if (isNaN(obj.value) || obj.value == '')
        obj.value = '0';
}

function toggleImageUploadView(obj,panelId)
{
    if (obj.className.match(/_Selected$/))
        return; // already selected;
    else
    {
        obj.className = 'ImageUploadTogglerBtn_Selected';

        if (obj.id.match(/_Upload$/))
        {        
            dotNetObj(obj.id.replace(/_Upload$/,'_View'),'div').className = 'ImageUploadTogglerBtn';
            
            docObj(panelId.replace(/pnlUpload$/,'pnlView')).style.display = 'none';
            docObj(panelId).style.display = 'block';
        }
        else if (obj.id.match(/_View$/))
        {
            dotNetObj(obj.id.replace(/_View$/,'_Upload'),'div').className = 'ImageUploadTogglerBtn';
            
            docObj(panelId.replace(/pnlView$/,'pnlUpload')).style.display = 'none';
            docObj(panelId).style.display = 'block';
        }    
    }
}

function toggleMedalImage(obj,b)
{
    if (b)
    {
        if (obj.className != 'selected')
            obj.className = 'active';
            
        dotNetObj('lblLevel','span').innerHTML = obj.alt;
    }
    else
    {
        if (obj.className != 'selected')
        {
            obj.className = '';
            var level = parseInt(dotNetObj('hdnLevel').value);
            var label = dotNetObj('lblLevel','span');
            switch (level)
            {
              case 1: label.innerHTML = 'Silver';   break;
              case 2: label.innerHTML = 'Gold';     break;
              case 3: label.innerHTML = 'Platinum'; break;
            }
        }
    }
}

function setSponsorLevel(obj)
{
    var level = 1;
   
    dotNetObj('imgMedalSilver','img').className = '';
    dotNetObj('imgMedalGold','img').className = '';
    dotNetObj('imgMedalPlatinum','img').className = '';
    
    switch(obj.alt.toLowerCase())
    {
        case   'silver': level = 1; break;
        case     'gold': level = 2; break;
        case 'platinum': level = 3; break;
    }
    
   dotNetObj('hdnLevel').value = level;
   obj.className = 'selected';
   dotNetObj('lblLevel','span').innerHTML = obj.alt;    
}

function initReportPrint(type,isSelection)
{
    var arIds    = new Array();
    var gridview = dotNetObj('gvOmni','table');
    
    if (type.match(/list/)) // grid-type reporting.. basically
    {    
        if (isSelection)
        {
            if (ValidGridSelectionMade())
            {
                var arChk = gridview.getElementsByTagName('input');
                if (arChk)
                {
                    for (var i = 0; i < arChk.length; i++)
                    {
                        if (arChk[i].type == 'checkbox' && arChk[i].checked)
                            arIds.push(arChk[i].value);               
                    }
                }
                else
                    return false;
            }
            else
                return false;
        }
        else
        {
            var arHdn = gridview.getElementsByTagName('input');
            if (arHdn)
            {
                for (var i = 0; i < arHdn.length; i++)
                {
                    if (arHdn[i].type == 'hidden' && arHdn[i].id && arHdn[i].id.match(/hdnSponsor$/))
                        arIds.push(arHdn[i].value);
                }
            }
            else
                return false;
        }
    }
    else
    {
        var Id = dotNetObj('hdnId').value;
        switch (type)
        {
            case 'sponsor':
                arIds.push(Id); break;
        }  
    
    }   
    
    var strIds = arIds.join(',');
    if (strIds.length > 0)
        docObj('ifrmReport').src = 'report.aspx?Type='+type.toLowerCase()+'&Ids=' + strIds;
    else
        return false;
}

function ValidGridSelectionMade()
{
    var isChecked = false;
    var gridId = 'gvOmni';
    
    var gridview = dotNetObj(gridId,'table');
    if (gridview)
    {
        var chkBoxes = gridview.getElementsByTagName('input');
        if (chkBoxes)
        {
            for (var i = 0; i < chkBoxes.length; i++)
            {
                if (chkBoxes[i].type == 'checkbox')
                {
                    if (chkBoxes[i].checked)
                    {
                        isChecked = true; break;
                    }
                }                
            }
        }
    }
    
    return isChecked;
}

function doReportPrint()
{
	window.frames[0].focus();
	window.frames[0].print();
}

function ScrollToDocObject(id)
{
    var y = findPos(docObj(id)).top;
    setTimeout("window.scrollTo(0,"+parseInt(y)+");",10);
}

function docObj(id)
{
    if (document.getElementById(id))
        return document.getElementById(id);
        
    return false;
}

function dotNetObj(id,tag)
{
    if (!tag) tag = 'input';
        
    var arFld = document.getElementsByTagName(tag);
    var serverCtrlName = id.replace(/_/g,'$');
    var regExId = new RegExp(id+"$", "ig");

    for (var i = 0; i < arFld.length; i++)
    {
        if (arFld[i].id)
        {            
            if (arFld[i].id.match(regExId))
                return arFld[i];
        }
        else if (arFld[i].name)
        {
            (arFld[i].name == serverCtrlName)
                return arFld[i];
        }
    }
    
    return false;
}

function findPos(obj) 
{
	var curleft = curtop = 0;
	if (obj.offsetParent)
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent)
		{
			curleft += obj.offsetLeft
			curtop  += obj.offsetTop
		}
	}
	return { left:curleft, top:curtop };
}

function addThisEvent(obj,evType,fn,useCapture)
{
	if (obj)
	{
		if(obj.addEventListener)
			obj.addEventListener(evType,fn,useCapture);
		else if(obj.attachEvent)
			obj.attachEvent('on'+evType,fn);
	}
}

function parsePhone(obj)
{
	var phoneREGEX_Replace = /[^0-9]/g
	obj.value = obj.value.replace(phoneREGEX_Replace, '');
	var newPhone = obj.value;
	
	if (newPhone.length == 10 || newPhone.length == 11) //go ahead and attempt to parse
	{
		if (newPhone.length == 11) // in case they do a little 1 + xxx-xxx-xxxx
			newPhone = newPhone.substr(1,10);
			
		var newPhoneMask = newPhone.substr(0,3) + '-' + newPhone.substr(3,3) + '-' + newPhone.substr(6,4);
		obj.value = newPhoneMask;
	}
}
function parseEmail(obj)
{
    obj.value = obj.value.replace(/[^0-9a-z\.\-_@]/gi,'');
}
function parseNumeric(obj)
{
    obj.value = obj.value.replace(/[^0-9]/g,'');
}


if (document.captureEvents)
	document.captureEvents(Event.ONKEYPRESS);

function charWatch(obj, type, e)
{
	var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
	if (key == 13)
		return true;

	var proceed = false; // preliminary conditional
	var allow = false;   // final value to return
		
	switch (type)
	{
	    case 'numeric':
	        // if a number was not pressed
	        proceed = (key < 48 || key > 57);
	        break;
	    case 'email':
	        // if a valid email chars were not pressed
	        proceed = (key < 48 || key > 57); // check numbers
	        if (proceed)
	        {
	            proceed = (key < 64 || key > 90); // check upper case
	            if (proceed)
	            {
	                proceed = (key < 97 || key > 122) // check lower case
	                if (proceed)
	                    proceed = (key != 45 && key != 46 && key != 95); // check -_@
	            }
	        }
	        break;
	}

	if (proceed)
	{
		// check for other keys that have special purposes
		if( key != 8 /* backspace */ && key != 9 /* tab */ &&   key != 13 /* enter */ &&
			key != 35 /* end */ &&      key != 36 /* home */ && key != 37 /* left */ &&
			key != 39 /* right */ &&	key != 46 /* del */
		   )
			allow = false;
		else
		{
			// for detecting special keys (listed above)
			// IE does not support 'charCode' and ignores them in keypress anyway
			if(typeof e.charCode != "undefined")
			{
				// special keys have 'keyCode' and 'which' the same (e.g. backspace)
				if(e.keyCode == e.which && e.which != 0)
					allow = true;
					
				// or keyCode != 0 and 'charCode'/'which' = 0
				else if(e.keyCode != 0 && e.charCode == 0 && e.which == 0)
					allow = true;
			}
		}
	}
	else
		allow = true;

	return allow;
}

var VALID_KEY_FOCUS = false;
function IgnoreHardReturn()
{
    document.onkeypress = 
        function(e)
        {
            var key = e ? e.which : window.event.keyCode;
            
            // if the enter key was pressed, return based on whether or not we're on a submit
            // button.. if not the enter key, then just ignore
            if (key == 13)
                return VALID_KEY_FOCUS;
            else
                return true;
        }
}

function SetAllButtonsWithEnterKeyWatch()
{
    var arBtn = document.getElementsByTagName('input');
    var arTxtArea = document.getElementsByTagName('textarea');
    if (arBtn.length && arBtn.length > 0)
    {
        for (var i = 0; i < arBtn.length; i++)
        {
            if (arBtn[i].type.match(/(submit|button|image)/i))
            {
                addThisEvent(arBtn[i],'focus',function(){ VALID_KEY_FOCUS = true; },true);
                addThisEvent(arBtn[i],'blur',function() { VALID_KEY_FOCUS = false; },true);
            }        
        }    
    }
    if (arTxtArea.length && arTxtArea.length > 0)
    {
        for (var i = 0; i < arTxtArea.length; i++)
        {
            addThisEvent(arTxtArea[i],'focus',function(){ VALID_KEY_FOCUS = true; },true);
            addThisEvent(arTxtArea[i],'blur',function() { VALID_KEY_FOCUS = false; },true);
        }    
    } 
}
//function SetValidKey(b) { VALID_KEY_FOCUS = b; }


/***** quick date stuff *****/

function validateFilterFields()
{
    var date_start = dotNetObj('txtDateStart');
    var date_end   = dotNetObj('txtDateEnd');
    var errLabel   = dotNetObj('lblDateEntryError','span');
    
    if (date_start.value.length > 0)
    {
         var dateREGEX = /^([0-9]{1,2})+\/+([0-9]{1,2})+\/+20([0-9]{2})$/;
         if (! date_start.value.match(dateREGEX) || ! isValidDate(date_start.value))
         {
	          errLabel.innerHTML = '<br /><br />Date(s) are an invalid format.';
	          return false;  
         }
    }
    if (date_end.value.length > 0)
    {
         var dateREGEX = /^([0-9]{1,2})+\/+([0-9]{1,2})+\/+20([0-9]{2})$/;
         if (! date_end.value.match(dateREGEX) || ! isValidDate(date_end.value))
         {
	          errLabel.innerHTML = '<br /><br />Date(s) are an invalid format.';
	          return false;  
         }
    }

    if (date_start.value.length > 0 && date_end.value.length > 0 && date_start.value != date_end.value)
    {
        if (! dateDiffCheck(date_start.value, date_end.value, '<') )
        {
            errLabel.innerHTML = '<br /><br />Start date cannot be greater than the end date.';
            return false;
        }
    }

    return true;
}

function dateDiffCheck(start_date, end_date, opr)
{
	var arStartDateParts = start_date.split('/');
    var arEndDateParts = end_date.split('/');	

	var startDate = new Date (arStartDateParts[2],arStartDateParts[0]-1,arStartDateParts[1],0,0,0);
	var endDate   = new Date (arEndDateParts[2],arEndDateParts[0]-1,arEndDateParts[1],0,0,0);

	switch (opr)
	{
		case  '<': ret = (startDate.getTime() <  endDate.getTime() ? true : false); break;
		case '<=': ret = (startDate.getTime() <= endDate.getTime() ? true : false); break;
		case  '>': ret = (startDate.getTime() >  endDate.getTime() ? true : false); break;
		case '>=': ret = (startDate.getTime() >= endDate.getTime() ? true : false); break;
		case  '=': ret = (startDate.getTime() == endDate.getTime() ? true : false); break;
		case '!=': ret = (startDate.getTime() != endDate.getTime() ? true : false); break;
	}
	
	return ret;
}

function isValidDate(dt)
{
    var returnType = true;
    var arDateParts = dt.split('/');
    var m = parseInt(arDateParts[0].replace(/^0/,''));
    var d = parseInt(arDateParts[1].replace(/^0/,''));
    var y = parseInt(arDateParts[2]);
    
    switch (m)
    {
        case 2: //february
            if (d==29) // check for leap year
                return isValidLeapYear(y);
              
            returnType = (d > 0 && d <= 28 ? true : false);
            break;
        case 1: case 3: case 5: case 7: case 8: case 10: case 12: // 31 day months
            returnType = (d > 0 && d <= 31 ? true : false);
            break;
        case 4: case 6: case 9: case 11: // 30 days have sept.. apr, june.. and novemba'
            returnType = (d > 0 && d <= 30 ? true : false);
            break;
        default: // invalid month
            returnType = false;
    }

    return returnType;
}

function isValidLeapYear(dt)
{
    var y;

    if (! isNaN(dt))
        y = dt;
    else
    {
        var arDateParts = dt.split('/');
        y = parseInt(arDateParts[2]);
    }
    
    for (var i = 2008; i <= y; i+=4)
        if (i == y) { return true; } else if (i > y) { return false; }
}

function getCurrentDate()
{
	var date = new Date();
	var m = date.getMonth() + 1;
	var d = date.getDate();
	var y = date.getFullYear();
	return m+'/'+d+'/'+y;
}