/* Copyright (C) 2009 Adobe Systems. */ // initialize temporary variables var found = false; var ahHomeValue; var page = extractRequestParameter('page'); /* The function processes the query from HIL and redirect accordingly. This is the method that is invoked by the HTML page. */ function processQuery() { readFileHttp('helpmap.txt', helpMapHandler); } /* Read a file using xmlhttprequest If the HTML file with your javascript app has been saved to disk, this is an easy way to read in a data file. Writing out is more complicated and requires either an ActiveX object (IE) or XPCOM (Mozilla). fname - relative path to the file callback - function to call with file text */ function readFileHttp(fname, callback) { var xmlhttp = getXmlHttp(); xmlhttp.onreadystatechange = function() { // if the ready state indicates file load is complete // invoke the call back function if(this.readyState == 4) { // check if the file was actually found on the server // this is indicated by HTTP status code 200 // a local file return HTTP 0 :) if(this.status == 200 || this.status == 0) { return callback(xmlhttp.responseText); } } } xmlhttp.open("GET", fname, true); xmlhttp.send(null); } /* Return a cross-browser xmlhttp request object. */ function getXmlHttp() { if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlhttp == null) { // the browser does not support AJAX // return and fall back to META refresh document.getElementById('contents').innerHTML = '

Redirecting...!

'; } return xmlhttp; } /* The function pases the helpmap.txt file looking for the given pageID. If it is not found, the value for AH_HOME is used. In case of any error, the function would terminate and logic would fall back to META refresh. */ function helpMapHandler(x) { // extract individual line from input var lines = x.split('\n'); for(var i = 0; i < lines.length; i++ ) { // tokenize each line - these are tab separated var tokens = lines[i].split('\t'); // check if atleast 2 tokens are present if(tokens.length > 2) { if(tokens[0] == page) { found = true; redirect(tokens[1]); break; } if(tokens[0] == 'AH_HOME') { ahHomeValue = tokens[1]; } } } if(!found) { redirect(ahHomeValue); } } /* The function extracts the query parameters from the request, for the given named parameter. If the parameter is not found, an empty String is returned. */ function extractRequestParameter(name) { name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( window.location.href ); if( results == null ) { return ""; } return results[1]; } /* Redirect the document to the given URI */ function redirect(x) { location.replace(x); }