// scrollTo plugin
;(function(h){var m=h.scrollTo=function(b,c,g){h(window).scrollTo(b,c,g)};m.defaults={axis:'y',duration:1};m.window=function(b){return h(window).scrollable()};h.fn.scrollable=function(){return this.map(function(){var b=this.parentWindow||this.defaultView,c=this.nodeName=='#document'?b.frameElement||b:this,g=c.contentDocument||(c.contentWindow||c).document,i=c.setInterval;return c.nodeName=='IFRAME'||i&&h.browser.safari?g.body:i?g.documentElement:this})};h.fn.scrollTo=function(r,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};a=h.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=h(k),d=r,l,e={},p=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(d)){d=n(d);break}d=h(d,this);case'object':if(d.is||d.style)l=(d=h(d)).offset()}h.each(a.axis.split(''),function(b,c){var g=c=='x'?'Left':'Top',i=g.toLowerCase(),f='scroll'+g,s=k[f],t=c=='x'?'Width':'Height',v=t.toLowerCase();if(l){e[f]=l[i]+(p?0:s-o.offset()[i]);if(a.margin){e[f]-=parseInt(d.css('margin'+g))||0;e[f]-=parseInt(d.css('border'+g+'Width'))||0}e[f]+=a.offset[i]||0;if(a.over[i])e[f]+=d[v]()*a.over[i]}else e[f]=d[i];if(/^\d+$/.test(e[f]))e[f]=e[f]<=0?0:Math.min(e[f],u(t));if(!b&&a.queue){if(s!=e[f])q(a.onAfterFirst);delete e[f]}});q(a.onAfter);function q(b){o.animate(e,j,a.easing,b&&function(){b.call(this,r,a)})};function u(b){var c='scroll'+b,g=k.ownerDocument;return p?Math.max(g.documentElement[c],g.body[c]):k[c]}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);

//Common
function FocusTop(){$(document).scrollTo({top:"0px",left:"0px"},800)}var aspToJsDateFormats={"dd/MM/yyyy":"dd/mm/yy","dd/MM/yy":"dd/mm/y","MM/dd/yyyy":"mm/dd/yy","MM/dd/yy":"mm/dd/y"};$(function(){$("input.dateField").each(function(){var a=this.className.match(/GWV_Date\[(.+)\]/);null!==a&&void 0!==a[1]&&$(this).datepicker({dateFormat:"dd/mm/yy",changeMonth:!0,changeYear:!0,yearRange:"-45:+5"})})});
function GradAccordianise(a){$("h3").each(function(){$(this).insertBefore($(this).parent().parent())});var d=0,c=0;null!=a&&""!=a&&$("h3").each(function(){this.innerText==$("#"+a)[0].value&&(d=c);c++});$(".accordian").accordion({header:"h3",active:d,alwaysOpen:!1,animated:"slide",autoheight:!1,event:"click",change:function(d,b){if(null!=a&&""!=a)null!=b.newHeader[0]?$("#"+a)[0].value=b.newHeader[0].innerText:$("#"+a)[0].value=""}})}var non_alphanumerics_rExp=/[^A-Za-z0-9]+/gi;
function ApplyWordCounters(){var a=this;a.WordCount=function(a,c,e){var b;b=jQuery.trim($(a).val());""==b?b=0:(b=b.match(/[\S]+/g),b=null===b?0:b.length);$(a).siblings(".wordCount").children("strong").text(b);b<c||b>e&&0!=e?$(a).siblings(".wordCount").addClass("error"):$(a).siblings(".wordCount").removeClass("error")};$("[class*='Count[']").each(function(){var d=0,c=0,e=$(this).attr("class").match(/Count\[([0-9]+),?([0-9]+)?\]/);void 0!==e[2]?(d=parseInt(e[1],10),c=parseInt(e[2],10)):c=parseInt(e[1],
10);$(this).after('<div class="wordCount"><strong>0</strong> Words</div>');0<d&&$(this).siblings(".wordCount").addClass("error");a.WordCount(this,d,c);$(this).bind("keyup click blur focus change paste",function(){a.WordCount(this,d,c)});$("[class^='count[']").each(function(){var a=jQuery.trim($(this).val()).split(" ").length;""===$(this).val()&&(a=0);$(this).siblings(".wordCount").children("strong").text(a);a<d||a>c&&0!=c?$(this).siblings(".wordCount").addClass("error"):$(this).siblings(".wordCount").removeClass("error")})})}
$(document).ready(function(){RemoveNoScriptElements()});function RemoveNoScriptElements(){$(".noScript").hide()};

//validation
var VALIDATION_TYPES={NONE:0,CRITICAL_ONLY:1,ALL:2};
function ValidationSetup(b){if(!(1>$("div.validationContainer").length)){var a=$("div.validationContainer")[0];if(void 0===a)return!1;var d=!1;setup=function(){$("body").prepend(a);$("#validationFooterMenu").show();$(b).bind("submit",Form_OnSubmit);$(b+" input[type=submit]").bind("click",Submit_Clicked);$("#validationClose",a).click(Close_Validation);$("#validationDock",a).click(Dock_Undock);0<$("div.accordian").length&&(d=!0);$("input[type='submit']").click(function(){setTimeout(function(){$("input[type='submit']").attr("disabled","true");
return!0},10)})};var f=null;Submit_Clicked=function(a){f=a.target.className};Close_Validation=function(){$("input[type='submit']").removeAttr("disabled");$(a).hide();$("#pnlContent").removeClass("HasValidation")};Dock_Undock=function(){var e,b;"fixed"==$(a).css("position")?(e="absolute",b="Undock"):(e="fixed",b="Dock");$(a).css("position",e);$(this).text(b)};Show_ValidationPanel=function(){$(a).show();$("#pnlContent").addClass("HasValidation");$(a).css("position","fixed");$("#validationDock",a).text("Dock")};
Form_OnSubmit=function(){var e=GetValidationMode();if(e==VALIDATION_TYPES.NONE)return!0;e=new FormValidator(b,e);e.Run();return e.HasErrors()?(Show_ValidationPanel(),errors=e.GetErrors(),$("#validationContent",a).html("").html(e.GetErrorsHTML()),$("#validationInner label",a).click(ScrollToInput),setTimeout(function(){$("input[type='submit']").removeAttr("disabled");return!0},10),MarkInvalidFields(errors),delete e,!1):checkXSS()};GetValidationMode=function(){var a;if(f.isNullOrEmpty()||f.contains("ValidationCriticalOnly"))a=
VALIDATION_TYPES.CRITICAL_ONLY;else if(f.contains("ValidationAll"))a=VALIDATION_TYPES.ALL;else if(f.contains("NoValidation"))a=VALIDATION_TYPES.NONE;f=null;return a};ScrollToInput=function(a){a.preventDefault();var b=$(a.target).attr("for"),a=$("#"+b)[0],g=$(a).position().top-275,i=$("#frmMain label[for="+b+"]").not(".errmsg")[0];$(i).addClass("HighlightedField");$(a).addClass("HighlightedField");d&&ExpandAccordian(a);("SELECT"!=a.nodeName||!/radio|checkbox|/i.test(a.type))&&a.focus();d||$.scrollTo(g,
800,function(){setTimeout(function(){$(a).removeClass("HighlightedField");$(i).removeClass("HighlightedField")},800)})};ExpandAccordian=function(a){var b=$("div.accordian #groupe"),a=$(a).parents("#groupe")[0],b=jQuery.inArray(a,b),a=-1;if(0<$("div.accordian #groupe.ui-accordion-content-active").length)var a=$("div.accordian h3.ui-state-active")[0],g=$(".ui-accordion-header"),a=jQuery.inArray(a,g);b!=a&&$("div.accordian").accordion("activate",b)};setup()}}var validationItems={};
function AddValidationItem(b,a,d){validationItems[b+"_"+a]=d}function MarkInvalidFields(b){$(".HasError").removeClass("HasError");jQuery.each(b,function(a,b){$(b.element).addClass("HasError")})}
function FormValidator(b,a){var d=[],f;f=(void 0===a?VALIDATION_TYPES.ALL:a)==VALIDATION_TYPES.ALL?/(GWV_(?:[^ ]|$)+)/gi:/(!GWV_(?:[^ ]|$)+)/gi;this.Run=function(){$(b+" .Validation").each(RunValidationsOnElement)};this.GetErrors=function(){return d};this.HasErrors=function(){return 0<d.length};this.GetErrorsHTML=function(){var a="<ul>";jQuery.each(d,function(b,c){a+=String.format("\t<li class='validationError'><label class='errmsg' for='{0}'>{1}</label></li>\n",c.element.id,c.message)});return a+=
"</ul>"};RunValidationsOnElement=function(a,b){var c=b.className.match(f);if(null!==c){if("span"==elementType(b))b=b.firstChild;var e=!0;jQuery.each(c,function(a,g){if(e){var c=g.match(/GWV_([a-z]+)(?:\[.+\])?/i),f=c[0],h=k[c[1]];if(void 0===h)return!0;var j=null;!0===h.hasParam&&(c=g.match(/\[(.+)\]/),null!==c&&void 0!==c[1]&&(j=c[1]));!1==h.method(b,j)&&(c={element:b,message:getErrorMessage(f,b)},d.push(c),h.critical&&(e=!1))}})}};getErrorMessage=function(a,b){var c=b.id;0<c.indexOf("_")&&(c=c.split("_")[0]);
return validationItems[c+"_"+a]};checkable=function(a){return/radio|checkbox/i.test(a.type)};elementType=function(a){return a.nodeName.toLowerCase()};var e={"dd/MM/yyyy":{regexp:/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/,dateParts:{d:1,m:2,y:3}},"dd/MM/yy":{regexp:/^([0-9]{2})\/([0-9]{2})\/([0-9]{2})$/,dateParts:{d:1,m:2,y:3}},"MM/dd/yyyy":{regexp:/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/,dateParts:{d:2,m:1,y:3}}},k={Required:{method:function(a){var b=a.value;return"select"==elementType(a)?(b=$(a).val())&&
0<b.length:0<$.trim(b).length},critical:!0},Decimal:{method:function(a){return isNaN(parseFloat(a.value))?!1:!0},critical:!0},Integer:{method:function(a){a=a.value;return isNaN(parseInt(a,10))||0<=a.indexOf(".")?!1:!0},critical:!0},CompareValue:{method:function(a,b){return $(a).val()==b},hasParam:!0,critical:!1},Date:{method:function(a,b){var c=a.value;if(""==c)return!0;var d=e[b];if(void 0===d)return!1;c=c.match(d.regexp);return null===c?!1:isNaN(Date.parse(c[d.dateParts.m]+"/"+c[d.dateParts.d]+
"/"+c[d.dateParts.y]))?!1:!0},hasParam:!0,critical:!0},Email:{method:function(a){a=a.value;return null==a||""==a?!0:null!==a.match(/\w+(?:[-+.']\w+)*@\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)*/)},critical:!1},WordCount:{method:function(a,b){var c=a.value,d=parseInt(b,10),c=c.match(/[^ ]( |$)/g);return(null===c?0:c.length)<=d},hasParam:!0,critical:!1}}}String.prototype.isNullOrEmpty=function(){return null===this||void 0===this||""==jQuery.trim(this)};
String.prototype.contains=function(b){return-1==this.indexOf(b)?!1:!0};String.format=function(){for(var b=arguments[0],a=0;a<arguments.length-1;a++)b=b.replace(RegExp("\\{"+a+"\\}","gm"),arguments[a+1]);return b};function stringReplaceAll(b,a,d){for(;-1<b.indexOf(a);)b=b.replace(a,d);return b}
function checkXSS(){var b=!0;$("input:text").each(function(a){b&&/<[^>]*>/.test($("input:text")[a].value)&&($("input:text")[a].focus(),b=!1)});b&&$("textarea").each(function(a){b&&/<[^>]*>/.test($("textarea")[a].innerText)&&($("textarea")[a].focus(),b=!1)});!b&&confirm("One of your items contains contains invalid content (this is mainly down to using brackets i.e. < and or >, if you would like this cleaned up automatically, please press OK, otherwise press cancel to remove these elements yourself")&&
($("input:text").each(function(a){$("input:text")[a].value=stringReplaceAll($("input:text")[a].value,"<","(");$("input:text")[a].value=stringReplaceAll($("input:text")[a].value,">",")")}),$("textarea").each(function(a){$("textarea")[a].innerText=stringReplaceAll($("textarea")[a].innerText,"<","(");$("textarea")[a].innerText=stringReplaceAll($("textarea")[a].innerText,">",")")}),b=!0);return b};

//console
var GWconsole,GWConsole_content,GWconsole_input,GWconsole_visible=!1,GWConsoleCommands=[{name:"Auto Complete Form",command:"ac",func:GWConsole_Command_AutoComplete},{name:"Reset form",command:"resetform",func:GWConsole_Command_ClearForm},{name:"Change console colour",command:"colour",func:GWConsole_Command_ChangeColour},{name:"Exit Console",command:"exit",func:GWConsole_Command_Close},{name:"Show this help",command:"help",func:GWConsole_OutputCommmands},{name:"Clear Console",command:"cls",func:GWConsole_Clear},
{name:"Run Validation",command:"validate",func:GWConsole_Command_Validate},{name:"Toggle Quick Shortcut",command:"toggleshortcut",func:GWConsole_Command_ToggleShortcut},{name:"",command:"cornify",func:GWConsole_SuperCorn,hidden:!0}],GWconsole_commandHistory=[],GWconsole_historyPosition=null,welcomeTxt="GradWeb 2.0 Console - Copyright (c) 2009 GradWeb Ltd.";
function GWConsole_Setup(){$(document).keyup(GWConsole_CheckKeySequence);"true"==readCookie("GWCONSOLE_QUICKSHORTCUT")&&GWConsole_ToggleQuickShortcut(!0)}var seq=[38,38,40,40,37,39,37,39],seqPos=0,seqTimeout=null;function GWConsole_CheckQuickShortcut(a){223==a.keyCode&&a.ctrlKey&&GWConsole_Toggle()}
function GWConsole_CheckKeySequence(a){seq[seqPos]==a.keyCode?seqPos==seq.length-1?(seqPos=0,clearTimeout(seqTimeout),GWConsole_Toggle()):(seqTimeout&&clearTimeout(seqTimeout),seqTimeout=setTimeout(GWConsole_SequenceTimeout,750),seqPos++):seqPos=0}function GWConsole_ToggleQuickShortcut(a){a?$(document).keydown(GWConsole_CheckQuickShortcut):$(document).unbind("keydown")}function GWConsole_SequenceTimeout(){seqPos=0;seqTimeout=null}
function GWConsole_Toggle(){if(GWconsole_visible)$(GWconsole).slideUp(),$(window).unbind("resize"),$(GWconsole_input).unbind("keyup"),$(GWconsole).unbind("click"),GWconsole_visible=!1,GWConsole_Setup();else{if(void 0===GWconsole){$(document).width();$("body").prepend("<div id='GWconsole'><div id='GWConsoleContainer'><div id='GWConsoleContent'></div><div> &gt; <input type='text' id='GWConsole_Input' /></div></div></div>");GWconsole=document.getElementById("GWconsole");GWconsole_input=document.getElementById("GWConsole_Input");
GWConsole_content=document.getElementById("GWConsoleContent");var a=readCookie("GWCONSOLE_COLOUR");null!==a&&GWConsole_Command_ChangeColour(a)}GWConsole_UpdateWidth();$(window).resize(GWConsole_UpdateWidth);$(GWconsole_input).keyup(GWConsole_InputKeyUp);$(GWconsole).click(GWConsole_Clicked);GWconsole_visible=!0;GWConsole_Clear();GWConsole_Output("Welcome to GradWeb Console! Please enter a command. (For a list of commands type 'help') ");$(GWconsole).slideDown("normal",function(){GWconsole_input.focus()})}}
function GWConsole_OutputCommmands(){for(i=0;i<GWConsoleCommands.length;i++){var a=GWConsoleCommands[i];!0!==a.hidden&&GWConsole_Output(a.command+" - "+a.name)}GWConsole_ScrollBottom()}function GWConsole_InputKeyUp(a){switch(a.keyCode){case 13:GWConsole_ProcessCommand();break;case 27:GWConsole_Toggle();break;case 38:GWConsole_PreviousCommand();a.preventDefault();break;case 40:GWConsole_NextCommand(),a.preventDefault()}}
function GWConsole_ProcessCommand(){var a=RegExp(/([a-z]+)(?: ([a-z\-]+))?/i).exec(GWconsole_input.value);GWConsole_AddCommandToHistory(GWconsole_input.value);GWconsole_historyPosition=null;GWconsole_input.value="";if(null!==a){var b=a[1],a=a[2],c=null;jQuery.each(GWConsoleCommands,function(){b==this.command&&(c=this)});null==c?GWConsole_OutputAndScroll("Command '"+b+"' not found. Type 'help' for a list of commands"):c.func(a)}}
function GWConsole_AddCommandToHistory(a){var b=GWconsole_commandHistory.length;(0==b||0<b&&GWconsole_commandHistory[b-1]!=a)&&GWconsole_commandHistory.push(a)}
function GWConsole_PreviousCommand(){if(0<GWconsole_commandHistory.length)GWconsole_historyPosition=null==GWconsole_historyPosition?GWconsole_commandHistory.length:GWconsole_historyPosition,GWconsole_historyPosition=0==GWconsole_historyPosition?0:GWconsole_historyPosition-1,GWconsole_input.value=GWconsole_commandHistory[GWconsole_historyPosition]}
function GWConsole_NextCommand(){if(null!=GWconsole_historyPosition&&0<GWconsole_commandHistory.length)GWconsole_historyPosition++,GWconsole_historyPosition==GWconsole_commandHistory.length?(GWconsole_historyPosition=null,GWconsole_input.value=""):GWconsole_input.value=GWconsole_commandHistory[GWconsole_historyPosition]}function GWConsole_UpdateWidth(){var a=$(document).width();$(GWconsole).width(a)}function GWConsole_Output(a){$("#GWConsoleContent").append("<p>"+a+"</p>")}
function GWConsole_OutputAndScroll(a){GWConsole_Output(a);GWConsole_ScrollBottom()}function GWConsole_Clicked(){GWConsole_ScrollBottom()}function GWConsole_ScrollBottom(){$(GWconsole).attr({scrollTop:$(GWconsole).attr("scrollHeight")});GWconsole_input.focus()}function GWConsole_Clear(){$("#GWConsoleContent").html("");$("#GWConsoleContent").append("<p><strong>"+welcomeTxt+"</strong></p>")}
function GWConsole_Command_ChangeColour(a){if(void 0===a)GWConsole_Output("You need to choose a colour!"),GWConsole_Output("Type 'colour [colourChoice]' (options are green and pink)"),GWConsole_ScrollBottom();else{var b;switch(a){case "pink":b="#FF38DE";break;default:b="lime",a="green"}$(GWconsole).css("color",b);$(GWconsole_input).css("color",b);createCookie("GWCONSOLE_COLOUR",a)}}
function GWConsole_Command_ToggleShortcut(){"true"==readCookie("GWCONSOLE_QUICKSHORTCUT")?(GWConsole_OutputAndScroll("Quick short has been disabled."),eraseCookie("GWCONSOLE_QUICKSHORTCUT"),GWConsole_ToggleQuickShortcut(!1)):(GWConsole_OutputAndScroll("Quick shortcut enabled. To show/hide console press CTRL + ` (key to the left of 1)."),createCookie("GWCONSOLE_QUICKSHORTCUT","true"),GWConsole_ToggleQuickShortcut(!0))}
function GWConsole_Command_Validate(){GWConsole_Clear();GWConsole_Output("Running all client side validations on form");var a=new FormValidator("#frmMain");a.Run();a.HasErrors()?(a=a.GetErrors(),jQuery.each(a,function(a,c){GWConsole_Output(c.message)}),GWConsole_OutputAndScroll("Validation Complete. "+a.length+" error(s) were found")):GWConsole_OutputAndScroll("Yay! No errors found on form.")}
function GWConsole_Command_AutoComplete(){GWConsole_Clear();GWConsole_Output("GradWeb AutoComplete");var a=$("form#frmMain input[disabled!=disabled][type!=hidden][type!=submit][type!=button]").each(AutoComplete_Input).length;GWConsole_Output("AutoFilled "+a+" input fields");a=$("form#frmMain select[disabled!=disabled]").each(AutoComplete_Select).length;GWConsole_Output("AutoFilled "+a+" select fields");a=$("form#frmMain textarea[disabled!=disabled]").each(AutoComplete_Textarea).length;GWConsole_Output("AutoFilled "+
a+" textareas");GWConsole_Output("AutoComplete Complete - Type exit to close the console");GWConsole_ScrollBottom()}function GWConsole_Command_Close(){GWConsole_Toggle()}function AutoComplete_Input(){switch(this.type){case "text":this.value=$(this).hasClass("hasDatepicker")?"17/03/1989":AutoComplete_GenerateWords(5);break;case "checkbox":case "radio":if("UDFDeleteCheckbox"!=this.parentNode.className)this.checked=!0}}
function AutoComplete_Select(){this.selectedIndex=Math.ceil(Math.random()*(this.length-1))}function AutoComplete_Textarea(){var a=RegExp(/count\[([0-9]+)\]/).exec(this.className),a=null===a?10:parseInt(a[1],10);this.value=AutoComplete_GenerateWords(a);this.focus();this.blur()}var words="apple,ball,cheese,dog,donkey,laser,water,feel,socks,face,glass,heart,trousers,job,zebra,nose,monkey,nice,olive,presto,queen,fun,solid,time".split(",");
function AutoComplete_GenerateWords(a){var b="";for(i=0;i<a;i++)var c=Math.floor(Math.random()*(words.length-1)),b=b+(words[c]+" ");return b}function GWConsole_SuperCorn(){GWConsole_OutputAndScroll("<pre>"+sc+"</pre>")}function createCookie(a,b){createCookieWithDays(a,b,365)}function createCookieWithDays(a,b,c){if(c){var d=new Date;d.setTime(d.getTime()+864E5*c);c="; expires="+d.toGMTString()}else c="";document.cookie=a+"="+b+c+"; path=/"}
function readCookie(a){for(var a=a+"=",b=document.cookie.split(";"),c=0;c<b.length;c++){for(var d=b[c];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null}function eraseCookie(a){createCookieWithDays(a,"",-1)}
function GWConsole_Command_ClearForm(){$("form#frmMain input").each(Clear_Input);$("form#frmMain select").each(Clear_Select);$("form#frmMain textarea").each(Clear_Textarea);GWConsole_Output("Form Reset - Type exit to close the console");GWConsole_ScrollBottom()}function Clear_Input(){switch(this.type){case "text":this.value="";break;case "checkbox":case "radio":this.checked=!1}}function Clear_Textarea(){this.value=""}function Clear_Select(){this.selectedIndex=0}var sc="      \\<br>       \\<br>        \\\\<br>         \\\\<br>          >\\/7<br>      _.-(6'  \\<br>     (=___._/` \\<br>          )  \\ |<br>         /   / |<br>        /    > /<br>       j    < _\\<br>   _.-' :      ``.<br>   \\ r=._\\        `.<br>  <`\\\\_  \\         .`-.<br>   \\ r-7  `-. ._  ' .  `\\<br>    \\`,      `-.`7  7)   )<br>     \\/         \\|  \\\\'  / `-._<br>                ||    .\\'<br>                 \\\\  (<br>                  >\\  ><br>              ,.-' >.\\'<br>             <.'_.\\'\\'<br>               <\\'<br>";

$(document).ready(function() { GWConsole_Setup(); ApplyWordCounters(); ValidationSetup('#frmMain'); });
