if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="";_19+="";var _1d=this.getParams();for(var key in _1d){_19+="";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="";}_19+="";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.majorfv.major){return true;}if(this.minorfv.minor){return true;}if(this.rev=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject; function OpenTell() { d_div=document.getElementById('tell_box'); d_div.style.visibility='visible'; d_div.style.display='block'; } function CloseTell() { d_div=document.getElementById('tell_box'); d_div.style.visibility='hidden'; d_div.style.display='none'; } function OpenComment() { d_div=document.getElementById('comment_box'); d_div.style.visibility='visible'; d_div.style.display='block';} function CloseComment() { d_div=document.getElementById('comment_box'); d_div.style.visibility='hidden'; d_div.style.display='none'; } function AddComment() { naz=document.getElementById('comment_name').value; not=document.getElementById('comment_content').value; mail=document.getElementById('comment_email').value; if(naz.length=0) { alert('Your name is Empty.'); return false; } if(not.length=0) { alert('Your comment is Empty.'); return false; } advAJAX.post({ url: "comment/add", parameters : {"nam" : naz ,"con" : not , "mail" : mail}, onLoading : function(obj) { }, onSuccess : function(obj) { ret=parse_response(obj.responseXML); alert(ret.mess); document.getElementById('comment_name').value=''; document.getElementById('comment_content').value=''; document.getElementById('koment_banner').innerHTML=ret.html; }, onError : function(obj) { ret=parse_response(obj.responseXML); alert(ret.mess); } }); } function TellAction() { fr_mail=document.getElementById('tell_fmail').value; yr_name=document.getElementById('tell_yname').value; if(fr_mail.length==0 || yr_name.length==0) { document.getElementById('tell_info').innerHTML='Please Fill All The Fields'; } else { advAJAX.post({ url: "tellafriend", parameters: {"nameb" : yr_name , "mail" : fr_mail}, onLoading : function(obj) {document.getElementById('tell_info').innerHTML='Sending Request';}, onSuccess : function(obj) { ret=parse_response(obj.responseXML); document.getElementById('tell_info').innerHTML='Friend Notified'; fr_mail=document.getElementById('tell_fmail').value=''; }, onError : function(obj) { ret=parse_response(obj.responseXML); alert(ret.mess); } }); } } function FetchArt(a_id) { advAJAX.get({ url: "article/fetch/"+a_id, onLoading : function(obj) {document.getElementById('content').innerHTML='';}, onSuccess : function(obj) { ret=parse_response(obj.responseXML); document.getElementById('content').innerHTML=ret.html; urchinTracker(URL); con=document.getElementById('content'); con.setAttribute('class','normal'); con.setAttribute('className','normal'); }, onError : function(obj) { ret=parse_response(obj.responseXML); alert(ret.mess); } }); } /* * AdvancedAJAX 1.1.2 * (c) 2005-2006 Lukasz Lach * mail: anakin@php5.pl * www: http://advajax.anakin.us/ * http://anakin.us/ * http://creativecommons.org/licenses/LGPL/2.1/ * */ var URL; function parse_response(response) { var ret=new Array(); var r = response.getElementsByTagName('root').item(0); URL=r.getAttribute('URL'); ret.mess=r.getElementsByTagName('message'); ret.mess=ret.mess[0].firstChild.nodeValue; //message=message; ret.html=r.getElementsByTagName('html')[0].firstChild.nodeValue; return ret; } function advAJAX() { var obj = new Object(); obj.url = window.location.href; obj.method = "GET"; obj.parameters = new Object(); obj.jsonParameters = new Object(); obj.headers = new Object(); obj.async = true; obj.mimeType = "text/xml"; obj.username = null; obj.password = null; obj.form = null; obj.disableForm = true; obj.unique = true; obj.uniqueParameter = "_uniqid"; obj.requestDone = false; obj.queryString = ""; obj.responseText = null; obj.responseXML = null; obj.status = null; obj.statusText = null; obj.aborted = false; obj.timeout = 0; obj.retryCount = 0; obj.retryDelay = 1000; obj.tag = null; obj.group = null; obj.progressTimerInterval = 50; obj.xmlHttpRequest = null; obj.onInitialization = null; obj.onFinalization = null; obj.onReadyStateChange = null; obj.onLoading = null; obj.onLoaded = null; obj.onInteractive = null; obj.onComplete = null; obj.onProgress = null; obj.onSuccess = null; obj.onFatalError = null; obj.onError = null; obj.onTimeout = null; obj.onRetryDelay = null; obj.onRetry = null; obj.onGroupEnter = null; obj.onGroupLeave = null; obj.createXmlHttpRequest = function() { if (typeof XMLHttpRequest != "undefined") return new XMLHttpRequest(); var xhrVersion = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp","Microsoft.XMLHttp" ]; for (var i = 0; i < xhrVersion.length; i++) { try { var xhrObj = new ActiveXObject(xhrVersion[i]); return xhrObj; } catch (e) { } } obj.raiseEvent("FatalError"); return null; }; obj._oldResponseLength = null; obj._progressTimer = null; obj._progressStarted = navigator.userAgent.indexOf('Opera') == -1; obj._onProgress = function() { if (typeof obj.onProgress == "function" && typeof obj.xmlHttpRequest.getResponseHeader == "function") { var contentLength = obj.xmlHttpRequest.getResponseHeader("Content-length"); if (contentLength != null && contentLength != '') { var responseLength = obj.xmlHttpRequest.responseText.length; if (responseLength != obj._oldResponseLength) { obj.raiseEvent("Progress", obj, responseLength, contentLength); obj._oldResponseLength = obj.xmlHttpRequest.responseText.length; } } } if (obj._progressStarted) return; obj._progressStarted = true; var _obj = this; this.__onProgress = function() { obj._onProgress(); obj._progressTimer = window.setTimeout(_obj.__onProgress, obj.progressTimerInterval); } _obj.__onProgress(); } obj._onInitializationHandled = false; obj._initObject = function() { if (obj.xmlHttpRequest != null) { delete obj.xmlHttpRequest["onreadystatechange"]; obj.xmlHttpRequest = null; } if ((obj.xmlHttpRequest = obj.createXmlHttpRequest()) == null) return null; if (typeof obj.xmlHttpRequest.overrideMimeType != "undefined") obj.xmlHttpRequest.overrideMimeType(obj.mimeType); obj.xmlHttpRequest.onreadystatechange = function() { if (obj == null || obj.xmlHttpRequest == null) return; obj.raiseEvent("ReadyStateChange", obj, obj.xmlHttpRequest.readyState); obj._onProgress(); switch (obj.xmlHttpRequest.readyState) { case 1: obj._onLoading(); break; case 2: obj._onLoaded(); break; case 3: obj._onInteractive(); break; case 4: obj._onComplete(); break; } }; obj._onLoadingHandled = obj._onLoadedHandled = obj._onInteractiveHandled = obj._onCompleteHandled = false; }; obj._onLoading = function() { if (obj._onLoadingHandled) return; if (!obj._retry && obj.group != null) { if (typeof advAJAX._groupData[obj.group] == "undefined") advAJAX._groupData[obj.group] = 0; advAJAX._groupData[obj.group]++; if (typeof obj.onGroupEnter == "function" && advAJAX._groupData[obj.group] == 1) obj.onGroupEnter(obj); } obj.raiseEvent("Loading", obj); obj._onLoadingHandled = true; }; obj._onLoaded = function() { if (obj._onLoadedHandled) return; obj.raiseEvent("Loaded", obj); obj._onLoadedHandled = true; }; obj._onInteractive = function() { if (obj._onInteractiveHandled) return; obj.raiseEvent("Interactive", obj); obj._onInteractiveHandled = true; if (!obj._progressStarted) obj._onProgress(); }; obj._onComplete = function() { if (obj._onCompleteHandled || obj.aborted) return; if (obj._progressStarted) { window.clearInterval(obj._progressTimer); obj._progressStarted = false; } obj.requestDone = true; with (obj.xmlHttpRequest) { obj.responseText = responseText; obj.responseXML = responseXML; if (typeof status != "undefined") obj.status = status; if (typeof statusText != "undefined") obj.statusText = statusText; } obj.raiseEvent("Complete", obj); obj._onCompleteHandled = true; if (obj.status == 200) obj.raiseEvent("Success", obj); else obj.raiseEvent("Error", obj); delete obj.xmlHttpRequest['onreadystatechange']; obj.xmlHttpRequest = null; if (obj.disableForm) obj.switchForm(true); obj._groupLeave(); obj.raiseEvent("Finalization", obj); }; obj._groupLeave = function() { if (obj.group != null) { advAJAX._groupData[obj.group]--; if (advAJAX._groupData[obj.group] == 0) obj.raiseEvent("GroupLeave", obj); } }; obj._retry = false; obj._retryNo = 0; obj._onTimeout = function() { if (obj == null || obj.xmlHttpRequest == null || obj._onCompleteHandled) return; obj.aborted = true; obj.xmlHttpRequest.abort(); obj.raiseEvent("Timeout", obj); obj._retry = true; if (obj._retryNo != obj.retryCount) { obj._initObject(); if (obj.retryDelay > 0) { obj.raiseEvent("RetryDelay", obj); startTime = new Date().getTime(); while (new Date().getTime() - startTime < obj.retryDelay); } obj._retryNo++; obj.raiseEvent("Retry", obj, obj._retryNo); obj.run(); } else { delete obj.xmlHttpRequest["onreadystatechange"]; obj.xmlHttpRequest = null; if (obj.disableForm) obj.switchForm(true); obj._groupLeave(); obj.raiseEvent("Finalization", obj); } }; obj.run = function() { obj._initObject(); if (obj.xmlHttpRequest == null) return false; obj.aborted = false; if (!obj._onInitializationHandled) { obj.raiseEvent("Initialization", obj); obj._onInitializationHandled = true; } if (obj.method == "GET" && obj.unique) obj.parameters[encodeURIComponent(obj.uniqueParameter)] = new Date().getTime().toString().substr(5) + Math.floor(Math.random() * 100).toString(); if (!obj._retry) { for (var a in obj.parameters) { if (obj.queryString.length > 0) obj.queryString += "&"; if (typeof obj.parameters[a] != "object") obj.queryString += encodeURIComponent(a) + "=" + encodeURIComponent(obj.parameters[a]); else { for (var i = 0; i < obj.parameters[a].length; i++) obj.queryString += encodeURIComponent(a) + "=" + encodeURIComponent(obj.parameters[a][i]) + "&"; obj.queryString = obj.queryString.slice(0, -1); } } for (var a in obj.jsonParameters) { var useJson = typeof [].toJSONString == 'function'; if (obj.queryString.length > 0) obj.queryString += "&"; obj.queryString += encodeURIComponent(a) + "="; if (useJson) obj.queryString += encodeURIComponent(obj.jsonParameters[a].toJSONString()); else obj.queryString += encodeURIComponent(obj.jsonParameters[a]); } if (obj.method == "GET" && obj.queryString.length > 0) obj.url += (obj.url.indexOf("?") != -1 ? "&" : "?") + obj.queryString; } if (obj.disableForm) obj.switchForm(false); try { obj.xmlHttpRequest.open(obj.method, obj.url, obj.async, obj.username || '', obj.password || ''); } catch (e) { obj.raiseEvent("FatalError", obj, e); return; } if (obj.timeout > 0) setTimeout(obj._onTimeout, obj.timeout); if (typeof obj.xmlHttpRequest.setRequestHeader != "undefined") for (var a in obj.headers) obj.xmlHttpRequest.setRequestHeader(encodeURIComponent(a), encodeURIComponent(obj.headers[a])); if (obj.method == "POST" && typeof obj.xmlHttpRequest.setRequestHeader != "undefined") { obj.xmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); obj.xmlHttpRequest.send(obj.queryString); } else if (obj.method == "GET") obj.xmlHttpRequest.send(''); }; obj.handleArguments = function(args) { if (typeof args.form == "object" && args.form != null) { obj.form = args.form; obj.appendForm(); } for (a in args) { if (typeof obj[a] == "undefined") obj.parameters[a] = args[a]; else { if (a != "parameters" && a != "headers") obj[a] = args[a]; else for (b in args[a]) obj[a][b] = args[a][b]; } } obj.method = obj.method.toUpperCase(); }; obj.switchForm = function(enable) { if (typeof obj.form != "object" || obj.form == null) return; with (obj.form) for (var nr = 0; nr < elements.length; nr++) if (!enable) { if (elements[nr]["disabled"]) elements[nr]["_disabled"] = true; else elements[nr]["disabled"] = "disabled"; } else if (typeof elements[nr]["_disabled"] == "undefined") elements[nr].removeAttribute("disabled"); }; obj.appendForm = function() { with (obj.form) { obj.method = getAttribute("method").toUpperCase(); obj.url = getAttribute("action"); for (var nr = 0; nr < elements.length; nr++) { var e = elements[nr]; if (e.disabled) continue; switch (e.type) { case "text": case "password": case "hidden": case "textarea": obj.addParameter(e.name, e.value); break; case "select-one": if (e.selectedIndex >= 0) obj.addParameter(e.name, e.options[e.selectedIndex].value); break; case "select-multiple": for (var nr2 = 0; nr2 < e.options.length; nr2++) if (e.options[nr2].selected) obj.addParameter(e.name, e.options[nr2].value); break; case "checkbox": case "radio": if (e.checked) obj.addParameter(e.name, e.value); break; } } } }; obj.addParameter = function(name, value) { if (typeof obj.parameters[name] == "undefined") obj.parameters[name] = value; else if (typeof obj.parameters[name] != "object") obj.parameters[name] = [ obj.parameters[name], value ]; else obj.parameters[name][obj.parameters[name].length] = value; }; obj.delParameter = function(name) { delete obj.parameters[name]; }; obj.raiseEvent = function(name) { var args = []; for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); if (typeof obj["on" + name] == "function") obj["on" + name].apply(null, args); if (name == "FatalError") obj.raiseEvent("Finalization", obj); } if (typeof advAJAX._defaultParameters != "undefined") obj.handleArguments(advAJAX._defaultParameters); return obj; } advAJAX.get = function(args) { return advAJAX.handleRequest("GET", args); }; advAJAX.post = function(args) { return advAJAX.handleRequest("POST", args); }; advAJAX.head = function(args) { return advAJAX.handleRequest("HEAD", args); }; advAJAX.submit = function(form, args) { if (typeof args == "undefined" || args == null) return -1; if (typeof form != "object" || form == null) return -2; var request = new advAJAX(); args["form"] = form; request.handleArguments(args); return request.run(); }; advAJAX.assign = function(form, args) { if (typeof args == "undefined" || args == null) return -1; if (typeof form != "object" || form == null) return -2; if (typeof form["onsubmit"] == "function") form["_onsubmit"] = form["onsubmit"]; form["advajax_args"] = args; form["onsubmit"] = function() { if (typeof this["_onsubmit"] != "undefined" && this["_onsubmit"]() === false) return false; if (advAJAX.submit(this, this["advajax_args"]) == false) return true; return false; } return true; }; advAJAX.download = function(targetObj, url) { if (typeof targetObj == "string") targetObj = document.getElementById(targetObj); if (!targetObj) return -1; advAJAX.get({ url: url, onSuccess : function(obj) { targetObj.innerHTML = obj.responseText; } }); }; advAJAX.scan = function() { var obj = document.getElementsByTagName("a"); for (var i = 0; i < obj.length;) { if (obj[i].getAttribute("rel") == "advancedajax" && obj[i].getAttribute("href") !== null) { var url = obj[i].getAttribute("href"); var div = document.createElement("div"); div.innerHTML = obj[i].innerHTML; div.className = obj[i].className; var parent = obj[i].parentNode; parent.insertBefore(div, obj[i]); parent.removeChild(obj[i]); advAJAX.download(div, url); } else i++; } }; advAJAX.handleRequest = function(requestType, args) { if (typeof args == "undefined" || args == null) return -1; var request = new advAJAX(); window.advajax_obj = request; request.method = requestType; request.handleArguments(args); return request.run(); }; advAJAX._defaultParameters = new Object(); advAJAX.setDefaultParameters = function(args) { advAJAX._defaultParameters = new Object(); for (a in args) advAJAX._defaultParameters[a] = args[a]; }; advAJAX._groupData = new Object(); /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * Distributed under the BSD License * See http://pajhome.org.uk/crypt/md5 for more info. */ /* * Configurable variables. You may need to tweak these to be compatible with * the server-side, but the defaults work in most cases. */ var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));} function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));} function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));} function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); } function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); } function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); } function md5_vm_test() { return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; } function core_md5(x, len) { /* append padding */ x[len >> 5] |= 0x80 << ((len) % 32); x[(((len + 64) >>> 9) << 4) + 14] = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for(var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); c = md5_ff(c, d, a, b, x[i+10], 17, -42063); b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); } return Array(a, b, c, d); } function md5_cmn(q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); } function md5_ff(a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); } function md5_gg(a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); } function md5_hh(a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); } function md5_ii(a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); } function core_hmac_md5(key, data) { var bkey = str2binl(key); if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz); var ipad = Array(16), opad = Array(16); for(var i = 0; i < 16; i++) { ipad[i] = bkey[i] ^ 0x36363636; opad[i] = bkey[i] ^ 0x5C5C5C5C; } var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); return core_md5(opad.concat(hash), 512 + 128); } function safe_add(x, y) { var lsw = (x & 0xFFFF) + (y & 0xFFFF); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } function bit_rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); } function str2binl(str) { var bin = Array(); var mask = (1 << chrsz) - 1; for(var i = 0; i < str.length * chrsz; i += chrsz) bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); return bin; } function binl2str(bin) { var str = ""; var mask = (1 << chrsz) - 1; for(var i = 0; i < bin.length * 32; i += chrsz) str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); return str; } function binl2hex(binarray) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for(var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); } return str; } function binl2b64(binarray) { var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var str = ""; for(var i = 0; i < binarray.length * 4; i += 3) { var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); for(var j = 0; j < 4; j++) { if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); } } return str; }