var rte;var jsTotalCount,jsLoadedCount=0,jsVersion="unknown";var objTPane,objLPane,objRPane,objMapPane,objTablePane,objVSplit;var objLoadLog,objLoadLogin,objLoginErr;var objUserData,objNewRoutes;var tooltipStyle,aryButtons;var aryFaults=[];var JSONP_BASE="http://route.grough.co.uk/jsonp/";var AJAX_BASE="/jsonp/";var MAIN_SITE="http://dev.grough.co.uk/";var MIN_WIDTH=950;var MIN_HEIGHT=650;if(!bvSupported){alert("Sorry, but grough route doesn't support the browser you're using (Internet Explorer 6\nor below). Please upgrade to a newer version of Internet Explorer or an alternative browser. \nFor more information on supported browsers please see the main grough website. Alternatively \nyou may be able to use Google Chrome Frame to access grough route with this browser.");exit}var objWindow=window.open("","","width=1,height=1,left=0,top=0,scrollbars=no");if(!objWindow){alert("Please add this site to the allowed list for popup windows before logging in, otherwise you may lose data during some operations.");aryFaults.push("This domain needs an exception to allow popup windows.")}else{if(objWindow.close){objWindow.close()}}function testBrowser(){if(document.createElement){var a=document.createElement("p");if(a&&a.setAttribute){a.setAttribute("oncontextmenu","");if(typeof a.oncontextmenu=="undefined"){aryFaults.push("Enable detecting context menu events in JavaScript options.<br />See <em>Preferences &raquo; Advanced &raquo; Content</em>.")}}a=null}if(navigator.userAgent.toLowerCase().indexOf("msie")>-1||navigator.userAgent.toLowerCase().indexOf("chrome")>-1){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&navigator.userAgent.toLowerCase().indexOf("chromeframe")<0){aryFaults.push('No print preview is available when using Google Chrome or Google Chrome Frame, but maps should print correctly provided you can configure your printer to landscape.<br /><br />If you are using Google Chrome Frame with Internet Explorer, and experience problems, you can <a href="/?disable-chrome-frame=1">switch back</a> or uninstall Google Chrome Frame.')}else{if(navigator.userAgent.toLowerCase().indexOf("chromeframe")<0){aryFaults.push("<strong>Running slow?</strong><br /><br />Internet Explorer performs slowly with JavaScript. Please read <a href=\"javascript:void(0);\" onclick=\"window.open('http://www.grough.co.uk/route/performance/','mainSite','');\">this page</a>.")}else{aryFaults.push('Google Chrome Frame is disabled, if you\'d like you can <a href="/">turn it back on</a>.')}}}if(navigator.userAgent.toLowerCase().indexOf("firefox/3.")>-1){aryFaults.push("If the browser context menu shows when right-clicking, please find and enable the following setting:<br /><br />Tools &raquo; <br />Options &raquo; <br />Content &raquo; <br />Advanced (JavaScript) &raquo; <br />Disable or replace context menus")}}testBrowser();function addLog(a,c){var b=new Date();if(c==undefined){c=""}c=c+" "+b.toLocaleTimeString();objLoadLog.prepend('<div class="lft">'+c+"</div>"+a+"<br />")}$(document).ready(function(){$("#no-js-error").remove();if(aryFaults.length>0){var b="";for(var a=0;a<aryFaults.length;a++){b+="<li>"+aryFaults[a]+"</li>"}$("body").html('<div id="window-faults" class="window" style="width: 250px; height: 310px; margin: 15px"><div class="m" style="height: 285px;"><div class="tl"></div><div class="tr"></div><div class="t" style="width: 225px"></div><div class="l"></div><div class="r"></div><div class="c"><div class="innerbody"><strong>Compatibility Information</strong><br /><ul class="error-list">'+b+'</ul></div></div></div><div class="bs"><div class="bl"></div><div class="br"></div><div class="b" style="width: 225px"></div></div></div>')}doLoginForm()});function doLoginForm(a){if($("#window-load").length){return}$('<div id="cover-lock"><div id="window-load" class="window" style="width: 500px; height: 510px"><div class="m" style="height: 485px;"><div class="tl"></div><div class="tr"></div><div class="t" style="width: 475px"></div><div class="l"></div><div class="r"></div><div class="c"><div class="large-logo"></div><div class="innerbody"></div></div></div><div class="bs"><div class="bl"></div><div class="br"></div><div class="b" style="width: 475px"></div></div></div></div>').css("margin",($(document).height()-510)/2+"px "+($(document).width()-500)/2+"px").appendTo("body");$(window).resize(function(c){$("#cover-lock").width("100%").height("100%").css({margin:"auto"});$("#window-load").css("margin",($(document).height()-510)/2+"px "+($(document).width()-500)/2+"px")});objLoadLog=$('<div id="load-log"></div>').appendTo("#window-load .innerbody");addLog("Gaining client authentication token");authForm((a)?a:"Welcome to grough route");try{$.ajax({url:JSONP_BASE,dataType:"json",type:"POST",timeout:5000,data:{reqType:"ajax",request:"cookieauth"},success:function(d,c){if(d.cookieAuth){var e=$("#loginUsername");if(e.length){if(!e.val()){e.val(d.mailAddress);$("#loginPassword").val("USECOOKIEAUTH").css({"background-color":"#444444",color:"#777777"}).attr("disabled","true");objLoginErr.css("visibility","visible");objLoginErr.html("You're already logged in to the <a onclick=\"window.open('http://www.grough.co.uk','mainSite','');\" href=\"javascript:void(0)\">main site</a>. Your details have been filled in automatically.")}}}},error:function(c,e,d){}})}catch(b){}return}function authForm(a){addLog("Requesting credentials to continue");objLoginErr=$('<div id="login-reason"></div>').appendTo("#window-load .innerbody");objLoadLogin=$('<div id="load-login"></div>').appendTo("#window-load .innerbody");objLoadLogin.append("<h1>"+a+'</h1><table><tr><th><label>E-mail</label></th><td><input type="text" class="text" value="" name="username" id="loginUsername" /></td></tr><tr><th><label>Password</label></th><td><input type="password" class="text" value="" name="password" id="loginPassword" /></td></tr></table><table><tr><td class="small">For account management or to reset your password, please use the <a onclick="window.open(\'http://www.grough.co.uk\',\'mainSite\',\'\');" href="javascript:void(0)">main site</a>. Use of this service is subject to terms &amp; conditions and the licences of mapping providers &mdash; see <a  onclick="window.open(\'http://www.grough.co.uk/route/subscription-agreement/\',\'mainSite\',\'\');" href="javascript:void(0)">here</a> for more details.</td><td><div id="login-button"><a href="javascript:void(0)" onclick="authToken()">Login</a></div></td></tr></table>');$("#loginUsername:input",objLoadLogin).keyup(authToken);$("#loginPassword:password",objLoadLogin).keyup(authToken)}function authToken(c){if(c){if($(this).attr("id")=="loginUsername"&&$("#loginPassword").val()=="USECOOKIEAUTH"){$("#loginPassword").val("").css({"background-color":"white",color:"black"}).removeAttr("disabled");objLoginErr.css("visibility","hidden")}}if(c){if(c.keyCode!=13){return}}addLog("Querying credentials with server");var a,b;a=$("#loginUsername:input").val();b=$("#loginPassword:password").val();if(!a){addLog("No e-mail address given");$("#loginUsername:input").css("background-color","#fbb5ef")}else{$("#loginUsername:input").css("background-color","white")}if(!b){addLog("No password given");$("#loginPassword:password").css("background-color","#fbb5ef")}else{$("#loginUsername:input").css("background-color","white")}if(!b||!a){return}objLoadLogin.remove();objLoginErr.remove();try{$.ajax({url:JSONP_BASE,dataType:"json",type:"POST",timeout:15000,data:{reqType:"ajax",request:"tokenauth",username:a,password:b},success:function(e,d){authResponse(e)},error:function(d,f,e){alert("Sorry - an error occured during the server request to login. You may wish to try again. Please contact the support team if you continue to have problems. (Error details: "+f+", "+e+")");addLog("JSON request failed");authForm("Sorry &mdash; an error occured")}});addLog("Waiting for response from server...")}catch(c){addLog("Failed to initiate XMLHttpRequest");alert("An error occured communicating with the server - the type of error is usually caused by your browser, please ensure that your browser supports AJAX requests and full DOM-modification support. Please contact the support team if you continue to have problems.");return}}function authResponse(a){if(a.validLogin){addLog("Login credentials validated");objUserData=a.user;objNewRoutes=a.newRoutes;aryJS=a.files;objLoadLog.height(320);if(rte){userCreate()}else{jsLoad(a.fileset)}}else{addLog("Login failed");authForm("Sorry &mdash; you couldn't be authenticated...");if(a.failReason){objLoginErr.css("visibility","visible");objLoginErr.html("<strong>Server response: </strong> "+a.failReason)}}}var aryJS=[];function jsLoad(a){$("#window-faults").remove();jsTotalCount=aryJS.length;jsVersion=a;$.ajaxSetup({timeout:10000});jsLoadGrough();addLog("Loading system files (fileset "+a+")")}function jsLoadGrough(){$.ajax({async:false,dataType:"script",contentType:"text/javascript",url:JSONP_BASE,data:{reqType:"js",request:"loadfile",name:aryJS[0].name,path:aryJS[0].path,token:objUserData.tokenID,tokenSalt:objUserData.tokenSalt},type:"GET",timeout:30000,success:function(){jsLoaded()},error:function(a){jsError(a)}})}var boolHadLoadError=false;function jsError(){if(!boolHadLoadError){alert("Error occured loading a script library.")}boolHadLoadError=true}function jsLoaded(){var a=false;jsLoadedCount++;addLog("Done loading core file #"+(jsLoadedCount),(jsLoadedCount)+"/"+jsTotalCount);if(jsLoadedCount>=jsTotalCount){a=true}$.ajax({async:false,dataType:"script",contentType:"text/javascript",url:JSONP_BASE,data:{reqType:"js",request:"loadfile",name:aryJS[jsLoadedCount-1].name,path:aryJS[jsLoadedCount-1].path,token:objUserData.tokenID,tokenSalt:objUserData.tokenSalt},type:"GET",timeout:30000,success:(a)?objCreate:jsLoaded,error:function(b){jsError()}})};
