var ss = { protocolAndHostWithPort: 'http://www.delveapp.com', hostWithPort: 'www.delveapp.com' }; // These need to be defined in the calling file if(!ss) alert('ss has not been defined'); if(!ss.protocolAndHostWithPort) alert('ss.protocolAndHostWithPort has not been defined'); if(!ss.hostWithPort) alert('ss.hostWithPort has not been defined'); // window.location.search ss.qs = function(fragment, searchPortion){ var params = searchPortion.split("?"); params = params[1]; var parts = params.split("&"); for (i = 0; i < parts.length; i++) { var ft = parts[i].split("="); if (ft[0] === fragment) { return ft[1]; } } }; ss.getHostTag = function(doc, currentDomain) { if(doc.getElementById('rmg-script')) return doc.getElementById('rmg-script'); var scripts = doc.getElementsByTagName('script'); for(var ii = 0; ii < scripts.length; ii++) { var st = scripts[ii]; if(st.src.indexOf(currentDomain) > -1) { return st; } } return doc.getElementById('rmg-script'); }; ss.submit = function(e) { ss.go(document.getElementById('ss-searchTerm').value, 1); if (!e) var e = window.event; e.cancel = true; return false; }; ss.go = function(term, page) { var existing = document.getElementById('ss-data'); if(existing) { existing.parentNode.removeChild(existing); } var scr = document.createElement('script'); scr.type = 'text/javascript'; scr.id = 'ss-data'; scr.src = ss.protocolAndHostWithPort + '/search/perform?crawl_target_id=' + ss.accountId +'&term='+ term +'&start=' + page; document.getElementById('ss-submit').value = 'Searching...'; document.body.appendChild(scr); }; ss.createForm = function(doc, insertTarget) { if(!insertTarget) { return; } var script_tag = document.createElement('script'); script_tag.setAttribute('type', 'text/javascript'); script_tag.setAttribute('src', ss.protocolAndHostWithPort + '/javascripts/ssquery.js'); document.getElementsByTagName('head')[0].appendChild(script_tag); script_tag.onload = script_tag.onreadystatechange = function() { if(!this.readyState || this.readyState == "loaded" || this.readyState == "complete") { ss.runCreate(insertTarget); } } }; ss.runCreate = function(insertTarget) { ss.accountId = ss.qs('id', insertTarget.src); ss.targetId = ss.qs('t', insertTarget.src); var el = document.getElementById(ss.targetId); el.style.display = 'none'; var form = document.createElement('form'); form.id = 'ss-form'; form.onsubmit = ss.submit; var field = document.createElement('input'); field.id = 'ss-searchTerm'; var label = document.createElement('label'); label.innerHTML = 'Search:'; var button = document.createElement('input'); button.id = 'ss-submit'; button.type = 'submit'; button.value = 'Go'; form.appendChild(label); form.appendChild(field); form.appendChild(button); insertTarget.parentNode.insertBefore(form, insertTarget); } // called when the search results are available ss.callback = function() { document.getElementById('ss-submit').value = 'Go'; var el = document.getElementById(ss.targetId); var proceed = true; ssQuery('html, body').animate({ scrollTop: ssQuery('ss.submit').offset().top }, 500, function() { if(!proceed) { return; } proceed = false; ssQuery(el).slideUp(1000, function() { var noResultsPresent = ss.data.indexOf('"ss-result"') === -1; el.innerHTML = noResultsPresent ? '
No results.
' : ss.data; // add handlers ssQuery(el).find('#ss-paging a').click(function() { ss.go(document.getElementById('ss-searchTerm').value, this.title.split('-')[1]); return false; }); ssQuery(el).find('#ss-close').click(function() { ssQuery(el).slideUp(1000); return false; }); ssQuery(el).slideDown(1000, function() { if(noResultsPresent) { window.setTimeout(function() { ssQuery(el).slideUp(1000); }, 2000); } }); }); }); }; ss.createForm(document, ss.getHostTag(document, ss.hostWithPort));