
function PreloadImages(length, path, type)  {
    for(var i = 0; i<=length; i++) {
	this[i]= new Image()
	this[i].src= path + i + type
    }
    return this;
}

	//overImg = new PreloadImages(10,'/policeone/data/images/mb_','.gif');
	//normImg = new PreloadImages(10,'/policeone/data/images/ma_','.gif');

function rollOn(num) {
    if(document.images) { 
	eval('document.images["norm'+num+'"].src='+'overImg[num].src');
    }
}

function rolloff(num) {
    if(document.images){
	eval('document.images["norm'+num+'"].src='+'normImg[num].src');
    }
}

function mOvr(src,clrOver) {
    if (!src.contains(event.fromElement)) {
	src.style.cursor = 'hand'; src.bgColor = clrOver;
    }
}

function mOut(src,clrIn) {
    if (!src.contains(event.toElement)) {
	src.style.cursor = 'default'; src.bgColor = clrIn;
    }
}

function sizeImg(obj, _width) {
    var tmpImg = new Image();
    tmpImg.src = obj.src;
    if (tmpImg.width > _width) { obj.width = _width; }
}

function PrinterFriendly760(url) {
    remote = window.open("","opener","scrollbars=1,resize=1,toolbar=1,width=760,height=500");
    remote.location.href=url;
    if (remote.opener == null) remote.opener = window;
}

function showText(obj) {
    obj.onmouseout = function() { window.status = ""; }
    window.status = obj.innerText;
}

function checkMail(mail) {
	var myRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return myRegExp.test(mail);
}

// from Root Header
function GoProd(s) {
    var d = s.options[s.selectedIndex].value;
    window.top.location.href = d;
    s.selectedIndex = 0;
}

function redirect(target_url) {
    document.location = target_url;
}

// Form checking utilities

function checkEmail(mail) {
	var myRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return myRegExp.test(mail);
}

function Wrong(obj, message) {
	alert(message);
	obj.focus();
	return false;
}

function getCookie(name) {

	var regExp 	= new RegExp(name + "=([^;]*)","gi");
	var ck 		= regExp.exec(String(document.cookie));	
	ck 			= RegExp.$1;

	return ck;
}


function httpRequest(url, encoding, toReceive) {
	/*var toResolve		= 10000;
	var toConnect		= 10000;
	var toSend			= 40000;

	var request;
	var WinHttpReq = null;

	var request = "";
	try {
	
		if(!WinHttpReq) try {
			WinHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");	
		} catch (e){}		

		if(!WinHttpReq) try {
			WinHttpReq=new ActiveXObject('Msxml2.XMLHTTP');
		} catch (e){}

		if(!WinHttpReq) try {
			WinHttpReq=new ActiveXObject('Microsoft.XMLHTTP');
		} catch (e){}

		if(!WinHttpReq) try {
			WinHttpReq=new XMLHttpRequest();
		} catch (e){}		
		
		WinHttpReq.open("GET", url, false);
		WinHttpReq.send();
		return WinHttpReq.responseText;

		
		if(WinHttpReq.StatusText == "OK") {
			request = BinaryToString1(WinHttpReq.ResponseBody, encoding);
		} else { request = "1- " + WinHttpReq.StatusText; }
	} catch(e) { request = "2- " + "WinHttpRequest has caused an error"; }
	return request;*/
	
	return httpRequestPost(url, encoding, toReceive,"");
}

function httpRequestPost(url, encoding, toReceive, params) {
	var toResolve		= 10000;
	var toConnect		= 10000;
	var toSend			= 40000;

	var request;
	var WinHttpReq = null;

	var request = "";
	try {
	
		if(!WinHttpReq) try {
			WinHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");	
		} catch (e){}		

		if(!WinHttpReq) try {
			WinHttpReq=new ActiveXObject('Msxml2.XMLHTTP');
		} catch (e){}

		if(!WinHttpReq) try {
			WinHttpReq=new ActiveXObject('Microsoft.XMLHTTP');
		} catch (e){}

		if(!WinHttpReq) try {
			WinHttpReq=new XMLHttpRequest();
		} catch (e){}	
	
	WinHttpReq.open("POST", url, false);
	WinHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	WinHttpReq.setRequestHeader('HTTP_COOKIE', document.cookie);
	
	WinHttpReq.send(params);
	return WinHttpReq.responseText;

		
		if(WinHttpReq.StatusText == "OK") {
			request = BinaryToString1(WinHttpReq.ResponseBody, encoding);
		} else { request = "1- " + WinHttpReq.StatusText; }
	} catch(e) { request = "2- " + "WinHttpRequest has caused an error"; }
	return request;
}

function checkCardNumber( cardNumber, cardType ){
 //amex + visa + mc + discover
//var reCard = /(^3[47]\d{13}$)|(^4\d{12}(\d{3})?$)|(^5[1-5]\d{14}$)|(^6(?:011|5[0-9]{2})[0-9]{12}$)/
//return reCard.test( cardNumber );

cardType = cardType.toLowerCase();

if ( cardType == "visa" || cardType == "mastercard" || cardType == "american express" || cardType == "discover" ){
	var reCard ; 
	switch( cardType ){
		case "visa" : reCard = /^4\d{12,15}$/ ; break;
		case "mastercard" : reCard = /^5\d{15}$/ ; break;
		case "american express" : reCard = /^3[47]{1}\d{13}$/ ; break;
		case "discover" : reCard = /^6011\d{12}$/  ; break;
		default : break ; 
	}
	if ( reCard.test(cardNumber) ){
		return true; 
	}
}
return false; 

}
function checkCardCode( code, cardType ) {
	cardType = cardType.toLowerCase();
	var reCardCode = /^\d{3}$/
	if ( cardType == "american express" ) {
		reCardCode = /^\d{4}$/
	}
	return reCardCode.test( code );

}
function validatePaymentForm( form ){
	var strError = "";
	with (form){
		if ( first_name.value == "" ) strError += "First Name\n";
		if ( last_name.value == "" ) strError += "Last Name\n";
		if ( card_type.value == "" ) strError += "Card Type\n";
		if ( !checkCardNumber(card_number.value, card_type.value)) strError += "Card Number\n";
		if ( !checkCardCode(card_code.value, card_type.value)) strError += "Card Code\n";
		if ( card_expires_month.value == "" ) strError += "Card Expires Month\n";
		if ( card_expires_year.value == "" ) strError += "Card Expires Year\n";
		if ( !checkMail(email.value)) strError += "Email\n";
		if ( address.value == "" ) strError += "Address\n";
		if ( city.value == "" ) strError += "City\n";
		if ( state.value == "" ) strError += "State\n";
		if ( ! checkzip(zip.value) ) strError += "Zip\n";
		if ( country.value == "" ) strError += "Country\n";
	}

	if (strError > "") {
		alert("Please check required fields:\n" + strError);
		return false;
	} else {
		return true;
	}
	return false;
}

function checkzip(zip) {
 var regexp=/[^\d\s\w]/g;
 return (!regexp.test(zip))&&(zip.length>0)&&(zip.length<=10);
}

function popupWnd(url, width, height){
if(isNaN(width)) width = 300;
if(isNaN(height)) height = 600;
	window.open(url, "_blank", "height=" + height + ",width" + width + ",directories=no,left=100,top=100,location=no,menubar=no,resizable=no,status=no,toolbar=no,scrollbars=yes" );
}

function cardExpiresMonthChange(obj){
  with(document) {
    var monthValue = getElementById('card_expires_month').options[getElementById('card_expires_month').selectedIndex].value;
    var yearValue = getElementById('card_expires_year').options[getElementById('card_expires_year').selectedIndex].value;
  
    if (yearValue > '' && yearValue == 9) {    
        if (monthValue !='' && parseInt(monthValue) > 0 && parseInt(monthValue) <=12 ){      
          var  selectMonth = parseInt(monthValue);
          var  currentMonth = 7;    
          if (selectMonth <= currentMonth) {  
            alert('The expire date of the card cannot be earlier than a current date.');            
            obj.selectedIndex = 0;
            getElementById('card_expires_month').focus();
          } 
       
        }  
    }   
  } 
}


function cardExpiresMonthSubmit(){
var flag = false;
  with(document) {
    var monthValue = getElementById('card_expires_month').options[getElementById('card_expires_month').selectedIndex].value;
    var yearValue = getElementById('card_expires_year').options[getElementById('card_expires_year').selectedIndex].value;
  
    if (yearValue > '' && yearValue == 9) {    
        if (monthValue !='' && parseInt(monthValue) > 0 && parseInt(monthValue) <=12 ){      
          var  selectMonth = parseInt(monthValue);
          var  currentMonth = 7;    
          if (selectMonth <= currentMonth) {               
            getElementById('card_expires_month').focus();            
          } 
          else {
            flag = true;
          }         
        }  
    }
    else if (yearValue > '' && !isNaN(parseInt(yearValue)) && monthValue !='' && parseInt(monthValue) > 0 && parseInt(monthValue) <=12){
      flag = true;      
    }   
  } 
return flag;  
}



function getSelectionStart(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', o.value.length)
		if (r.text == '') return o.value.length
		return o.value.lastIndexOf(r.text)
	} else return o.selectionStart
}

function ChangeFocus(input) {
var f = document.forms["f"]; 

if(getSelectionStart(input) == input.maxLength)
   with( f ){
          if(input.name == 'agPhone1') agPhone2.focus();
          if(input.name == 'agPhone2') agPhone3.focus();

          if(input.name == 'hmPhone1') hmPhone2.focus();
          if(input.name == 'hmPhone2') hmPhone3.focus();

          if(input.name == 'agOutPhone1') agOutPhone2.focus();
          if(input.name == 'hmOutPhone1') hmOutPhone2.focus();

          
          if(input.name == 'agFax1') agFax2.focus();
          if(input.name == 'agFax2') agFax3.focus();   }

}

function moveFocus(input){
var f = document.forms["f"]; 

if(getSelectionStart(input) == input.maxLength)
   with( f ){
          if(input.name == 'home_phone1') home_phone2.focus();
          if(input.name == 'home_phone2') home_phone3.focus();
          if(input.name == 'home_phone3') dept_phone1.focus(); 
          
         if( input.name == 'dept_phone1') dept_phone2.focus();
         if( input.name == 'dept_phone2') dept_phone3.focus();
         if( input.name == 'dept_phone3') {}
   }
}

function showAttendeeFields(off_count, sp_count){	
	if (isNaN( parseInt(off_count)) || parseInt(off_count) <= 0 ){
		off_count = 1;
	}
	if (isNaN( parseInt(sp_count))){
		sp_count = 0;
	}
	showAttendeeRows(parseInt(off_count), "idtr_off", document.getElementById("officer_numattend"));
	showAttendeeRows(parseInt(sp_count), "idtr_sp", document.getElementById("spouse_numattend"));
}

function showAttendeeRows(count, rowIdPrefix, elementToUpdate ) {
elementToUpdate.innerHTML = count;

  var z = count;
  var x = new Array(10);
  var ttr = "";
  for (i=1; i<=10; i++) {
    ttr = rowIdPrefix + i;
    x[i] = document.getElementById(ttr);
  }
  for (i=1; i<=10; i++) {
    if (i-1 < z) {
      x[i].style.display="block";
    } else {
      x[i].style.display="none";
    }
  }
}

function validateForwardEmails( form,  sendedEmails ){
	var errorText = "" ;
	var emailsInForm = "";
	with( form ){
		for( var i = 1; i <= 3 ; i++){
			var email = document.getElementById("fwd_email_" + i ).value ; 
			if ( email > "" ){
				if ( sendedEmails.indexOf(email) >= 0 ){
					errorText += "Confirmation email to " + email + " already sent\n"  ; 
					break;
				}
				if (!checkEmail(email) ){
					errorText += email + " is not correct email\n" ; 
				}
				if ( emailsInForm.indexOf(email) >= 0 ){
					errorText += email + " is duplicate\n";
				}
				var fname = document.getElementById("fwd_email_fname_" + i ).value ; 
				var lname = document.getElementById("fwd_email_lname_" + i ).value ; 
				if( !(fname > "") ){
					errorText += "Enter First Name for " + email + " \n";
				}
				if( !(lname > "") ){
					errorText += "Enter Last Name for " + email + " \n";
				}

				emailsInForm += email + "|"; 
			} 			
		}
		if ( !(  document.getElementById("fwd_email_1" ).value > "" ||  document.getElementById("fwd_email_2" ).value > "" || document.getElementById("fwd_email_3" ).value > "" ) ) {
		    errorText += "Please enter email(s)";
		}
	}
	if ( errorText > "" ) {
		document.forms["email_forward_form"].send.style.display="block";
		alert( errorText );
		return false;
	} else {
		return true; 
	}
}

function showLoader( show ){

	var btn = document.getElementById("submit-btn");
	var loader = document.getElementById("load") ; 
	if ( show ){
		btn.disabled = true ; 
		btn.style.display = "none";
		loader.style.display = "block";
	} else {
		btn.disabled = false;
		btn.style.display = "block";
		loader.style.display = "none";
	}
	
}

