<!--
// *********************************************************************************************************
// String Prototypes
// *********************************************************************************************************
String.prototype.ltrim = function() {return this.replace(/^\s*/, '');};
String.prototype.rtrim = function() {return this.replace(/\s*$/, '');};
String.prototype.trim = function() {return this.ltrim().rtrim();};
// *********************************************************************************************************
// Global Variables
// *********************************************************************************************************
var fd_isIE = (navigator.userAgent.indexOf('MSIE') == -1) ? false : true;		    // Internet Explorer?
var fd_isSafari = (navigator.userAgent.indexOf('Safari') == -1) ? false : true;		// Safari?
var fd_isFirefox = (navigator.userAgent.indexOf('Firefox') == -1) ? false : true;	// Firefox?
var fd_isOpera = (navigator.userAgent.indexOf('Opera') == -1) ? false : true;		// Opera?
var fd_isFormBeingSubmitted = false;                                                // Attempt to avoid duplicate form submits
// *********************************************************************************************************
function isDblClick(obj)
{
    var ret_val = false;
    try
    {
        if(!fd_isFormBeingSubmitted)
        {
            var obj_attr = "clicktime";
            var obj_attr_val = new Date().getTime();
            var has_attr = (eval("obj." + obj_attr)) ? eval("obj." + obj_attr) : null;
	        if(has_attr && ((obj_attr_val - has_attr) < 1000))
	        {
	            ret_val = true;
	        }
	        eval("obj." + obj_attr + "=" + obj_attr_val);
        }
	}
	catch(e){}
	finally
	{
	    return ret_val;
	}
}
function openWindow(url, w, h) 
{
    var options = "width=" + w + ",height=" + h + ",";
    options += "resizable=yes,scrollbars=yes,status=no,";
    options += "menubar=no,toolbar=no,left=0,top=0,directories=no";
    var newWin = window.open(url, 'newWin', options);
    newWin.focus();
}

function getRadioValue( radio )
{
    var ret_val = -1;
    // TYI:08/20/2008: Changed function to ensure radio value is returned if checked
    radio = (radio.length) ? radio : document.getElementsByName(radio.name);
    if(radio.length)
    {
        for(var i = 0; i < radio.length; i++)
        {   
            if(radio[i].checked)
            {
                ret_val = radio[i].value;
                break;
            }
        }
    }
    else if(radio.checked)
    {
        ret_val = radio.value;
    }
    return ret_val;
}

function CheckValidEmail( strEmail )
{
    /* email expression for testing
        ^(.+) 		= Any combination of characters at the beginning (^)
		@		    = Followed by an @ symbol
		(.+)		= Followed by any combination of characters
		\.		    = Followed by a dot
		(.{2,4})$	= Followed by a 2 - 4 character combination at the end ($)
	*/
	var exp_email = /^(.+)@(.+)\.(.{2,4})$/;

	// set the return value to the result of the test (true or false)
	return (strEmail == '') ? false : exp_email.test(strEmail);
}

function CheckContactRequest(p_lang_msg)
{
    /*
        07/24/2009: TYI:    Added the Global Variable, fd_isFormBeingSubmitted. This variable is set to true after successful validation.
                            Added if(fd_isFormBeingSubmitted) return false; to the beginning of this function in an attempt to avoid multiple submits
                            
        01/21/2009: TYI:    Added the p_lang_msg parameter. If present and there is an error, display the message passed in 
                            instead of the message set. This is to address Foriegn language contact us pages using this function.
    */
    
    if(fd_isFormBeingSubmitted) return false;
    
    var ret_val = true;
    var msg = '';
    var frm = (document.contact) ? document.contact : ((document.aspnetForm) ? document.aspnetForm : document.forms[0]);
    var fld_prefix = (frm.elements['ctl00$ctl00$Content$Main_Content_Right$contact_tbl$strFname']) ? 'ctl00$ctl00$Content$Main_Content_Right$contact_tbl$' : null;
    fld_prefix = ((fld_prefix==null) && frm.elements['ctl00$ctl00$Content$Main_Content_Main$contact_tbl$strFname']) ? 'ctl00$ctl00$Content$Main_Content_Main$contact_tbl$' : fld_prefix;

    if( frm.elements[fld_prefix + 'strFname'].value == "" ) 
    {
        msg = "You must enter your first name.";
        frm.elements[fld_prefix + 'strFname'].select();
    }
    else if( frm.elements[fld_prefix + 'strLname'].value == "" ) 
    {
        msg = "You must enter your last name.";
        frm.elements[fld_prefix + 'strLname'].select();
    }
    else if( frm.elements[fld_prefix + 'strTitle'].value == "" ) 
    {
        msg = "You must enter your title.";
        frm.elements[fld_prefix + 'strTitle'].select();
    }
    else if( frm.elements[fld_prefix + 'strCompany'].value == "" ) 
    {
        msg = "You must enter your company or organization's name.";
        frm.elements[fld_prefix + 'strCompany'].select();
    }
    else if( frm.elements[fld_prefix + 'strAddress1'].value == "" ) 
    {
        msg = "You must enter your street address.";
        frm.elements[fld_prefix + 'strAddress1'].select();
    }
    else if( frm.elements[fld_prefix + 'strCity'].value == "" ) 
    {
        msg = "You must enter your city.";
        frm.elements[fld_prefix + 'strCity'].select();
    }
    else if((frm.elements[fld_prefix + 'strCountry'].value == "1" || frm.elements[fld_prefix + 'strCountry'].value == "17" ) && (frm.elements[fld_prefix + 'strState'].value == "" || frm.elements[fld_prefix + 'strZip'].value == ""))    // strCountry=US or Canada
    {
        if( frm.elements[fld_prefix + 'strState'].value == "" ) 
        {
            msg = "You must enter your state.";
            frm.elements[fld_prefix + 'strState'].select();
        }     
        else if( frm.elements[fld_prefix + 'strZip'].value == "" ) 
        {
            msg = "You must enter your ZIP/Postal code.";
            frm.elements[fld_prefix + 'strZip'].select();
        }
    }
    else if( frm.elements[fld_prefix + 'strCountry'].value == 0 ) 
    {
        msg = "You must select a country from the dropdown list.";
        frm.elements[fld_prefix + 'strCountry'].select();
    }
    else if( frm.elements[fld_prefix + 'strPhone'].value == "" ) 
    {
        msg = "You must enter a daytime phone number.";
        frm.elements[fld_prefix + 'strPhone'].select();
    }
    else if(!CheckValidEmail(frm.elements[fld_prefix + 'strEmail'].value)) 
    {
        msg = "You must enter a complete, valid e-mail address.";
        frm.elements[fld_prefix + 'strEmail'].select();
    }
    else if( getRadioValue( frm.elements[fld_prefix + 'bCustomer'] ) == -1 ) 
    {
        msg = "You must indicate if you currently purchase or use any Fenner Drives products.";
    }
    
    if(msg == '')
    {
        frm.elements[fld_prefix + 'nID'].value = '1';
        fd_isFormBeingSubmitted = true;
    }
    else
    {
        ret_val = false;
        if(p_lang_msg && p_lang_msg != '')
        {
            var i_width = 300;
            var i_top = ((screen.height-i_width)/2);
            var i_left = ((screen.width-i_width)/2);
            window.scroll(0,0);
            // Tip(unescape(FD_Encode(p_lang_msg)),TITLE,'',CLOSEBTN,true,WIDTH,i_width,FIX,[i_left,i_top],DURATION,10000);
            TagToTip('validation_error',TITLE,'',CLOSEBTN,true,WIDTH,i_width,FIX,[i_left,i_top],DURATION,10000);
        }
        else
        {
            alert(msg);
        }
    }

    return ret_val;
}

function FD_Encode(p_str) {
     var encodedHtml = escape(p_str);
     encodedHtml = encodedHtml.replace(/\//g,"%2F");
     encodedHtml = encodedHtml.replace(/\?/g,"%3F");
     encodedHtml = encodedHtml.replace(/=/g,"%3D");
     encodedHtml = encodedHtml.replace(/&/g,"%26");
     encodedHtml = encodedHtml.replace(/@/g,"%40");
     return encodedHtml;
   } 


  function CheckLogin ( )
  {
    if (document.loginform.strUsername.value == "") 
    {
      alert("You must enter your username.");
      return false;
    }
    if (document.loginform.strPassword.value == "")
    {
      alert("You must enter a password.");
      return false;
    }
    return true;
  } 


  function ConfirmDelete( )
  {
    if( confirm("Are you sure that you wish to delete this entry?") ) 
      return true;
    else
      return false;
  }



function CheckRegistration()
{
    var ret_val = true;
    var frm = (document.reg_login) ? document.reg_login : ((document.aspnetForm) ? document.aspnetForm : document.forms[0]);
    // ctl00$ctl00$Content$Main_Content_Right$strEmailReg
    var fld_prefix = (document.aspnetForm) ? 'ctl00$ctl00$Content$Main_Content_Right$' : '';
    try
    {
        if(!CheckValidEmail( frm.elements[fld_prefix + 'strEmailReg'].value ) ) 
        {
            alert("You must enter a complete, valid e-mail address."); 
            ret_val = false;
        }
    }
    catch(e)
    {
        /* do nothing */
    }
    return ret_val;
  }




  function CheckContactRequestTTQ( )
  {
    if( document.contact.strFname.value == "" ) 
    {
      alert("You must enter your first name."); 
      return false;
    }
    if( document.contact.strLname.value == "" ) 
    {
      alert("You must enter your last name."); 
      return false;
    }
    if( document.contact.strTitle.value == "" ) 
    {
      alert("You must enter your title."); 
      return false;
    }
    if( document.contact.strCompany.value == "" ) 
    {
      alert("You must enter your company or organization's name."); 
      return false;
    }
    if( document.contact.strAddress1.value == "" ) 
    {
      alert("You must enter your street address."); 
      return false;
    }
    if( document.contact.strCity.value == "" ) 
    {
      alert("You must enter your city."); 
      return false;
    }
    
    if( document.contact.strZip.value == "" ) 
    {
      alert("You must enter your postal code."); 
      return false;
    }

    if( document.contact.strCountry.value == 0 ) 
    {
      alert("You must select a country from the dropdown list."); 
      return false;      
    }
    if( document.contact.strPhone.value == "" ) 
    {
      alert("You must enter a daytime phone number."); 
      return false;
    }
/*    if( document.contact.strFax.value == "" ) 
    {
      alert("You must enter a fax number."); 
      return false;
    } */

    if( !CheckValidEmail( document.contact.strEmail.value ) ) 
    {
      alert("You must enter a complete, valid e-mail address."); 
      return false;
    }

    if( getRadioValue( document.contact.bCustomer ) == -1 ) 
    {
      alert("You must indicate if you currently purchase or use any Fenner Drives products.");
      return false;
    }
    return true;
  }



  function CheckPartDownload( )
  {
    if( document.download.strPartNum.value == "" ) 
    {
      alert("You must enter a part number."); 
      return false;
    }    
    return true;
  }

/*
TYI:08/20/2008: Functions added for eNewsletter subscription pages
*/
function FD_ValidateSubscription(frm)
{
    var ret_val = true;
    var msg = 'Please make sure all fields marked with an asterisk are populated and try again';
    try
    {
        // make sure all required fields are populated
        for(var x = 0; x < frm.elements.length; x++)
        {
            if(_IsRequired(frm.elements[x].name))
            {
                switch(frm.elements[x].type)
                {
                    case 'text':
                        if(frm.elements[x].value.trim() == '') ret_val = false;
                        break;
                    case 'radio':
                        if(getRadioValue(frm.elements[x]) == -1) ret_val = false;
                        break;
                    default:
                        break;
                }
                if(ret_val == false)
                {
                    frm.elements[x].focus();
                    alert(msg);
                    break;
                }
            }
        }
        // if all required fields are populated
        if(ret_val)
        {
            // make sure the email address entered is valid
            if(!CheckValidEmail(frm.elements['str_email'].value.trim())) 
            {
                alert('You must enter a complete, valid e-mail address.');
                frm.elements['str_email'].select();
                ret_val = false;
            }
            else if(frm.elements['str_email'].value.trim() != frm.elements['str_email2'].value.trim())
            {
                alert('The confirmed email address does not match');
                frm.elements['str_email2'].select();
                ret_val = false;
            }
        }
    }
    catch(e)
    {
        ret_val = false;
    }
    finally
    {
        if(ret_val && frm.elements['a']) frm.elements['a'].value = '1';
        return ret_val;
    }
    
    function _IsRequired(n)
    {
        var ret_val = false;
        switch(n)
        {
            case 'str_fname':
            case 'str_lname':
            case 'str_email':
            case 'str_email2':
            case 'str_email_type':
                ret_val = true;
                break;
            default:
                ret_val = false;
        }
        return ret_val;
    }
}

function FD_ValidateConfirmation(frm)
{
    var ret_val = true;
    var msg = '';
    try
    {
        if((getRadioValue(frm.elements['str_cust_type']) == 'Other') && (frm.elements['str_cust_type_o'].value.trim() == ''))
        {
            msg = 'Please specify what type of customer you are.';
            frm.elements['str_cust_type_o'].select();
        }
        if(msg != '')
        {
            ret_val = false;
            alert(msg);
        }
    }
    catch(e)
    {
        ret_val = false;
    }
    finally
    {
        if(ret_val && frm.elements['a']) frm.elements['a'].value = '1';
        return ret_val;
    }
}

function FD_ValidateUnsubscribe(frm)
{
    var ret_val = true;
    try
    {
        if(frm.elements['str_comment'].value.trim() == '')
        {
            ret_val = false;
            frm.elements['str_comment'].select();
            alert('Please enter your comments and then try again.');
        }
    }
    catch(e)
    {
        ret_val = false;
    }
    finally
    {
        if(ret_val && frm.elements['a']) frm.elements['a'].value = '1';
        return ret_val;
    }
}

function FD_ValidateSubscriptionMgmt(frm)
{
    var ret_val = true;
    var msg = '';
    try
    {
        if((frm.elements['str_email_new'].value.trim() != '') && 
            !CheckValidEmail(frm.elements['str_email_new'].value.trim()))
        {
            frm.elements['str_email_new'].select();
            msg = 'Please enter a valid email address.';
        }
        else if((frm.elements['str_email_new'].value.trim() != '') && 
            (frm.elements['str_email_new'].value.trim() != frm.elements['str_email_new_c'].value.trim()))
        {
            frm.elements['str_email_new_c'].select();
            msg = 'The confirmed email address does not match.';
        }
        else if((getRadioValue(frm.elements['str_cust_type']) == 'Other') && 
            (frm.elements['str_cust_type_o'].value.trim() == ''))
        {
            frm.elements['str_cust_type_o'].select();
            msg = 'Please specify what type of customer you are.';
        }
        if(msg != '')
        {
            ret_val = false;
            alert(msg);
        }
    }
    catch(e)
    {
        ret_val = false;
    }
    finally
    {
        if(ret_val && frm.elements['a']) frm.elements['a'].value = '1';
        return ret_val;
    }
}

function FD_SelectAll(obj_nm,bln_ck) 
{
    try
    {
        var arr_obj = document.getElementsByName(obj_nm);
        for(var x = 0; x < arr_obj.length; x++)
        {
            arr_obj[x].checked = bln_ck;
        }
    }
    catch(e)
    {
        /* do nothing */
    }
}
/* Added by Terri Ilaria : 04/01/2008 */
function FD_OpenSurvey()
{
	try
    {
       	var url = 'http://www.surveymonkey.com/s.aspx?sm=WtvKQLpWpg8ck8h6_2fqDJcA_3d_3d';
		window.open(url,'survey','height=550,width=550,scrollbars=yes')
	}
	catch(e)
	{
        	/* do nothing */
	}
}

function MM_jumpMenu(targ,selObj,restore)
{
	try
	{
	    var str_val = selObj.options[selObj.selectedIndex].value;
	    if(str_val && (str_val != ""))
	    {
	        top.location.href = str_val;
        }
	}
	catch(e)
	{
		/* do nothing */
	}
}

/* Added by Terri Ilaria : 06/26/2008 */
function FD_isNumber(e)
{
	// this function was taken from a W3SCHOOLS example
	// URL Reference: http://www.w3schools.com/jsref/jsref_onkeypress.asp

	var keynum;
	var keychar;
	var numcheck;

	// IE
	if(window.event)
	{
		keynum = e.keyCode;
	}
	// Netscape/Firefox/Opera
	else if(e.which)
	{
		keynum = e.which;
	}

	// allow backspace, and delete for firefox / safari
	if((fd_isFirefox) && ((keynum == 8) || (keynum == undefined) || (keynum == 9)))
	{
		return true;
	}
	else if((fd_isSafari) && ((keynum == 8) || (keynum == 0) || (keynum == 9)))
	{
		return true;
	}
	else
	{
		keychar = String.fromCharCode(keynum);

		// regular expression to test for number
		numcheck = /\d/;

		// return the evaluation test as to whether or not the character is a number
		return numcheck.test(keychar);
	}
}

/* Added by Terri Ilaria : 06/26/2008 */
function FD_isAllowedChar(e,arr_char)
{
	var keynum;
	var keychar;
	var numcheck;
	var ret_val = false;

	// IE
	if(window.event)
	{
		keynum = e.keyCode;
	}
	// Netscape/Firefox/Opera
	else if(e.which)
	{
		keynum = e.which;
	}

	keychar = String.fromCharCode(keynum);

	for(var x = 0; x < arr_char.length; x++)
	{
		if(keychar == arr_char[x])
		{
			ret_val = true;
			break;
		}
	}

	return ret_val;
}

/* Added by Terri Ilaria : 06/26/2008 */
function FD_isValidNumber(obj, int_len, int_dec, str_dec)
{
	var ret_val = true;

	try
	{
		// split the value where the decimal place is
		var arr_num = obj.value.split(str_dec);
		var len_num = (arr_num[0]) ? arr_num[0].length : 0;
		len_num += (arr_num[1]) ? arr_num[1].length : 0;

		if(arr_num.length > 2)
		{
			throw 'Only one decimal place is allowed';
		}
		else if(parseInt(len_num) > parseInt(int_len))
		{
			throw 'The total number of digits can not exceed ' + int_len;
		}
		else if((arr_num[1]) && (parseInt(arr_num[1].length) > parseInt(int_dec)))
		{
			throw 'The number of digits after the decimal can not exceed ' + int_dec;
		}
	}
	catch(e)
	{
		var msg = (e.description) ? e.description : ((e.message) ? e.message : e);
		alert(msg);
		ret_val = false;
	}
	finally
	{
		return ret_val;
	}
}

function FD_GetTipText(str_category)
{
	var ret_val = '';	
	var msg = '';

	switch(str_category)
	{
		case 'step1':
			msg += '<div>Select the product that you are using for your application.</div>';
			msg += '<div><i>The options for step 2 will populate after making a product selection.</i></div>';
			break;
		case 'step2':
			msg += '<div>Select the unit of measure that is being used within your application.</div>';
			msg += '<div><i>The options for step 3 will populate after making a unit of measure selection.</i></div>';
			break;
		case 'step3':
			msg += '<div>Select the product series you have selected for your application.</div>';
			msg += '<div><i>The options for step 4 will populate after making a series selection.</i></div>';
			break;
		case 'step4':
			msg += '<div>Select the shaft diameter being used in your application.</div>';
			break;
		case 'step5':
			msg += '<div>Enter the <b>Yield Point</b> of your hub material in <b>pounds per square inch (psi)</b> or <b>newtons per square millimeter (N/mm<sup>2</sup>)</b>.</div>';
			msg += '<div>PSI example: For a hub made of AISI 1045 h.r. enter &quot;45000&quot;</div>';
			msg += '<div>If your application is metric and you are unsure of the N/mm<sup>2</sup> value, our converter can help. Just enter the PSI value and click the Convert button.</div>';
			break;
		case 'step6':
			msg += '<div>Enter the Length-thru-Bore of the component/hub to be mounted in <b>inches (in)</b> or <b>millimeters (mm)</b>.</div>';
			msg += '<div><i>Note that this calculation tool assumes the Keyless Bushing will be centered in the component/hub.</i></div>';
			break;
		case 'table1':
			msg += '<table width="450" border="1" bordercolor="#ccd6e0" cellpadding="0" cellspacing="0">';
			msg += '<tr valign="bottom"><td width="61%" class="pagehead">Cross Section</td><td width="39%" class="pagehead">Use Drill Bit</td></tr>';
			msg += '<tr valign="top"><td>1/4&quot;&ndash;5/16&quot;, 6mm&ndash;8mm, Z/10&ndash;A/13</td><td>5/64&quot;, 2mm</td></tr>';
			msg += '<tr valign="top"><td>3/8&quot;&ndash;1/2&quot;, 10mm&ndash;12mm, B/17</td><td>9/64&quot;, 3.5mm</td></tr>';
			msg += '<tr valign="top"><td>9/16&quot;&ndash;3/4&quot;, 15mm&ndash;18mm, C/22</td><td>13/64&quot;, 5mm</td></tr>';
			msg += '</table>';
			break;
		case 'table2':
			msg += '<table width="500" border="1" bordercolor="#ccd6e0" cellpadding="0" cellspacing="0">';
			msg += '<tr valign="bottom"><td width="61%" class="pagehead">Belt Size</td><td width="39%" class="pagehead">Estimated Heating Time</td></tr>';
			msg += '<tr valign="top"><td>3/32&quot; - 1/4&quot;, 2mm - 6mm, .055&quot; Thick Flats</td><td>&lt; 10 seconds</td></tr>';
			msg += '<tr valign="top"><td>5/16&quot;, 7mm - 9mm, all 3L, .06&quot; x .75&quot;, .06&quot; x 1.5&quot;, .08&quot; x .75&quot;, .09&quot; x 1.00&quot;, .13&quot; x .63&quot;</td><td>10 - 20 seconds</td></tr>';
			msg += '<tr valign="top"><td>3/8&quot;, 10mm, all A (except Hi-Ridge Top), .06&quot; x 1.75&quot;, .06&quot; x 2.00&quot;, .09&quot; x 1.25&quot;, .09&quot; x 1.50&quot;, .13&quot; x 1.00&quot;, .25&quot; x .63&quot;</td><td>21 - 30 seconds</td></tr>';
			msg += '<tr valign="top"><td>1/2&quot; - 9/16&quot;, 12mm - 15mm, all Twin, A Hi-Ridge Top, all B, .06&quot; x 3.00&quot;, .09&quot; x 2.00&quot;</td><td>31 - 50 seconds</td></tr>';
			msg += '<tr valign="top"><td>5/8&quot; - 3/4&quot;, all C, all D</td><td>&gt; 50 seconds</td></tr>';
			msg += '</table>';
			break;
	}

	if(msg != '')
	{
		ret_val += msg;
	}

	return ret_val;
}

function FD_ConvertPSI(str_psi,str_yld)
{
    try
    {
        var dbl_mult = parseFloat('0.00689475728');
        var elem_psi = (document.getElementById(str_psi)) ? document.getElementById(str_psi) : null;
        var dbl_psi = (elem_psi && elem_psi.value != '') ? parseFloat(elem_psi.value) : null;
        var elem_yld = (document.getElementById(str_yld)) ? document.getElementById(str_yld) : null;

        if((dbl_psi && (dbl_psi > 0)) && elem_yld)
        {
            elem_yld.value = (dbl_psi * dbl_mult).toFixed(3);
            elem_psi.value = '';
        }
    }
    catch(e)
    {
        var msg = (e.description) ? e.description : ((e.message) ? e.message : e);
		alert(msg);
    }
}
// -->