// this is the array of words and definitions that will be output by the php / asp var wordArray = [ ].sort(function(a, b) { return b[0].length - a[0].length; }); /*var wordArray = [ ['Accompanying dependant','Accompanying+dependant'], ['Alberta Immigrant Nominee Program','Alberta+Immigrant+Nominee+Program'], ['Alberta Provincial Nominee','Alberta+Provincial+Nominee'], ['Canadian citizen','Canadian+citizen'], ['Canadian Society of Immigration Consultants (CSIC)','Canadian+Society+of+Immigration+Consultants+%28CSIC%29'], ['Certificate of Nomination','Certificate+of+Nomination'], ['CIC','CIC'], ['Citizenship and Immigration Canada (CIC) Visa Office','Citizenship+and+Immigration+Canada+%28CIC%29+Visa+Office'], ['Common-law partner','Common%2Dlaw+partner'], ['Conjugal partner','Conjugal+partner'], ['National Occupational Classification','National+Occupational+Classification'], ['International Graduate','International+Graduate'], ['Candidate','Candidate'], ['Consulate','Consulate'], ['Dependent children','Dependent+children'], ['Alberta Employer','Alberta+Employer'], ['Embassy','Embassy'], ['Foreign national','Foreign+national'], ['High Commission','High+Commission'], ['Labour Market Opinion (LMO)','Labour+Market+Opinion+%28LMO%29'], ['Non-accompanying dependent','Non%2Daccompanying+dependent'], ['Permanent resident','Permanent+resident'], ['Permanent Resident Card','Permanent+Resident+Card'], ['Permanent resident visa','Permanent+resident+visa'], ['Principal applicant','Principal+applicant'], ['Refugee claimant','Refugee+claimant'], ['Semi-skilled worker','Semi%2Dskilled+worker'], ['Spouse','Spouse'], ['Study permit','Study+permit'], ['Temporary foreign worker','Temporary+foreign+worker'], ['Visitor visa','Visitor+visa'], ['Work permit','Work+permit'], ['Job','Job'], ['Licensed','Licensed'], ['Professional regulatory organization','Professional+regulatory+organization'], ['Registered','Registered'] ].sort(function(a, b) { return b[0].length - a[0].length; });*/ var wordCounts = {}; var maxCount = 1; function lookForTextNodes(node) { if (node.id && node.id == "breadcrumb") return; for (var i = 0; i < node.childNodes.length; i++) { var childNode = node.childNodes[i]; if (childNode.nodeType == 3) // text node { var nodeContent = childNode.nodeValue ? childNode.nodeValue : childNode.textContent; for (var j = 0; j < wordArray.length; j++) { while (nodeContent.toLowerCase().indexOf(wordArray[j][0].toLowerCase()) > -1) { if (wordCounts[wordArray[j][0].toLowerCase()] >= maxCount) break; var rex = new RegExp("([^~|\\w])(" + wordArray[j][0] + ")([^~|\\w])", "i"); nodeContent = nodeContent.replace(rex, "$1~~~$2|||" + wordArray[j][0] + "|||" + wordArray[j][1] + "~~~$3"); if (!wordCounts[wordArray[j][0].toLowerCase()]) { wordCounts[wordArray[j][0].toLowerCase()] = 1; } else { wordCounts[wordArray[j][0].toLowerCase()]++; } } } var newNodes = document.createElement("span"); var tmp = nodeContent.split("~~~"); if (tmp.length > 1) { for (var j = 0; j < tmp.length; j++) { if (tmp[j].indexOf("|||") > -1) { var tmp2 = tmp[j].split("|||"); var def = document.createElement("span"); def.className = "def"; def.title = "click for definition"; var fnClick; eval("fnClick = function() { retrieveDefinition('" + tmp2[1].replace("'", "\\'") + "', '" + tmp2[2].replace("'", "\\'") + "'); };"); def.onclick = fnClick; def.appendChild(document.createTextNode(tmp2[0])); newNodes.appendChild(def); } else { newNodes.appendChild(document.createTextNode(tmp[j])); } } node.replaceChild(newNodes, childNode); } } else if (childNode.tagName && childNode.tagName.toLowerCase() != "a" && childNode.tagName.toLowerCase() != "h1" && childNode.tagName.toLowerCase() != "h2" && childNode.tagName.toLowerCase() != "h3" && childNode.tagName.toLowerCase() != "h4" && childNode.tagName.toLowerCase() != "omit" && childNode.tagName.toLowerCase() != "img") { lookForTextNodes(childNode); } } } function retrieveDefinition(title, keyword){ var tempURL = "/immigration/css-js/definitions-return.asp?pairingDefinition="+keyword; $.ajax({ url: tempURL, cache: false, success: function(html){ popupModalMessage(title, html); } }); } function popupModalMessage(title, body) { jQuery("#modalDialog").remove(); jQuery('body').append('
'+body+'
'); placeholder = jQuery('#modalDialog'); //initialize the dialog placeholder.dialog({ resizable: false, modal: true }); //destroy the dialog and placeholder when it's closed placeholder.bind('dialogclose', function() { placeholder.dialog('destroy'); placeholder.remove(); }); } $(function() { lookForTextNodes(document.getElementById("content")); });