


var tb_pathToImage="images/loadingAnimation.gif";$(document).ready(function(){tb_init('a.thickbox, area.thickbox, input.thickbox');imgLoader=new Image();imgLoader.src=tb_pathToImage;});function tb_init(domChunk){$(domChunk).click(function(){var t=this.title||this.name||null;var a=this.href||this.alt;var g=this.rel||false;tb_show(t,a,g);this.blur();return false;});}
function tb_show(caption,url,imageGroup){try{if(typeof document.body.style.maxHeight==="undefined"){$("body","html").css({height:"100%",width:"100%"});$("html").css("overflow","hidden");if(document.getElementById("TB_HideSelect")===null){$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");$("#TB_overlay").click(tb_remove);}}else{if(document.getElementById("TB_overlay")===null){$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");$("#TB_overlay").click(tb_remove);}}
if(tb_detectMacXFF()){$("#TB_overlay").addClass("TB_overlayMacFFBGHack");}else{$("#TB_overlay").addClass("TB_overlayBG");}
if(caption===null){caption="";}
$("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");$('#TB_load').show();var baseURL;if(url.indexOf("?")!==-1){baseURL=url.substr(0,url.indexOf("?"));}else{baseURL=url;}
var urlString=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;var urlType=baseURL.toLowerCase().match(urlString);if(urlType=='.jpg'||urlType=='.jpeg'||urlType=='.png'||urlType=='.gif'||urlType=='.bmp'){TB_PrevCaption="";TB_PrevURL="";TB_PrevHTML="";TB_NextCaption="";TB_NextURL="";TB_NextHTML="";TB_imageCount="";TB_FoundURL=false;if(imageGroup){TB_TempArray=$("a[@rel="+imageGroup+"]").get();for(TB_Counter=0;((TB_Counter<TB_TempArray.length)&&(TB_NextHTML===""));TB_Counter++){var urlTypeTemp=TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);if(!(TB_TempArray[TB_Counter].href==url)){if(TB_FoundURL){TB_NextCaption=TB_TempArray[TB_Counter].title;TB_NextURL=TB_TempArray[TB_Counter].href;TB_NextHTML="<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";}else{TB_PrevCaption=TB_TempArray[TB_Counter].title;TB_PrevURL=TB_TempArray[TB_Counter].href;TB_PrevHTML="<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";}}else{TB_FoundURL=true;TB_imageCount="Image "+(TB_Counter+1)+" of "+(TB_TempArray.length);}}}
imgPreloader=new Image();imgPreloader.onload=function(){imgPreloader.onload=null;var pagesize=tb_getPageSize();var x=pagesize[0]-150;var y=pagesize[1]-150;var imageWidth=imgPreloader.width;var imageHeight=imgPreloader.height;if(imageWidth>x){imageHeight=imageHeight*(x/imageWidth);imageWidth=x;if(imageHeight>y){imageWidth=imageWidth*(y/imageHeight);imageHeight=y;}}else if(imageHeight>y){imageWidth=imageWidth*(y/imageHeight);imageHeight=y;if(imageWidth>x){imageHeight=imageHeight*(x/imageWidth);imageWidth=x;}}
TB_WIDTH=imageWidth+30;TB_HEIGHT=imageHeight+60;$("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>"+"<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>"+TB_imageCount+TB_PrevHTML+TB_NextHTML+"</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>");$("#TB_closeWindowButton").click(tb_remove);if(!(TB_PrevHTML==="")){function goPrev(){if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev);}
$("#TB_window").remove();$("body").append("<div id='TB_window'></div>");tb_show(TB_PrevCaption,TB_PrevURL,imageGroup);return false;}
$("#TB_prev").click(goPrev);}
if(!(TB_NextHTML==="")){function goNext(){$("#TB_window").remove();$("body").append("<div id='TB_window'></div>");tb_show(TB_NextCaption,TB_NextURL,imageGroup);return false;}
$("#TB_next").click(goNext);}
document.onkeydown=function(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;}
if(keycode==27){tb_remove();}else if(keycode==190){if(!(TB_NextHTML=="")){document.onkeydown="";goNext();}}else if(keycode==188){if(!(TB_PrevHTML=="")){document.onkeydown="";goPrev();}}};tb_position();$("#TB_load").remove();$("#TB_ImageOff").click(tb_remove);$("#TB_window").css({display:"block"});};imgPreloader.src=url;}else{var queryString=url.replace(/^[^\?]+\??/,'');var params=tb_parseQuery(queryString);TB_WIDTH=(params['width']*1)+30||630;TB_HEIGHT=(params['height']*1)+40||440;ajaxContentW=TB_WIDTH-30;ajaxContentH=TB_HEIGHT-45;if(url.indexOf('TB_iframe')!=-1){urlNoQuery=url.split('TB_');$("#TB_iframeContent").remove();if(params['modal']!="true"){$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW+29)+"px;height:"+(ajaxContentH+17)+"px;' > </iframe>");}else{$("#TB_overlay").unbind();$("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW+29)+"px;height:"+(ajaxContentH+17)+"px;'> </iframe>");}}else{if($("#TB_window").css("display")!="block"){if(params['modal']!="true"){$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'><img src='../images/cross.png'></a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");}else{$("#TB_overlay").unbind();$("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");}}else{$("#TB_ajaxContent")[0].style.width=ajaxContentW+"px";$("#TB_ajaxContent")[0].style.height=ajaxContentH+"px";$("#TB_ajaxContent")[0].scrollTop=0;$("#TB_ajaxWindowTitle").html(caption);}}
$("#TB_closeWindowButton").click(tb_remove);if(url.indexOf('TB_inline')!=-1){$("#TB_ajaxContent").append($('#'+params['inlineId']).children());$("#TB_window").unload(function(){$('#'+params['inlineId']).append($("#TB_ajaxContent").children());});tb_position();$("#TB_load").remove();$("#TB_window").css({display:"block"});}else if(url.indexOf('TB_iframe')!=-1){tb_position();if($.browser.safari){$("#TB_load").remove();$("#TB_window").css({display:"block"});}}else{$("#TB_ajaxContent").load(url+="&random="+(new Date().getTime()),function(){tb_position();$("#TB_load").remove();tb_init("#TB_ajaxContent a.thickbox");$("#TB_window").css({display:"block"});});}}
if(!params['modal']){document.onkeyup=function(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;}
if(keycode==27){tb_remove();}};}}catch(e){}}
function tb_showIframe(){$("#TB_load").remove();$("#TB_window").css({display:"block"});}
function tb_remove(){$("#TB_imageOff").unbind("click");$("#TB_closeWindowButton").unbind("click");$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});$("#TB_load").remove();if(typeof document.body.style.maxHeight=="undefined"){$("body","html").css({height:"auto",width:"auto"});$("html").css("overflow","");}
document.onkeydown="";document.onkeyup="";return false;}
function tb_position(){$("#TB_window").css({marginLeft:'-'+parseInt((TB_WIDTH/2),10)+'px',width:TB_WIDTH+'px'});if(!(jQuery.browser.msie&&jQuery.browser.version<7)){$("#TB_window").css({marginTop:'-'+parseInt((TB_HEIGHT/2),10)+'px'});}}
function tb_parseQuery(query){var Params={};if(!query){return Params;}
var Pairs=query.split(/[;&]/);for(var i=0;i<Pairs.length;i++){var KeyVal=Pairs[i].split('=');if(!KeyVal||KeyVal.length!=2){continue;}
var key=unescape(KeyVal[0]);var val=unescape(KeyVal[1]);val=val.replace(/\+/g,' ');Params[key]=val;}
return Params;}
function tb_getPageSize(){var de=document.documentElement;var w=window.innerWidth||self.innerWidth||(de&&de.clientWidth)||document.body.clientWidth;var h=window.innerHeight||self.innerHeight||(de&&de.clientHeight)||document.body.clientHeight;arrayPageSize=[w,h];return arrayPageSize;}
function tb_detectMacXFF(){var userAgent=navigator.userAgent.toLowerCase();if(userAgent.indexOf('mac')!=-1&&userAgent.indexOf('firefox')!=-1){return true;}}


(function($){$.extend({progressBar:new function(){this.defaults={increment:2,speed:15,showText:true,width:120,boxImage:'images/progressbar.gif',barImage:{0:'images/progressbg_red.gif',30:'images/progressbg_orange.gif',70:'images/progressbg_green.gif'},height:12};this.construct=function(arg1,arg2){var argpercentage=null;var argconfig=null;if(arg1!=null){if(!isNaN(arg1)){argpercentage=arg1;if(arg2!=null){argconfig=arg2;}}else{argconfig=arg1;}}
return this.each(function(child){var pb=this;if(argpercentage!=null&&this.bar!=null&&this.config!=null){this.config.tpercentage=argpercentage;if(argconfig!=null)
pb.config=$.extend(this.config,argconfig);}else{var $this=$(this);var config=$.extend({},$.progressBar.defaults,argconfig);var percentage=argpercentage;if(argpercentage==null)
var percentage=$this.html().replace("%","");$this.html("");var bar=document.createElement('img');var text=document.createElement('span');bar.id=this.id+"_percentImage";text.id=this.id+"_percentText";bar.title=percentage+"%";bar.alt=percentage+"%";bar.src=config.boxImage;bar.width=config.width;var $bar=$(bar);var $text=$(text);this.bar=$bar;this.ntext=$text;this.config=config;this.config.cpercentage=0;this.config.tpercentage=percentage;$bar.css("width",config.width+"px");$bar.css("height",config.height+"px");$bar.css("background-image","url("+getBarImage(this.config.cpercentage,config)+")");$bar.css("padding","0");$bar.css("margin","0.5em");$bar.css("vertical-align","middle");$text.css("position","relative");$text.css("top","2px");$this.append($bar);$this.append($text);}
function getBarImage(percentage,config){var image=config.barImage;if(typeof(config.barImage)=='object'){for(var i in config.barImage){if(percentage>=parseInt(i)){image=config.barImage[i];}else{break;}}}
return image;}
var t=setInterval(function(){var config=pb.config;var cpercentage=parseInt(config.cpercentage);var tpercentage=parseInt(config.tpercentage);var increment=parseInt(config.increment);var bar=pb.bar;var text=pb.ntext;var pixels=config.width/100;bar.css("background-image","url("+getBarImage(cpercentage,config)+")");bar.css("background-position",(((config.width*-1))+(cpercentage*pixels))+'px 50%');if(config.showText)
text.html(" "+Math.round(cpercentage)+"%");if(cpercentage>tpercentage){if(cpercentage-increment<tpercentage){pb.config.cpercentage=0+tpercentage}else{pb.config.cpercentage-=increment;}}
else if(pb.config.cpercentage<pb.config.tpercentage){if(cpercentage+increment>tpercentage){pb.config.cpercentage=tpercentage}else{pb.config.cpercentage+=increment;}}
else{clearInterval(t);}},pb.config.speed);});};}});$.fn.extend({progressBar:$.progressBar.construct});})(jQuery);


(function($){jQuery.fn.extend({scrollTo:function(speed,easing){return this.each(function(){var targetOffset=$(this).offset().top;$('html,body').animate({scrollTop:targetOffset},speed,easing);});}});})(jQuery);jQuery.fn.center=function(){this.css("position","absolute");this.css("top",(($(window).height()-this.height()-$("#header").height()-5)/2)+$(window).scrollTop()+"px");this.css("left",($(window).width()-this.width()-$("#sidebar").width())/2+$(window).scrollLeft()+"px");return this;}
jQuery.fn.centerhorz=function(){this.css("position","absolute");this.css("left",($(window).width()-this.width())/2+$(window).scrollLeft()+"px");return this;}
function show_message(msg){if((typeof($("#msg"))=="object")&&$("#msg").offset()){$("#msg").empty().append(msg).removeClass("error");if($(window).scrollTop()>$("#msg").offset().top+$("#msg").height()){$("#msgbar").empty().append(msg).css({marginLeft:$("#msgbar").width()/-2}).show().removeClass("error");setTimeout(function(){$("#msgbar").fadeOut(500);},3500);}else{$("#msgbar").fadeOut(500);}}}
function show_error(err){if((typeof($("#msg"))=="object")&&$("#msg").offset()){$("#msg").empty().addClass("error").animate({opacity:0}).append(err).animate({opacity:1},1000);if($(window).scrollTop()>$("#msg").offset().top+$("#msg").height()){$("#msgbar").empty().append(err).css({marginLeft:$("#msgbar").width()/-2}).show().addClass("error");setTimeout(function(){$("#msgbar").fadeOut(500);},3500);}else{$("#msgbar").fadeOut(500);}}}
function validate_email(email){var reg=/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;return reg.test(email);}
function handle_contact(){}
function handle_invite(){$("form[name='invite']").submit(function(){var urlparams=$(this).attr("action");var email=$.trim($("input[name='email']").val());if(email.length==0){show_error("<img src='"+pathprefix+"images/exclamation.png'> Please provide a valid email address");return false;}
if(!validate_email(email)){show_error("<img src='"+pathprefix+"images/exclamation.png'> Please provide a valid email address");return false;}
var btn=$("input[type='submit']",$(this)).attr("disabled","1");$.post("manage_ajax",urlparams+"&e="+encodeURIComponent(email),function(response){if(response.e===0){show_message("<img src='"+pathprefix+"images/accept.png'> "+response.s);}else{show_error("<img src='"+pathprefix+"images/exclamation.png'> "+response.s);}
$(btn).removeAttr("disabled");},"json");return false;});}
setHeaders=function(xhr){function safeSet(k,v){try{xhr.setRequestHeader(k,v);}catch(e){}}
safeSet("User-Agent",null);safeSet("Accept",null);safeSet("Accept-Language",null);safeSet("Content-Type","M");safeSet("Connection","keep-alive");safeSet("Keep-Alive",null);}
function get_date(ts){var dt=new Date(parseInt(ts)*1000);var d=dt.getDate();var m=dt.getMonth();var y=dt.getFullYear();var monthNames=Array("January","February","March","April","May","June","July","August","September","October","November","December");return(d+" "+monthNames[m]+", "+y);}
function get_short_date(ts){var dt=new Date(parseInt(ts)*1000);return((parseInt(dt.getMonth())+1)+"/"+dt.getDate()+"/"+dt.getFullYear());}
function get_date_time(ts){var dt=new Date(parseInt(ts)*1000);return((parseInt(dt.getMonth())+1)+"/"+dt.getDate()+"/"+dt.getFullYear()+" "+dt.toLocaleTimeString());}
$(document).ready(function(){setInterval(function(){window.location.reload();},21600000);if($.browser.msie&&($.browser.version<=6)&&(typeof(DD_belatedPNG)!="undefined")){$("#content").css("top","-5px");$("#container").resize(function(){$(this).width($(this).width()<980?"960px":"auto");});DD_belatedPNG.fix("img, li")}
$("a[href='#plupper']").click(function(){if(typeof(plupper)=="object"){try{plupper.start('callgraph@plupper.com');}catch(e){}}else{show_error("Live chat is not available currently");}
return false;});$("form[name='contact']").submit(function(){var urlparams=$(this).attr("action");var sub=$.trim($("input[name='subject']",$(this)).val());var msg=escape($.trim($("textarea",$(this)).val()));var btn=$("input[type='submit']",$(this));if(msg.length===0){show_error("<img src='images/exclamation.png'> Please type your message before sending");return false;}
var form=$(this);$(btn).attr("disabled","1").val("Sending...");$.post("manage_ajax",urlparams+"&s="+sub+"&m="+msg,function(response){if(response.e===0){show_message("<img src='images/accept.png'> "+response.s);$("input[name='subject']",$(form)).val("");$("textarea",$(form)).val("");$("input[type='submit']",$(form)).val("Send");}else{show_error("<img src='images/exclamation.png'> "+response.s);}
$(btn).removeAttr("disabled");},"json");return false;});if($("#passwordChangeTBLink").length>0){$("form[name='change_password']").submit(function(e){try{e.preventDefault();var urlparams=$(this).attr("action");var btn=$("input[type='submit']",$(this));var p1=$.trim($("input[name='pass1']",$(this)).val());var p2=$.trim($("input[name='pass2']",$(this)).val());if(p1.length==0){$("#tbmsg","#TB_window").empty().append("<img src='images/exclamation.png'> Invalid password. Please try again.").addClass("error");$("input[name='pass1']",$(this)).val("").focus();$("input[name='pass2']",$(this)).val("");return false;}
if(p1!=p2){$("#tbmsg","#TB_window").empty().append("<img src='images/exclamation.png'> Passwords do not match. Please try again.").addClass("error");$("input[name='pass1']",$(this)).val("").focus();$("input[name='pass2']",$(this)).val("");return false;}
urlparams+="&p="+SHA1(p1);$("#tbmsg","#TB_window").empty().append("Processing. Please wait... <img src='images/ajax.gif'>").removeClass("error");$(btn).attr("disabled","1");$.post("manage_ajax",urlparams,function(resp){if(resp.e==0){$("#tbmsg","#TB_window").empty().append("<img src='images/accept.png'> Password changed successfully").removeClass("error");setTimeout("tb_remove()",500);}else{$("#tbmsg","#TB_window").empty().append("<img src='images/exclamation.png'> "+resp.s).addClass("error");}
$(btn).removeAttr("disabled");},"json");return false;}catch(e){tb_remove();}});$("#passwordChangeTBLink").click();$("input[name='pass1']","#TB_window").focus();}});function highlight_files(){$(".record-list li[class='record']").hover(function(){$(this).addClass("highlight");},function(){$(this).removeClass("highlight");});}
function flashversion(){try{try{var axo=new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');try{axo.AllowScriptAccess='always';}
catch(e){return[6,0,0];}}catch(e){}
return(new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g,',').match(/^,?(.+),?$/)[1]).split(",");}catch(e){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){return((navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1]).split(',');}}catch(e){}}
return[0,0,0];}
(function($){var cache=[];$.preloadImages=function(){var args_len=arguments.length;for(var i=args_len;i--;){var cacheImage=document.createElement('img');cacheImage.src=arguments[i];cache.push(cacheImage);}}})(jQuery)
function validate_credit_card(value,param){var cardName=param;var cards=new Array();cards[0]={cardName:"Visa",lengths:"13,16",prefixes:"4",checkdigit:true};cards[1]={cardName:"MasterCard",lengths:"16",prefixes:"51,52,53,54,55",checkdigit:true};cards[2]={cardName:"DinersClub",lengths:"14,16",prefixes:"305,36,38,54,55",checkdigit:true};cards[3]={cardName:"CarteBlanche",lengths:"14",prefixes:"300,301,302,303,304,305",checkdigit:true};cards[4]={cardName:"Amex",lengths:"15",prefixes:"34,37",checkdigit:true};cards[5]={cardName:"Discover",lengths:"16",prefixes:"6011,622,64,65",checkdigit:true};cards[6]={cardName:"JCB",lengths:"16",prefixes:"35",checkdigit:true};cards[7]={cardName:"enRoute",lengths:"15",prefixes:"2014,2149",checkdigit:true};cards[8]={cardName:"Solo",lengths:"16,18,19",prefixes:"6334, 6767",checkdigit:true};cards[9]={cardName:"Switch",lengths:"16,18,19",prefixes:"4903,4905,4911,4936,564182,633110,6333,6759",checkdigit:true};cards[10]={cardName:"Maestro",lengths:"12,13,14,15,16,18,19",prefixes:"5018,5020,5038,6304,6759,6761",checkdigit:true};cards[11]={cardName:"VisaElectron",lengths:"16",prefixes:"417500,4917,4913,4508,4844",checkdigit:true};cards[12]={cardName:"LaserCard",lengths:"16,17,18,19",prefixes:"6304,6706,6771,6709",checkdigit:true};var cardType=-1;for(var i=0;i<cards.length;i++){if(cardName.toLowerCase()==cards[i].cardName.toLowerCase()){cardType=i;break;}}
if(cardType==-1){return false;}
value=value.replace(/[\s-]/g,"");if(value.length==0){return false;}
var cardNo=value;var cardexp=/^[0-9]{13,19}$/;if(!cardexp.exec(cardNo)){return false;}
cardNo=cardNo.replace(/\D/g,"");if(cards[cardType].checkdigit){var checksum=0;var mychar="";var j=1;var calc;for(i=cardNo.length-1;i>=0;i--){calc=Number(cardNo.charAt(i))*j;if(calc>9){checksum=checksum+1;calc=calc-10;}
checksum=checksum+calc;if(j==1){j=2}else{j=1};}
if(checksum%10!=0){return false;}}
var lengthValid=false;var prefixValid=false;var prefix=new Array();var lengths=new Array();prefix=cards[cardType].prefixes.split(",");for(i=0;i<prefix.length;i++){var exp=new RegExp("^"+prefix[i]);if(exp.test(cardNo))prefixValid=true;}
if(!prefixValid){return false;}
lengths=cards[cardType].lengths.split(",");for(j=0;j<lengths.length;j++){if(cardNo.length==lengths[j])lengthValid=true;}
if(!lengthValid){return false;}
return true;}
function SelectText(element){var text=document.getElementById(element);if($.browser.msie){var range=document.body.createTextRange();range.moveToElementText(text);range.select();}else if($.browser.mozilla||$.browser.opera){var selection=window.getSelection();var range=document.createRange();range.selectNodeContents(text);selection.removeAllRanges();selection.addRange(range);}else if($.browser.safari){var selection=window.getSelection();selection.setBaseAndExtent(text,0,text,1);}}
function SHA1(msg){function rotate_left(n,s){var t4=(n<<s)|(n>>>(32-s));return t4;};function lsb_hex(val){var str="";var i;var vh;var vl;for(i=0;i<=6;i+=2){vh=(val>>>(i*4+4))&0x0f;vl=(val>>>(i*4))&0x0f;str+=vh.toString(16)+vl.toString(16);}
return str;};function cvt_hex(val){var str="";var i;var v;for(i=7;i>=0;i--){v=(val>>>(i*4))&0x0f;str+=v.toString(16);}
return str;};function Utf8Encode(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}
else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}
else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}
return utftext;};var blockstart;var i,j;var W=new Array(80);var H0=0x67452301;var H1=0xEFCDAB89;var H2=0x98BADCFE;var H3=0x10325476;var H4=0xC3D2E1F0;var A,B,C,D,E;var temp;msg=Utf8Encode(msg);var msg_len=msg.length;var word_array=new Array();for(i=0;i<msg_len-3;i+=4){j=msg.charCodeAt(i)<<24|msg.charCodeAt(i+1)<<16|msg.charCodeAt(i+2)<<8|msg.charCodeAt(i+3);word_array.push(j);}
switch(msg_len%4){case 0:i=0x080000000;break;case 1:i=msg.charCodeAt(msg_len-1)<<24|0x0800000;break;case 2:i=msg.charCodeAt(msg_len-2)<<24|msg.charCodeAt(msg_len-1)<<16|0x08000;break;case 3:i=msg.charCodeAt(msg_len-3)<<24|msg.charCodeAt(msg_len-2)<<16|msg.charCodeAt(msg_len-1)<<8|0x80;break;}
word_array.push(i);while((word_array.length%16)!=14)word_array.push(0);word_array.push(msg_len>>>29);word_array.push((msg_len<<3)&0x0ffffffff);for(blockstart=0;blockstart<word_array.length;blockstart+=16){for(i=0;i<16;i++)W[i]=word_array[blockstart+i];for(i=16;i<=79;i++)W[i]=rotate_left(W[i-3]^W[i-8]^W[i-14]^W[i-16],1);A=H0;B=H1;C=H2;D=H3;E=H4;for(i=0;i<=19;i++){temp=(rotate_left(A,5)+((B&C)|(~B&D))+E+W[i]+0x5A827999)&0x0ffffffff;E=D;D=C;C=rotate_left(B,30);B=A;A=temp;}
for(i=20;i<=39;i++){temp=(rotate_left(A,5)+(B^C^D)+E+W[i]+0x6ED9EBA1)&0x0ffffffff;E=D;D=C;C=rotate_left(B,30);B=A;A=temp;}
for(i=40;i<=59;i++){temp=(rotate_left(A,5)+((B&C)|(B&D)|(C&D))+E+W[i]+0x8F1BBCDC)&0x0ffffffff;E=D;D=C;C=rotate_left(B,30);B=A;A=temp;}
for(i=60;i<=79;i++){temp=(rotate_left(A,5)+(B^C^D)+E+W[i]+0xCA62C1D6)&0x0ffffffff;E=D;D=C;C=rotate_left(B,30);B=A;A=temp;}
H0=(H0+A)&0x0ffffffff;H1=(H1+B)&0x0ffffffff;H2=(H2+C)&0x0ffffffff;H3=(H3+D)&0x0ffffffff;H4=(H4+E)&0x0ffffffff;}
var temp=cvt_hex(H0)+cvt_hex(H1)+cvt_hex(H2)+cvt_hex(H3)+cvt_hex(H4);return temp.toLowerCase();}