
Event.observe(window,'load',init);function init(){if(!document.getElementById){return;}
var monthlyFeature=$('monthly-feature');if(monthlyFeature){rotateFeature();}
var mySearchField=$('searchRequest');if(mySearchField){mySearchField.observe('keyup',startSearch);mySearchField.observe('focus',turnOnSearchMenu);mySearchField.observe('blur',turnOffSearchMenu);}
var moreImage=$('moreImage');if(moreImage){moreImage.observe('click',toggleMore);}
attachRollOverListeners();var containerControl=$('floatingContainerControl');if(containerControl){containerControl.observe('click',hideContainer);}
var dialogBoxClose=$('dialogBoxClose');if(dialogBoxClose){dialogBoxClose.observe('click',closeDialogBox);dialogBoxClose.observe('mouseover',toggleImage);dialogBoxClose.observe('mouseout',toggleImage);}
var balloonBoxClose=$('balloonBoxClose');if(balloonBoxClose){balloonBoxClose.observe('click',hideBalloonBox);}
Event.observe(document,'click',hidePopUpMenu);}
function attachRollOverListeners(){var allImages=$T('img');for(var i=0;i<allImages.length;i++){var imageId=allImages[i].id;if(imageId){var imageElement=$(imageId);var imageLink=imageElement.up('a');if(imageLink){allImages[i].observe('mouseover',toggleImage);allImages[i].observe('mouseout',toggleImage);}}}}
function getSourceElement(e){var sourceElement;if(window.event&&window.event.srcElement){sourceElement=window.event.srcElement;}else if(e&&e.target){sourceElement=e.target;}
if(!sourceElement){return;}else{return sourceElement;}}
function rotateFeature(){var monthlyFeature=$('monthly-feature');var todaysDate=getTodaysDate();var monthDayYear=new Array();monthDayYear=todaysDate.split('/');var currentMonth=parseInt(monthDayYear[0])-1;var featureText=new Array();featureText[0]='The new year is a good time to make new resolutions. <br/><br/>Call now to get our recommendations for the new year 510-843-2010.';featureText[1]='Looking to make sense of the latest smartphone or mobile device? <br/><br/>Call now to get our insight on the latest mobile devices 510-843-2010.';featureText[2]='Is your data protected? Our backup strategies provide rock solid solutions.<br/><br/>Call now to get an evaluation of your backup system 510-843-2010.';featureText[3]='Need access to your files on the company server from home? Our remote access solutions provide safe, secure access to all your files.<br/><br/>Call now to get remote access 510-843-2010.';featureText[4]='ArcSource has over 10 years of experience in handling printing and plotting issues.<br/><br/>Call now to get support 510-843-2010.';featureText[5]='Email is the lifeblood of business. Spam the bane. <br/><br/>Call now to find out more about our email and spam solutions 510-843-2010.';featureText[6]='Need to collaborate with staff, contractors or other businesses?<br/><br/>Call now to get the latest collaboration tools 510-843-2010.';featureText[7]='Having difficult keeping track of your business?<br/><br/>Call now to get the latest business management tools 510-843-2010.';featureText[8]='Blogs provide a way to give timely insight to your clients and stay ahead of the competition.<br/><br/>Call now to get one started 510-843-2010.';featureText[9]="Don't let viruses, spyware and security threats take advantage you. Call now to improve your protection 510-843-2010.";featureText[10]='Keeping an eye your budget can be a difficult task. Call now to find out about the latest budgeting tools 510-843-2010.';featureText[11]='Still using a spreadsheet to track projects? Call now to find out about the latest project management tools 510-843-2010.';monthlyFeature.innerHTML=featureText[currentMonth];}
function toggleElement(element){$(element).toggle();}
function toggleImage(e){var imageModifier='_On';var period='.';var imageElement=getSourceElement(e);var imageId=imageElement.id;var imageObj=$(imageId);var imageSourceTxt=imageObj.src;var imageSourcePath=imageSourceTxt.split('/');var imageSourceName=imageSourcePath.pop();var sourceParts=imageSourceName.split(period);var imageTargetTxt='';if(imageSourceName.match(imageModifier)){var imageTargetName=sourceParts[0].replace(imageModifier,'')+period+sourceParts[1];var imageTargetPath=imageSourcePath.join('/');imageTargetTxt=imageTargetPath+'/'+imageTargetName;}else{var imageTargetName=sourceParts[0]+imageModifier+period+sourceParts[1];var imageTargetPath=imageSourcePath.join('/');imageTargetTxt=imageTargetPath+'/'+imageTargetName;}
imageObj.src=imageTargetTxt;}
function hideBalloonBox(){var ballBox=new BalloonBox;ballBox.closeBalloonBox();}
function getTodaysDate(){var dateObject=new Date();var currentMonth=dateObject.getMonth()+1;var currentDate=dateObject.getDate();var currentYear=dateObject.getFullYear();var todaysDate=currentMonth+'/'+currentDate+'/'+currentYear;return todaysDate;}
function setCookie(name,value,expires,path,domain,secure){var objDate=new Date();objDate.setTime(objDate.getTime());if(expires){expires=expires*1000*60*60*24;}
var expiresDate=new Date(objDate.getTime()+(expires));var myCookie=name+'=';myCookie+=escape(value);myCookie+=((expires)?';expires='+expiresDate.toGMTString():'');myCookie+=((path)?';path='+path:'');myCookie+=((domain)?';domain='+domain:'');myCookie+=((secure)?';secure':'');document.cookie=myCookie;}
function getCookie(name){var result='';var myCookie=' '+document.cookie+';';var searchName=' '+name+'=';var startOfCookie=myCookie.indexOf(searchName)
var endOfCookie;if(startOfCookie!=-1){startOfCookie+=searchName.length;endOfCookie=myCookie.indexOf(';',startOfCookie);result=unescape(myCookie.substring(startOfCookie,endOfCookie));}
return result;}
function $T(tagName){return document.getElementsByTagName(tagName);}
function getLabels(){var fieldLabels=$T('label');var labels=new Hash({});for(var i=0;i<fieldLabels.length;i++){var fieldLabelID=fieldLabels[i].htmlFor;var fieldLabelName=fieldLabels[i].firstChild.nodeValue;labels[fieldLabelID]=fieldLabelName;}
return labels;}
function printPage(){window.print();}
function getXPos(elmId){var xPos=$(elmId).offsetLeft;var tempElm=$(elmId).offsetParent;while(tempElm!=null){xPos+=tempElm.offsetLeft;tempElm=tempElm.offsetParent;}
return xPos;}
function getYPos(elmId){var yPos=$(elmId).offsetTop;var tempElm=$(elmId).offsetParent;while(tempElm!=null){yPos+=tempElm.offsetTop;tempElm=tempElm.offsetParent;}
return yPos;}
function validateForm(form){var formObj=$(form.id);var isValid=Validator.isValid(formObj);if(isValid){return true;}else{Validator.displayErrors();return false;}}
var Validator={};Validator.isValid=function(formObj){var myForm=formObj;var formElements=myForm.getElements();var invalidFieldLabels=new Array();var labels=getLabels();var numInvalidFields=0;for(var i=0;i<formElements.length;i++){var myFormFieldId=formElements[i].id;if(myFormFieldId){var formField=$(myFormFieldId);var formFieldName=$(myFormFieldId).name;var formFieldClass=formField.className;if(!formFieldName){alert('System error [validation.js]: form field name undefined after '+formElements[i-1].id);return false;}
if(Validator.omitField(myFormFieldId)){continue;}else{var phoneFieldRegEx=/phone|fax/i;var phoneTypeRegEx=/type/i;if(formFieldName.match(phoneFieldRegEx)&&!formFieldName.match(phoneTypeRegEx)){var validPhone=Validator.isValidPhone(formField);if(!validPhone){break;return false;}}
if(Validator.isInvalidField(myFormFieldId)){invalidFieldLabels.push(labels[myFormFieldId]);numInvalidFields++;}}}}
if(numInvalidFields>0){Validator.setInvalidFieldLabels(invalidFieldLabels);return false;}else{return true;}}
Validator.omitField=function(myFormFieldId){var myFormField=$(myFormFieldId);if(myFormField){var optionalRegEx=/optional/i;var myFormClassName=myFormField.className;if(myFormField.type=='hidden'||myFormField.type=='button'||myFormField.type=='image'){return true;}else if(myFormClassName.match(optionalRegEx)){return true;}else{return false;}}else{return true;}}
Validator.getLabels=function(){var fieldLabels=$T('label');var labels=new Hash({});for(var i=0;i<fieldLabels.length;i++){var fieldLabelID=fieldLabels[i].htmlFor;var fieldLabelName=fieldLabels[i].firstChild.nodeValue;labels[fieldLabelID]=fieldLabelName;}
return labels;}
Validator.isInvalidField=function(myFormFieldId){var myFormField=$(myFormFieldId);if(myFormField){if(window.ActiveXObject&&!myFormField.type){return false;}
if(myFormField.value==''){return true;}else if(myFormField.value==null){return true;}else if(myFormField.selectedIndex==0){return true;}else{return false;}}else{return false;}}
Validator.setInvalidFieldLabels=function(fieldLabels){Validator._invalidFieldLabels=fieldLabels;}
Validator._invalidFieldLabels;Validator.getInvalidFieldLabels=function(){return Validator._invalidFieldLabels;}
Validator.displayErrors=function(){var invalidFields=Validator.getInvalidFieldLabels();var headerText='Oops! Looks Like You Forgot Something';var bodyText='You have '+invalidFields.length+' invalid or blank fields:<br/><br/> -'+invalidFields.join('<br/> -')+'<br/><br/>';bodyText+=" Fix that up and you'll be good to go.";ErrorMessage.setHeader(headerText);ErrorMessage.setMessage(bodyText);ErrorMessage.displayMessage();}
Validator.isFieldChecked=function(listForm){var listCount=0;for(var i=0;i<listForm.length;i++){var field=listForm.elements[i];if(listCount>0){break;}
if(field.type=='checkbox'&&field.checked==true){listCount++;}}
if(listCount==0){alert('You have not selected any items from the list. Please select an item.');return false;}else{return true;}}
Validator.validatePhoneWithAutoCorrect=function(phoneField){var targetPhoneRegEx=/\d{3}-\d{3}-\d{3}/;var parensPhoneRegEx=/[(]\d{3}[)]\s+\d{3}-\d{3}/;var dotPhoneRegEx=/\d{3}[.]\d{3}[.]\d{3}/;var phoneNumber=phoneField.value;var phoneFieldName=phoneField.name;if(targetPhoneRegEx.test(phoneNumber)){return true;}else if(parensPhoneRegEx.test(phoneNumber)){var phoneArray=new Array();phoneArray=phoneNumber.split(/\s/);var areaCode=phoneArray[0].replace(/[(]/,'');areaCode=areaCode.replace(/[)]/,'');phoneField.value=areaCode+'-'+phoneArray[1];return true;}else if(dotPhoneRegEx.test(phoneNumber)){var phoneArray=new Array();phoneArray=phoneNumber.split('.');phoneField.value=phoneArray.join('-');return true;}else{return false;}}
Validator.validateWebsite=function(website){var webRegEx=/http:\/\/\w/;return webRegEx.test(website);}
Validator.validateIPV4Address=function(ipAddress){var ipV4Address=/\d+\.\d+\.\d+/;return ipV4Address.test(ipAddress);}
Validator.isFloat=function(number){var floatRegEx=/^\d+(.\d+)?$/;var decimalRegEx=/^.\d+$/;number=number.strip();if(number.match(floatRegEx)||number.match(decimalRegEx)){return true;}else{return false;}}
Validator.isValidPhone=function(phoneField){var phoneNumber=phoneField.value;var phoneFieldName=phoneField.name;var phoneFieldId=phoneField.id;if(validatePhoneWithAutoCorrect(phoneField)){return true;}else{var labels=getLabels();var headerText='Oops! Looks you entered the phone number incorrectly';var bodyText='Please enter the value for '+labels[phoneFieldId]+' in this format: xxx-xxx-xxxx';ErrorMessage.setHeader(headerText);ErrorMessage.setMessage(bodyText);ErrorMessage.displayMessage();return false;}}
function validatePhoneWithAutoCorrect(phoneField){var targetPhoneRegEx=/\d{3}-\d{3}-\d{3}/;var parensPhoneRegEx=/[(]\d{3}[)]\s+\d{3}-\d{3}/;var dotPhoneRegEx=/\d{3}[.]\d{3}[.]\d{3}/;var phoneNumber=phoneField.value;var phoneFieldName=phoneField.name;if(targetPhoneRegEx.test(phoneNumber)){return true;}else if(parensPhoneRegEx.test(phoneNumber)){var phoneArray=new Array();phoneArray=phoneNumber.split(/\s/);var areaCode=phoneArray[0].replace(/[(]/,'');areaCode=areaCode.replace(/[)]/,'');phoneField.value=areaCode+'-'+phoneArray[1];return true;}else if(dotPhoneRegEx.test(phoneNumber)){var phoneArray=new Array();phoneArray=phoneNumber.split('.');phoneField.value=phoneArray.join('-');return true;}else{return false;}}

var Paths={};Paths._rootUrl='http://www.arcsource.com/';Paths.getRootUrl=function(){return Paths._rootUrl;}
Paths.getRelativePath=function(){return document.location.pathname;}
var timeOut=500;var closeTimer=0;function showMenu(srcMenu){var menuAdj=new Hash;menuAdj['servicesPage']=-4;menuAdj['solutionsPage']=60;menuAdj['companyPage']=138;var servicesMenu=new Array();servicesMenu[0]=new Array('services/it_consulting_services.html','IT Consulting Services');servicesMenu[1]=new Array('services/on_site.html','ArcSource On Site');servicesMenu[2]=new Array('services/maintenance.html','Maintenance');servicesMenu[3]=new Array('services/assessments.html','Assessments');servicesMenu[4]=new Array('services/backups.html','Backups');servicesMenu[5]=new Array('services/collaboration.html','Collaboration');servicesMenu[6]=new Array('services/startups.html','Start Ups');servicesMenu[7]=new Array('services/hosting.html','Hosting');servicesMenu[8]=new Array('services/google_apps_local.html','Google Apps - SF Bay Area');servicesMenu[9]=new Array('services/google_apps_global.html','Google Apps - Full Circle');var solutionsMenu=new Array();solutionsMenu[0]=new Array('solutions/architects.html','Architects');solutionsMenu[1]=new Array('solutions/creative_firms.html','Graphic Design and PR Firms');solutionsMenu[2]=new Array('solutions/law_firms.html','Law Firms');solutionsMenu[3]=new Array('solutions/nonprofits.html','Non-Profits');solutionsMenu[4]=new Array('solutions/macintosh.html','Macintosh');solutionsMenu[5]=new Array('solutions/windows.html','Windows');var companyMenu=new Array();companyMenu[0]=new Array('company/philosophy.html','Our Philosophy');companyMenu[1]=new Array('company/client_relationships.html','Client Relationships');companyMenu[2]=new Array('company/our_people.html','Our People');companyMenu[3]=new Array('company/mission.html','Mission and Values');companyMenu[4]=new Array('company/news.html','News and Press Releases');var contactPage=new Array();if(window.ActiveXObject){var relativePath=Paths.getRelativePath();if(relativePath=='/index.html'){return;}}
var rootUrl=Paths.getRootUrl();var popUpMenu=$('popUpMenu');popUpMenu.hide();popUpMenu.innerHTML='';var menuContent=new Hash;menuContent['servicesPage']=servicesMenu;menuContent['solutionsPage']=solutionsMenu;menuContent['companyPage']=companyMenu;menuContent['contactPage']=contactPage;popUpMenuResults='';var menuId=srcMenu.id;var menuElm=$(menuId);var menuXPos=167+menuAdj[menuId];var menuYPos=78;popUpMenu.style.left=menuXPos+'px';popUpMenu.style.top=menuYPos+'px';if(menuContent[menuId].length!=0){for(var i=0;i<menuContent[menuId].length;i++){var path=rootUrl+menuContent[menuId][i][0];var title=menuContent[menuId][i][1];var menuStyle=i==menuContent[menuId].length-1?'style="border-bottom: solid 0px #B4C0D8"':'';popUpMenuResults+='<a href="'+path+'" class="menuTitle" onmouseover="cancelMenuTimer()"><div class="menuItem" '+menuStyle+'>'+title+'</div></a>';}
cancelMenuTimer();popUpMenu.innerHTML=popUpMenuResults;popUpMenu.show();}}
function cancelMenuTimer(){if(closeTimer){window.clearTimeout(closeTimer);closeTimer=null;}}
function hideMenuTimer(){closeTimer=window.setTimeout(hidePopUpMenu,timeOut);}
function hidePopUpMenu(){var popUpMenu=$('popUpMenu');if(popUpMenu){popUpMenu.hide();}}
var ErrorMessage={};ErrorMessage._headerText;ErrorMessage.setHeader=function(headerText){this._headerText=headerText;}
ErrorMessage.getHeader=function(){return this._headerText;}
ErrorMessage._bodyText;ErrorMessage.setMessage=function(bodyText){this._bodyText=bodyText;}
ErrorMessage.getMessage=function(){return this._bodyText;}
ErrorMessage._xPosition;ErrorMessage.setXPosition=function(xPosition){this._xPosition=xPosition;}
ErrorMessage.getXPosition=function(){return this._xPosition;}
ErrorMessage._yPosition;ErrorMessage.setYPosition=function(yPosition){this._yPosition=yPosition;}
ErrorMessage.getYPosition=function(){return this._yPosition;}
ErrorMessage._width;ErrorMessage.setWidth=function(width){this._width=width;}
ErrorMessage.getWidth=function(){return this._width;}
ErrorMessage._handleOrientation;ErrorMessage.setHandleOrientation=function(handleOrientation){this._handleOrientation=handleOrientation;}
ErrorMessage.getHandleOrientation=function(){return this._handleOrientation;}
ErrorMessage._type;ErrorMessage.setType=function(type){this._type=type;}
ErrorMessage.getType=function(){return this._type;}
ErrorMessage.displayMessage=function(){DialogBox.setHeader(this.getHeader());DialogBox.setMessage(this.getMessage());DialogBox.show();}
ErrorMessage.hideMessage=function(){closeBalloonBox();}
function closeDialogBox(){DialogBox.close();}
var DialogBox={};DialogBox._boxElement;DialogBox.getMaskElement=function(){var maskElem=$('mask');return maskElem;}
DialogBox.getBoxElement=function(){var dialogBoxElem=$('dialogBox');return dialogBoxElem;}
DialogBox.getHeaderElement=function(){var dialogHeaderElem=$('dialogHeader');return dialogHeaderElem;}
DialogBox.getContentElement=function(){var dialogMessageElem=$('dialogMessage');return dialogMessageElem;}
DialogBox._headerText;DialogBox.setHeader=function(headerText){this._headerText=headerText;}
DialogBox.getHeader=function(){return this._headerText;}
DialogBox._message;DialogBox.setMessage=function(message){this._message=message;}
DialogBox.getMessage=function(){return this._message;}
DialogBox.show=function(){var maskElem=DialogBox.getMaskElement();var dialogBoxElm=DialogBox.getBoxElement();var dialogHeaderElem=DialogBox.getHeaderElement();var dialogContentElem=DialogBox.getContentElement();maskElem.style.display='block';maskElem.setStyle({opacity:0.5});var dialogHeader=DialogBox.getHeader();dialogHeaderElem.innerHTML=dialogHeader;var dialogMessage=DialogBox.getMessage();dialogContentElem.innerHTML=dialogMessage;new Effect.Appear(dialogBoxElm);}
DialogBox.close=function(){var maskElem=DialogBox.getMaskElement();var dialogBoxElm=DialogBox.getBoxElement();new Effect.Fade(maskElem);new Effect.SwitchOff(dialogBoxElm);}