// javascript helpers // function goURL(destination) { location.href=destination; // if you don't want it in the history then use window.location.replace(destination); } function packArray(unpacked){ var packed = []; for (var i in unpacked) packed[i] = escape(unpacked[i]); return packed.join(";"); } function loadXMLDoc(fname) { var xmlDoc; if (window.ActiveXObject) { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } else if (document.implementation && document.implementation.createDocument) { xmlDoc=document.implementation.createDocument("","",null); } else { alert('Your browser cannot handle this script'); } xmlDoc.async=false; xmlDoc.load(fname); return(xmlDoc); } // if(window.attachEvent) window.attachEvent("onload",initiateRestoreStyles); function initiateRestoreStyles() { setTimeout("restoreStyles()",500); setTimeout("restoreStyles()",1000); } function restoreStyles() { inputList = document.getElementsByTagName("INPUT"); for (i=0;i47) lastcharpressed=String.fromCharCode(lastascpressed); return (true); } function keypressinit() { // initializes the KeyPress event handler when the page loads. trapKeyDownEvents(); self.focus; } function keyin(validcharacters,e) { // returns true if the last character struck is in the validcharacters or indeterminate or control eventObj=(document.all)?event:e; if (document.layers) { // NETSCAPE NAVIGATOR 4 lastascpressed=eventObj.which; } else if (document.all) { // INTERNET EXPLORER 4+ lastascpressed=eventObj.keyCode; } else if (document.getElementById) { // Netscape 6/Gecko lastascpressed=eventObj.which; } lastcharpressed=String.fromCharCode(lastascpressed); // denying $ sign to be pressed in number fields if (lastascpressed==36) return false; if (lastascpressed<48) return (true); if (lastascpressed>122) return (true); // alert(lastcharpressed+" in "+validcharacters+" at "+(validcharacters).indexOf(lastcharpressed)); if ((validcharacters).indexOf(lastcharpressed)<0) return (false); else return (true); } /////////// these use the keyhandlers function isnumbercharacter(e) { // returns true if the character is a number 0-9 return keyin(numbers,e); } function isfloatcharacter(e) { // returns true if the character is a number 0-9 or a decimal return keyin(numbers+decimals,e); } function isdatecharacter(e) { // returns true if the character is a date character 0-9 - return keyin(numbers+datechars,e); } function isphonecharacter(e) { // returns true if the character is a phone character )(- x return keyin(numbers+"ext )(.-",e); } function isemailcharacter(e) { // returns true if the character is an acceptable email character a-zA-Z0-9@._- return keyin(numbers+letters+"@_\.-",e); } function formatmy(datestr) { /* format month-year takes messy dates including short dates 3/02 and returns a date string pointing to the first day of the month e.g. 3/1/2002 */ /* use: onblur="javascript:this.value=formatmy(this.value)" */ /* for better results add onkeypress="return isdatecharacter(event);" to the form tag */ var curdate = new Date(); var curyear = (curdate.getYear()%100)+1980; // to project 20 years forward and 80 years back (for birthdays, etc) datestr = datestr.split("-").join("/").split(".").join("/").split(" ").join(""); if ( datestr == "" ) { return(datestr); } // split the datestr into a 3 part array (mm/dd/yy) var mmddyy = datestr.split("/"); if (mmddyy.length==2) { // bozo put in month/year mmddyy[2]=mmddyy[1]; mmddyy[1]=1; } if ( mmddyy.length != 3 ) { return("NaN"); } // convert the year to a four digit year if ( mmddyy[2].length == 2 ) { if ( Math.abs(curyear-parseFloat('19'+mmddyy[2])) <= Math.abs(curyear-parseFloat('20'+mmddyy[2])) ) { mmddyy[2] = '19'+mmddyy[2]; } else { mmddyy[2] = '20'+mmddyy[2]; } } // rebuild the datestr from the formatted array, and check to see if it contains a valid date var tmpdate = new Date( datestr=mmddyy.join("/") ); if ( tmpdate == "NaN" || tmpdate == "Invalid" ) return("BAD"); if ( parseFloat(mmddyy[0]) == tmpdate.getMonth()+1 && parseFloat(mmddyy[1]) == tmpdate.getDate() && parseFloat(mmddyy[2]) > 1900 && parseFloat(mmddyy[2]) < 2100 ) return(datestr); return("BAD"); } function formatdate(datestr) { var curdate = new Date(); var curyear = (curdate.getYear()%100)+1980; // to project 20 years forward and 80 years back (for birthdays, etc) datestr = datestr.split("-").join("/").split(".").join("/").split(" ").join(""); if ( datestr == "" ) { return(datestr); } // split the datestr into a 3 part array (mm/dd/yy) var mmddyy = datestr.split("/"); if ( mmddyy.length != 3 ) { return("NaN"); } // convert the year to a four digit year if ( mmddyy[2].length == 2 ) { if ( Math.abs(curyear-parseFloat('19'+mmddyy[2])) <= Math.abs(curyear-parseFloat('20'+mmddyy[2])) ) { mmddyy[2] = '19'+mmddyy[2]; } else { mmddyy[2] = '20'+mmddyy[2]; } } // rebuild the datestr from the formatted array, and check to see if it contains a valid date var tmpdate = new Date( datestr=mmddyy.join("/") ); if ( tmpdate == "NaN" || tmpdate == "Invalid" ) return("NaN"); if ( parseFloat(mmddyy[0]) == tmpdate.getMonth()+1 && parseFloat(mmddyy[1]) == tmpdate.getDate() && parseFloat(mmddyy[2]) > 1900 && parseFloat(mmddyy[2]) < 2100 ) return(datestr); return("NaN"); } function isvaliddate(datestr) { if ( datestr.length < 6 ) return false; var tmpdate = new Date(datestr); if (tmpdate == "NaN" || tmpdate == "Invalid") return(false); return true; } function infopopup(url) { var windowoptions='toolbar=no,width=640,height=480,titlebar=no,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no'; poppy=window.open(url,'poppy',windowoptions); poppy.focus(); return false; } function isvalidemail (emailStr,showAlerts) { var emailPat=/^(.+)@(.+)$/; var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; var validChars="\[^\\s" + specialChars + "\]"; var quotedUser="(\"[^\"]*\")"; var atom=validChars + '+'; var word="(" + atom + "|" + quotedUser + ")"; var userPat=new RegExp("^" + word + "(\\." + word + ")*$"); var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$"); var matchArray=emailStr.match(emailPat); if (matchArray==null) { if (showAlerts) alert("Email address seems incorrect \n\nCheck @ and .'s."); return false; } var user=matchArray[1]; var domain=matchArray[2]; if (user.match(userPat)==null) { if (showAlerts) alert("Email address seems incorrect \n\nCheck the part left of the @."); return false; } var domainArray=domain.match(domainPat); if (domainArray==null) { if (showAlerts) alert("Email address seems incorrect. \n\nCheck the part right of the @."); return false; } var atomPat=new RegExp(atom,"g"); var domArr=domain.match(atomPat); var len=domArr.length; if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) { if (showAlerts) alert("Email address seems incorrect. \n\nCheck the ending."); return false; } if (len<2) { if (showAlerts) alert("Email address seems incorrect. \n\nCheck the name between the @ and the ending."); return false; } return true; } function showDiv(divid, status) { if (status=='employment') { hideDiv('worktypeF'); hideDiv('worktypeP'); hideDiv('worktypeT'); if (document.getElementById('worktypeS')) hideDiv('worktypeS'); if (document.getElementById('worktypeI')) hideDiv('worktypeI'); } var divl=document.getElementById(divid) divl.style.display="block"; divl.style.visibility="visible"; } function hideDiv(divid) { var divl=document.getElementById(divid) divl.style.display="none"; divl.style.visibility="hidden"; } function showStyle(styleid) { showhideStyle(styleid, true); } function hideStyle(styleid) { showhideStyle(styleid, false); } function showhideStyle(styleid, showit) { var ie=(document.all)?true:false; var elements=(ie)?document.all:document.getElementsByTagName('*'); // var elements = document.getElementsByTagName(xxtagnamexx); for (var i=0; i function dateDiff(datevalue1, datevalue2) { date1 = new Date(); date2 = new Date(); diff = new Date(); if (isvaliddate(datevalue1)) { // Validates first date date1temp = new Date(datevalue1 + " " + "00:00:00am"); date1.setTime(date1temp.getTime()); } else return false; // otherwise exits if (isvaliddate(datevalue2) ) { // Validates second date date2temp = new Date(datevalue2 + " " + "00:00:00am"); date2.setTime(date2temp.getTime()); } else return false; // otherwise exits // sets difference date to difference of first date and second date diff.setTime(Math.abs(date1.getTime() - date2.getTime())); timediff = diff.getTime(); days = Math.floor(timediff / (1000 * 60 * 60 * 24)); return days; } function isValidTime(S) { return /^([01]?[0-9]|[2][0-3])(:[0-5][0-9])?$/.test(S) } function isValidCurrency(S) { if (S.length==0) return true; else return /^\d+(\.\d{0,2})?$/ .test(S); } function changeCSSStyle(id, newClass) { identity=document.getElementById(id); identity.className=newClass; } function new_win(target, w,h) { w1=window.open('', target,'resizable=no,menubar=no,status=no,scrollbars=yes,width='+w+',height='+h); } function flyUP(URL, w, h) { day = new Date(); id = day.getTime(); eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width='+w+',height='+h+',left = 0,top = 0');"); } lyr=null; xOs=6; yOs=15; function moveLyr(lyrObj,x,y) { lyrObj.top = y; lyrObj.left = x; } function mouseMove(e) { if (lyr) moveLyr(lyr,event.x + xOs + document.body.scrollLeft,event.y + yOs + document.body.scrollTop); } function showTip(which,MPX,MPY) { lyr = document.all[which].style; moveLyr(lyr,MPX + xOs + document.body.scrollLeft,MPY + yOs + document.body.scrollTop); document.onmousemove = mouseMove; lyr.visibility = "visible"; } function hideTip(which) { document.all[which].style.visibility = "hidden"; lyr=null; } function parseNumeric(value, type) { if (type=='float'){ if (value.length==0) return 0 else return parseFloat(value) } if (type=='int'){ if (value.length==0) return 0 else return parseInt(value) } } // extra-safe round function function round_decimals(original_number, decimals) { var result1 = original_number*Math.pow(10, decimals) var result2 = Math.round(result1) var result3 = result2/Math.pow(10, decimals) return result3; } var mainmenuitems=new Array(); // key is main menu id, value is array of menu objects var menuitems=new Array(); // key is main menu id, value is array of menu objects function add_mainmenu(itemname,itemlink) { if (itemlink.length>0) { mainmenuitems.push(new Menu(''+itemname+'')); } else { mainmenuitems.push(new Menu(itemname)); } menuitems[(mainmenuitems.length)-1]=new Array(); } function add_submenuitem(itemname,itemlink) { menuitems[(mainmenuitems.length)-1].push(new MenuItem(itemname,itemlink)); } function menuinit() { if (!window.standards) return; if (window.inited) return; ////////////////////////////////// GLOBAL OFFSET VARIABLES ////////////////////////////// if(bw.wIE || bw.ns) { menuOffsetTop = 3; // first level menu. smaller number is more up menuOffsetLeft = 2; // first level menu. smaller number is more right. } else if(bw.mIE) { menuOffsetTop = -1; // first level menu. smaller number is more right menuOffsetLeft = -6; // first level menu. smaller number is more right } else { menuOffsetTop = 0; } submenuOffsetTop = -14 ;// smaller number is closer to top if(bw.wIE) submenuOffsetLeft = -12; // left-side menu. smaller number is closer to menu else if(bw.mIE) submenuOffsetLeft = -4; // left-side menu. smaller number is closer to menu submenuOffsetRight = 0;// right-side menu. smaller number is closer to menu. ////////////////////////////////// creating menus ////////////////////////////// var uiMenubar = new Menubar(); // populate the menu bar for (mainmenuid in mainmenuitems) { uiMenubar.add(mainmenuitems[mainmenuid]); for (subitem in menuitems[mainmenuid]) { (mainmenuitems[mainmenuid]).add(menuitems[mainmenuid][subitem]); } } // turn on the menu bar uiMenubar.useMouseOver(); document.body.appendChild(uiMenubar); uiMenubar.setWidth("auto",0); window.inited = true; } ////////////////////////////////////// rss embedding ///////////// function buildTableFromURL(url, containerElement) { containerElement.append("
"); var returnObj = { url: arguments.url, containerElement: arguments.containerElement, getContent: function (){ var links=[]; $.ajax({ type: "GET", url: url, dataType: "xml", error: function(request,error) { alert('Error in buildTableFromRSS: '+ error + 'in url ' + url );}, success: function(xml) { links.push($(xml).find('title:eq(0)').text()); //get list of links from RSS $(xml).find('item').each(function(i){ var title = $(this).find('title').text(); var description = $(this).find('description').text(); var link = $(this).find('link').text(); links.push(''+title+'
'+description); }); buildTableFromArray(links, containerElement); } }); } } return returnObj; }; function buildTableFromArray(anArray, containerElement) { var postData="data="+packArray(anArray); $.ajax({ type: "POST", url: "/support/totable_fromarray.php", dataType: "text", error: function(request,error) { alert('Error in buildTableFromArray: '+error);}, data: postData, success: function(data) { var $response=$(data); containerElement.find("#loading:first").hide(); containerElement.append($response.html()); } }); } // displayHotCandidates("", $("#hotCandidatesContent")); var displayHotCandidates = function(id, containerElement) { var url = '/general_rss_candidates_by_facility.html?id=' + id; var HotTable = buildTableFromURL(url, containerElement); HotTable.getContent(); }; // $($("span:contains('Jobs')")[0]).click( // displayHotJobs("", $("#jobsContent")) // $(this).unbind("click", process_click); // ); var displayHotJobs = function(id, containerElement) { var url = '/general_rss_jobs_by_facility.html?id=' + id; var HotTable = buildTableFromURL(url, containerElement); HotTable.getContent(); }; var displayCandidateTooltip = function(id, containerElement){ var url = '/general_popup_candidate.html?id='+id; $.ajax({ type: "GET", url: url, dataType: "text", success: function(data) { containerElement.css('background-image:none;width:60%;'); containerElement.append(data); containerElement.find("div:first").hide(); //var api = containerElement.tooltip(); //api.hide(); //api.show(); } }); }; var manageCandidateTooltip = function(id, rid, containerElement){ var url = '/manage_popup_candidate.html?id='+id+'&returnto='+document.URL+"&userid="+rid; $.ajax({ type: "GET", url: url, dataType: "text", success: function(data) { containerElement.css('background-image:none;width:60%;'); containerElement.append(data); containerElement.find("div:first").hide(); //var api = containerElement.tooltip(); //api.hide(); //api.show(); } }); };