/*****************************************************
 * Common Javascript functions
 *****************************************************/

function np() {
 return void(0)
}

function openWin(x,width,height) {
 window.open(x,null,"width="+width+",height="+height+",menubar=0,toolbar=0,resizable=0,scrollbars=1");
}

function chkForOther() {
 allNodes = document.getElementsByClassName('hideRow');
 if ($F('slOfficeTitleId') == $F('otherId')) {
  for(i = 0; i < allNodes.length; i++) {
   allNodes[i].style.display = '';
  }
 } else {
  for(i = 0; i < allNodes.length; i++) {
   allNodes[i].style.display = 'none';
  }
 }
}

function getListParties() {
 stateName = $F('slState')
 new Ajax.Updater('listParty', 'process/get.party.list.asp', {method: 'post', parameters: {stateName: stateName}});
}

function chkUserAvail(login) {
 if (login != '') {
  new Ajax.Updater('errMessage', 'process/chk.user.asp', {method: 'post', parameters: {userName: login}, onComplete: function() {formSubmit()}});
 }
}

function chkUrlAvail(url) {
 if (url != '') {
  new Ajax.Updater('errMessage', 'process/chk.url.asp', {method: 'post', parameters: {url: url}, onComplete: function() {formSubmit()}});
 }
}

function expColWelcome(typ) {
 if (typ == 'e') {
  $('moreWelcome').hide();
  new Ajax.Updater('moreWelcome', 'process/get.content.asp', {method: 'post', parameters: {typ: 'welcome'}, onComplete: function() { Effect.toggle('moreWelcome','slide'); }});
  $('moreWelcomeLink').innerHTML = '<a href="javascript:np()" onClick="expColWelcome(\'c\')">Collapse</a> [-]<br><br>';
 } else {
  Effect.toggle('moreWelcome','slide', {afterFinish:
   function() {
    $('moreWelcomeLink').innerHTML = '<a href="javascript:np()" onClick="expColWelcome(\'e\')">Read more</a> [+]<br><br>';
   }});
 }
}

function goToSection(secName) {
 if (secName == 'home') {
  $('otherContent').hide();
  new Effect.Appear('homeContent')
 } else {
  randNum = Math.floor(Math.random()*101);
  if (Element.visible($('homeContent'))) {
   $('homeContent').hide();
  } else {
   $('otherContent').hide();
  }
  new Ajax.Updater('otherContent', 'process/get.content.asp', {method: 'post', evalScripts: true, parameters: {ac: randNum, typ: secName}, onComplete:
   function() {
    Effect.Appear('otherContent');
    if (secName == 'getWidget') {
      loadSV();
      updateWidget();
    }
   }
  })
 }
}

function updateWidget() {
 txtWidget = '<script langauge="JavaScript" src="http://www.voterspace.com/widget.asp?id=' + + $F('candidateId') + '&cb=' + $F('widgetColorBack') + '&ct=' + $F('widgetColorText') + '&sz=' + $F('widgetSize') + '"></script>'
 $('txtWidget').value = txtWidget
 new Ajax.Updater('previewWidgetSrc', 'widget.asp?id=' + $F('candidateId') + '&cb=' + $F('widgetColorBack') + '&ct=' + $F('widgetColorText') + '&sz=' + $F('widgetSize') + '&oo=1')
}

var changeColorElem = '';

function setColor(wchType) {
 changeColorElem = wchType;
 if (wchType == 'b') {
  updateH(($('widgetColorBack').value).gsub('#',''));
 } else {
  updateH(($('widgetColorText').value).gsub('#',''));
 }
}

function mkColor(v) {
 if (changeColorElem == 'b') {
  $('widgetColorBack').value=v;
 } else {
  $('widgetColorText').value=v;
 }
}

function chkFormContact() {
 FirstName = document.contactForm.txtFirstName
 LastName = document.contactForm.txtLastName
 Address1 = document.contactForm.txtAddress1
 Address2 = document.contactForm.txtAddress2
 City = document.contactForm.txtCity
 Zip = document.contactForm.txtZip
 State = document.contactForm.slState
 Email = document.contactForm.txtEmail
 Phone = document.contactForm.txtPhone
 Fax = document.contactForm.txtFax

 var chkFilter=/^[a-zA-Z]+$/;
 if ((!(chkFilter.test(FirstName.value)) || (FirstName.value=='First Name'))) {
  alert("Please enter your first name.\nNo spaces or numerals are allowed.");
  FirstName.focus();
  return false;
 }

 if ((!(chkFilter.test(LastName.value)) || (LastName.value=='Last Name'))) {
  alert("Please enter your last name.\nNo spaces or numerals are allowed.");
  LastName.focus();
  return false;
 }

 if ((Address1.value == "") || (Address1.value=='Street Line 1')) {
  alert("Please enter your Address Line 1");
  Address1.focus();
  return false;
 }

 if ((City.value == "") || (City.value=='City')) {
  alert("Please enter City");
  City.focus();
  return false;
 }

 if (State.value == "0") {
  alert("Please select State");
  State.focus();
  return false;
 }

 var chkFilter=/(^\d{5}$)|(^\d{5}-\d{4}$)/;
 if (!(chkFilter.test(Zip.value))) {
  alert("Please enter valid Zip");
  Zip.focus();
  return false;
 }

 var chkFilter=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
 if (!(chkFilter.test(Email.value))) {
  alert("Please enter a valid email address");
  Email.focus();
  return false;
 }

 var chkFilter=/^[\d]{3}-[\d]{3}-[\d]{4}$/;
 if (!(chkFilter.test(Phone.value))) {
  alert("Please enter phone number in xxx-xxx-xxxx format.");
  Phone.focus();
  return false;
 }

 var chkFilter=/^[\d]{3}-[\d]{3}-[\d]{4}$/;
 if ((Fax.value != "") && (!(chkFilter.test(Fax.value))) && (Fax.value != "Fax number")) {
  alert("Please enter fax number in xxx-xxx-xxxx format.");
  Fax.focus();
  return false;
 }

 if (Address2.value=='Street Line 2') {
  Address2.value = '';
 }

 if (Fax.value=='Fax number') {
  Fax.value = '';
 }
 new Ajax.Updater('boxContactForm', 'process/candidate.contact.asp', {method: 'post', parameters: $('contactForm').serialize()})
}

function chkFormRegisterVote() {
 FirstName = document.registerVoteForm.txtfName
 LastName = document.registerVoteForm.txtlname
 Address1 = document.registerVoteForm.txtadd
 Address2 = document.registerVoteForm.txtadd2
 City = document.registerVoteForm.txtcity
 Zip = document.registerVoteForm.txtZip
 State = document.registerVoteForm.txtStateOption
 Email = document.registerVoteForm.txtemail
 Phone = document.registerVoteForm.txtphone
 AltPhone = document.registerVoteForm.txph

 var chkFilter=/^[a-zA-Z]+$/;
 if ((!(chkFilter.test(FirstName.value)) || (FirstName.value=='First Name'))) {
  alert("Please enter your first name.\nNo spaces or numerals are allowed.");
  FirstName.focus();
  return false;
 }

 if ((!(chkFilter.test(LastName.value)) || (LastName.value=='Last Name'))) {
  alert("Please enter your last name.\nNo spaces or numerals are allowed.");
  LastName.focus();
  return false;
 }

 if ((Address1.value == "") || (Address1.value=='Street Line 1')) {
  alert("Please enter your Address Line 1");
  Address1.focus();
  return false;
 }

 if ((City.value == "") || (City.value=='City')) {
  alert("Please enter City");
  City.focus();
  return false;
 }

 if (State.value == "0") {
  alert("Please select State");
  State.focus();
  return false;
 }

 var chkFilter=/(^\d{5}$)|(^\d{5}-\d{4}$)/;
 if (!(chkFilter.test(Zip.value))) {
  alert("Please enter valid Zip");
  Zip.focus();
  return false;
 }

 var chkFilter=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
 if (!(chkFilter.test(Email.value))) {
  alert("Please enter a valid email address");
  Email.focus();
  return false;
 }

 var chkFilter=/^[\d]{3}-[\d]{3}-[\d]{4}$/;
 if (!(chkFilter.test(Phone.value))) {
  alert("Please enter phone number in xxx-xxx-xxxx format.");
  Phone.focus();
  return false;
 }

 var chkFilter=/^[\d]{3}-[\d]{3}-[\d]{4}$/;
 if ((AltPhone.value != "") && (!(chkFilter.test(AltPhone.value))) && (AltPhone.value != "Secondary phone")) {
  alert("Please enter phone number in xxx-xxx-xxxx format.");
  AltPhone.focus();
  return false;
 }

 if (Address2.value=='Street Line 2') {
  Address2.value = '';
 }

 if (AltPhone.value=='Secondary phone') {
  AltPhone.value = '';
 }
 new Ajax.Updater('boxProcess', 'process/register.vote.asp', {method: 'post', evalScripts: true, parameters: $('registerVoteForm').serialize()})
 $('boxForm').innerHTML = '<br><b>Thank you for your registration!</b><br><br>You will receive an email shortly along with the Voter Registration State form. The Voter Registration application form is generated based on the Residence Address you have provided.<br><br>Please call us at our Toll Free number 1-888-WEB-2-WIN for all your questions and concerns.<br><br>';
}

function chkFormVolunteer() {
 FirstName = document.volunteerForm.txtFirstName
 LastName = document.volunteerForm.txtLastName
 Address1 = document.volunteerForm.txtAddress1
 Address2 = document.volunteerForm.txtAddress2
 City = document.volunteerForm.txtCity
 Zip = document.volunteerForm.txtZip
 State = document.volunteerForm.slState
 Email = document.volunteerForm.txtEmail
 Phone = document.volunteerForm.txtPhone
 Fax = document.volunteerForm.txtFax

 var chkFilter=/^[a-zA-Z]+$/;
 if ((!(chkFilter.test(FirstName.value)) || (FirstName.value=='First Name'))) {
  alert("Please enter your first name.\nNo spaces or numerals are allowed.");
  FirstName.focus();
  return false;
 }

 if ((!(chkFilter.test(LastName.value)) || (LastName.value=='Last Name'))) {
  alert("Please enter your last name.\nNo spaces or numerals are allowed.");
  LastName.focus();
  return false;
 }

 if ((Address1.value == "") || (Address1.value=='Street Line 1')) {
  alert("Please enter your Address Line 1");
  Address1.focus();
  return false;
 }

 if ((City.value == "") || (City.value=='City')) {
  alert("Please enter City");
  City.focus();
  return false;
 }

 if (State.value == "0") {
  alert("Please select State");
  State.focus();
  return false;
 }

 var chkFilter=/(^\d{5}$)|(^\d{5}-\d{4}$)/;
 if (!(chkFilter.test(Zip.value))) {
  alert("Please enter valid Zip");
  Zip.focus();
  return false;
 }

 var chkFilter=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
 if (!(chkFilter.test(Email.value))) {
  alert("Please enter a valid email address");
  Email.focus();
  return false;
 }

 var chkFilter=/^[\d]{3}-[\d]{3}-[\d]{4}$/;
 if (!(chkFilter.test(Phone.value))) {
  alert("Please enter phone number in xxx-xxx-xxxx format.");
  Phone.focus();
  return false;
 }

 var chkFilter=/^[\d]{3}-[\d]{3}-[\d]{4}$/;
 if ((Fax.value != "") && (!(chkFilter.test(Fax.value))) && (Fax.value != "Fax number")) {
  alert("Please enter fax number in xxx-xxx-xxxx format.");
  Fax.focus();
  return false;
 }

 if (Address2.value=='Street Line 2') {
  Address2.value = '';
 }

 if (Fax.value=='Fax number') {
  Fax.value = '';
 }
 new Ajax.Updater('boxForm', 'process/candidate.volunteer.asp', {method: 'post', parameters: $('volunteerForm').serialize()})
}

function chkFormNewsletter() {
 FirstName = document.newsletterForm.txtFirstName
 LastName = document.newsletterForm.txtLastName
 Zip = document.newsletterForm.txtZip
 State = document.newsletterForm.slState
 Email = document.newsletterForm.txtEmail

 var chkFilter=/^[a-zA-Z]+$/;
 if ((!(chkFilter.test(FirstName.value)) || (FirstName.value=='First Name'))) {
  alert("Please enter your first name.\nNo spaces or numerals are allowed.");
  FirstName.focus();
  return false;
 }

 if ((!(chkFilter.test(LastName.value)) || (LastName.value=='Last Name'))) {
  alert("Please enter your last name.\nNo spaces or numerals are allowed.");
  LastName.focus();
  return false;
 }

 if (State.value == "0") {
  alert("Please select State");
  State.focus();
  return false;
 }

 var chkFilter=/(^\d{5}$)|(^\d{5}-\d{4}$)/;
 if (!(chkFilter.test(Zip.value))) {
  alert("Please enter valid Zip");
  Zip.focus();
  return false;
 }

 var chkFilter=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
 if (!(chkFilter.test(Email.value))) {
  alert("Please enter a valid email address");
  Email.focus();
  return false;
 }
 new Ajax.Updater('boxForm', 'process/subscribe.newsletter.asp', {method: 'post', parameters: $('newsletterForm').serialize()})
}

function chkFormShout() {
 FirstName = document.shoutForm.txtFirstName
 LastName = document.shoutForm.txtLastName
 City = document.shoutForm.txtCity
 Zip = document.shoutForm.txtZip
 State = document.shoutForm.slState
 Email = document.shoutForm.txtEmail
 Phone = document.shoutForm.txtPhone
 Shout = document.shoutForm.txtShout

 var chkFilter=/^[a-zA-Z]+$/;
 if ((!(chkFilter.test(FirstName.value)) || (FirstName.value=='First Name'))) {
  alert("Please enter your first name.\nNo spaces or numerals are allowed.");
  FirstName.focus();
  return false;
 }

 if ((!(chkFilter.test(LastName.value)) || (LastName.value=='Last Name'))) {
  alert("Please enter your last name.\nNo spaces or numerals are allowed.");
  LastName.focus();
  return false;
 }

 if ((City.value == "") || (City.value=='City')) {
  alert("Please enter City");
  City.focus();
  return false;
 }

 if (State.value == "0") {
  alert("Please select State");
  State.focus();
  return false;
 }

 var chkFilter=/(^\d{5}$)|(^\d{5}-\d{4}$)/;
 if (!(chkFilter.test(Zip.value))) {
  alert("Please enter valid Zip");
  Zip.focus();
  return false;
 }

 var chkFilter=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
 if (!(chkFilter.test(Email.value))) {
  alert("Please enter a valid email address");
  Email.focus();
  return false;
 }

 var chkFilter=/^[\d]{3}-[\d]{3}-[\d]{4}$/;
 if ((Phone.value != "") && (!(chkFilter.test(Phone.value))) && (Phone.value != "Phone number")) {
  alert("Please enter phone number in xxx-xxx-xxxx format.");
  Phone.focus();
  return false;
 }

 if (Shout.value=='Your comments') {
  alert("Please enter your comments.");
  Shout.focus();
  return false;
 }
 new Ajax.Updater('boxForm', 'process/submit.shout.asp', {method: 'post', parameters: $('shoutForm').serialize()})
}

function chkFormInviteSpeak() {
 FirstName = document.inviteSpeakForm.txtFirstName
 LastName = document.inviteSpeakForm.txtLastName
 Email = document.inviteSpeakForm.txtEmail
 Phone = document.inviteSpeakForm.txtPhone
 EventName = document.inviteSpeakForm.eventName
 EventDate = document.inviteSpeakForm.eventDate
 EventTime = document.inviteSpeakForm.eventTime
 Comments = document.inviteSpeakForm.txtComments

 var chkFilter=/^[a-zA-Z]+$/;
 if ((!(chkFilter.test(FirstName.value)) || (FirstName.value=='First Name'))) {
  alert("Please enter your first name.\nNo spaces or numerals are allowed.");
  FirstName.focus();
  return false;
 }

 if ((!(chkFilter.test(LastName.value)) || (LastName.value=='Last Name'))) {
  alert("Please enter your last name.\nNo spaces or numerals are allowed.");
  LastName.focus();
  return false;
 }

 var chkFilter=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
 if (!(chkFilter.test(Email.value))) {
  alert("Please enter a valid email address");
  Email.focus();
  return false;
 }

 var chkFilter=/^[\d]{3}-[\d]{3}-[\d]{4}$/;
 if (!(chkFilter.test(Phone.value))) {
  alert("Please enter phone number in xxx-xxx-xxxx format.");
  Phone.focus();
  return false;
 }

 if ((EventName.value == "") || (EventName.value=='Event Name')) {
  alert("Please enter Event Name");
  EventName.focus();
  return false;
 }

 if (Comments.value=='Your comments') {
  alert("Please enter your comments.");
  Comments.focus();
  return false;
 }

 if (EventDate.value=='Event Date') {
  EventDate.value = '';
 }

 if (EventTime.value=='Event Time') {
  EventTime.value = '';
 }
 new Ajax.Updater('boxForm', 'process/invite.speak.asp', {method: 'post', parameters: $('inviteSpeakForm').serialize()})
}

function chkFormSpread() {
 YourName = document.spreadForm.txtYourName
 YourEmail = document.spreadForm.txtYourEmail
 FriendName = document.spreadForm.txtFriendName
 FriendEmail = document.spreadForm.txtFriendEmail
 EmailContent = document.spreadForm.txtEmail

 var chkFilter=/^[a-z A-Z]+$/;
 if (!(chkFilter.test(YourName.value))) {
  alert("Please enter your name");
  YourName.focus();
  return false;
 }

 if (!(chkFilter.test(FriendName.value))) {
  alert("Please enter your Friend's name");
  FriendName.focus();
  return false;
 }

 var chkFilter=/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
 if (!(chkFilter.test(YourEmail.value))) {
  alert("Please enter your valid email address");
  YourEmail.focus();
  return false;
 }

 if (!(chkFilter.test(FriendEmail.value))) {
  alert("Please enter your Friend's valid email address");
  FriendEmail.focus();
  return false;
 }

 if (EmailContent.value=='') {
  alert("This field cannot be blank");
  EmailContent.focus();
  return false;
 }
 new Ajax.Updater('boxForm', 'process/spread.word.asp', {method: 'post', parameters: $('spreadForm').serialize()})
}

var arrCompFieldNames = ["txtFirstName","txtLastName","txtAddress1","txtAddress2","txtCity","txtZip","txtEmail","txtPhone","txtFax","txtOrgName","txtUsername","txtOfficeTitleOther","txtShout","txtComments","eventName","eventDate","eventTime"]
var arrCompFieldVals = ["First Name","Last Name","Street Line 1","Street Line 2","City","Zip code","Email address","Phone number","Fax number","Campaign/Org name","Email address","Office Title","Your Comments","Your Comments","Event Name","Event Date","Event Time"]

function emptyValue(fieldName) {
 for (var i = 0; i < arrCompFieldNames.length; i++) {
  if (fieldName.name == arrCompFieldNames[i]) {
   if (fieldName.value == arrCompFieldVals[i]) {
    fieldName.style.color = '#000000';
    fieldName.value = '';
    break;
   }
  }
 }
}

function fillValue(fieldName) {
 if (fieldName.value == '') {
  for (var i = 0; i < arrCompFieldNames.length; i++) {
   if (fieldName.name == arrCompFieldNames[i]) {
    fieldName.style.color = '#000000';
    fieldName.value = arrCompFieldVals[i]
    break;
   }
  }
 }
}

function showmeter(x) {
 var pass=x.value;
 if(pass!="")
  nPerc = chkpwd(pass);
 else
  nPerc = 1;

  nPerc=nPerc * 2;
  if(nPerc >= 160) nPerc = 155;
  document.getElementById("tblarrow").width=nPerc;
}

function chkpwd(p) {
 var intScore = 0;
 intScore += p.length;
 if(p.length > 0 && p.length <= 4) {                    // length 4 or less
  intScore += p.length;
 }
  else if (p.length >= 5 && p.length <= 7) {	// length between 5 and 7
  	intScore += 6;
 }
 else if (p.length >= 8 && p.length <= 15) {	// length between 8 and 15
 	intScore += 12;
  }
 else if (p.length >= 16) {               // length 16 or more
  	intScore += 18;
  }

 if (p.match(/[a-z]/)) {              // [verified] at least one lower case letter
  	intScore += 1;
  }
 if (p.match(/[A-Z]/)) {              // [verified] at least one upper case letter
  	intScore += 5;
  }
  // NUMBERS
 if (p.match(/\d/)) {             	// [verified] at least one number
  	intScore += 5;
  }
 if (p.match(/.*\d.*\d.*\d/)) {            // [verified] at least three numbers
  	intScore += 5;
 }

 // SPECIAL CHAR
 if (p.match(/[!,@,#,$,%,^,&,*,?,_,~]/)) {           // [verified] at least one special character
  	intScore += 5;
 }
 // [verified] at least two special characters
 if (p.match(/.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~]/)) {
 	intScore += 5;
 }

 // COMBOS
 if (p.match(/(?=.*[a-z])(?=.*[A-Z])/)) {        // [verified] both upper and lower case
 	intScore += 2;
 }
 if (p.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/)) { // [verified] both letters and numbers
 	intScore += 2;
 }
 // [verified] letters, numbers, and special characters
 if (p.match(/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!,@,#,$,%,^,&,*,?,_,~])/)) {
  	intScore += 2;
 }
 return intScore;
}

function copy(text2copy) {
 if (window.clipboardData) {
  window.clipboardData.setData("Text",text2copy);
 } else {
  var flashcopier = 'flashcopier';
  if(!document.getElementById(flashcopier)) {
   var divholder = document.createElement('div');
   divholder.id = flashcopier;
   document.body.appendChild(divholder);
  }
  document.getElementById(flashcopier).innerHTML = '';
  var divinfo = '<embed src="grfx/_clipboard.swf" FlashVars="clipboard='+escape(text2copy)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
  document.getElementById(flashcopier).innerHTML = divinfo;
 }
 alert("Script has been copied into the Clipboard")
}