/*  BrowserUtils, version 1.4.4
 *  (c) 2009 Andrey Nebogin anebogin@gmail.com
 *--------------------------------------------------------------------------*/

var BrowserUtils={styleCache:{},client:{isStrict:document.compatMode=="CSS1Compat",isOpera:navigator.userAgent.toLowerCase().indexOf("opera")>-1,isIE:navigator.userAgent.toLowerCase().indexOf("msie")>-1,isIE7:navigator.userAgent.toLowerCase().indexOf("msie 7")>-1,isSafari:/webkit|khtml/.test(navigator.userAgent.toLowerCase()),isWindows:navigator.userAgent.toLowerCase().indexOf("windows")!=-1||navigator.userAgent.toLowerCase().indexOf("win32")!=-1,isMac:navigator.userAgent.toLowerCase().indexOf("macintosh")!=-1||navigator.userAgent.toLowerCase().indexOf("mac os x")!=-1,isLinux:navigator.userAgent.toLowerCase().indexOf("linux")!=-1},Init:function(){this.client.isBorderBox=this.client.isIE&&!this.client.isStrict;this.client.isSafari3=this.client.isSafari&&!!(document.evaluate);this.client.isGecko=navigator.userAgent.toLowerCase().indexOf("gecko")!=-1&&!this.client.isSafari},Get:function(A){return((typeof A=="string")?document.getElementById(A):A)},Remove:function(A){A=this.Get(A);A.parentNode.removeChild(A)},GetPageXByEvent:function(B){var A=B.pageX||(B.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));return(A)},GetPageYByEvent:function(B){var A=B.pageY||(B.clientY+(document.documentElement.scrollTop||document.body.scrollTop));return(A)},GetTargetByEvent:function(B){var A=(B.target)?B.target:B.srcElement;return(A)},AddEvent:function(C,A,B){C=this.Get(C);if(C.addEventListener){C.addEventListener(A,B,false)}else{if(C.attachEvent){C.attachEvent("on"+A,B)}}},RemoveEvent:function(C,A,B){C=this.Get(C);if(C.removeEventListener){C.removeEventListener(A,B,false)}else{if(C.detachEvent){C.detachEvent("on"+A,B)}}},GetKeyCode:function(A){return((A.which)?A.which:A.keyCode)},GetStyle:function(E,D){var B=null,C;E=this.Get(E);D=this.ConvertStyle(D);if(document.defaultView&&document.defaultView.getComputedStyle){if(D=="float"){D="cssFloat"}C=document.defaultView.getComputedStyle(E,"");B=E.style[D]?E.style[D]:C[D]}else{if(D=="opacity"){if(typeof E.style.filter=="string"){var A=E.style.filter.match(/alpha\(opacity=(.+)\)/i);if(A){B=parseFloat(A[1]);if(!isNaN(B)){B=(B?B/100:0)}}}else{B=1}}else{if(D=="float"){D="styleFloat"}C=E.currentStyle;B=E.style[D]?E.style[D]:C[D]}}return(B)},SetStyle:function(C,B,D){C=this.Get(C);if(typeof B=="string"){B=this.ConvertStyle(B);if(C&&(B=="float"||B=="cssFloat")){if(typeof (C.style.styleFloat)=="undefined"){C.style.cssFloat=D}else{C.style.cssText+=";float:"+D}}else{if(B=="opacity"){if(C){this.SetOpacity(C,D)}}else{if(C){C.style[B]=D}}}}else{for(var A in B){if(C){this.SetStyle(C,A,B[A])}}}},SetOpacity:function(B,A){B=this.Get(B);A=Number(A).toFixed(2);if(window.ActiveXObject){B.style.zoom=1;B.style.filter=(B.style.filter||"").replace(/alpha\([^\)]*\)/gi,"")+(A==1?"":" alpha(opacity="+(A*100)+")")}else{B.style.opacity=A}},ClearOpacity:function(A){A=this.Get(A);if(this.client.isIE){if(typeof A.style.filter=="string"&&(/alpha/i).test(A.style.filter)){A.style.filter=A.style.filter.replace(/[\w\.]*alpha\(.*?\);?/i,"")}}else{A.style.opacity="";A.style["-moz-opacity"]="";A.style["-khtml-opacity"]=""}},ConvertStyle:function(B){var A;if(this.styleCache[B]){A=this.styleCache[B]}else{A=this.styleCache[B]=B.replace(/(-[a-z])/gi,this.ConvertStyleCB)}return(A)},ConvertStyleCB:function(A,B){return(B.charAt(1).toUpperCase())},SetCookie:function(C,D,E){if(E){var B=new Date();B.setTime(B.getTime()+(E*24*60*60*1000));var A="; expires="+B.toGMTString()}else{var A=""}document.cookie=C+"="+D+A+"; path=/"},GetCookie:function(B){var D=B+"=";var A=document.cookie.split(";");for(var C=0;C<A.length;C++){var E=A[C];while(E.charAt(0)==" "){E=E.substring(1,E.length)}if(E.indexOf(D)==0){return E.substring(D.length,E.length)}}return null},IsLink:function(A){return(A&&typeof A.tagName=="string"&&(A.tagName.toUpperCase()=="A"||A.tagName.toUpperCase()=="AREA"))},GetVisibleWidth:function(B){B=this.Get(B);var A=Math.max(B.offsetWidth,B.clientWidth);if(!A){A=parseInt(this.GetStyle(B,"width"),10)||0;if(!this.client.isBorderBox){A+=parseInt(this.GetStyle(B,"padding-left"),10)+parseInt(this.GetStyle(B,"padding-right"),10)}}return(A)},GetVisibleHeight:function(B){B=this.Get(B);var A=Math.max(B.offsetHeight,B.clientHeight);if(!A){A=parseInt(this.GetStyle(B,"height"),10)||0;if(!this.client.isBorderBox){A+=parseInt(this.GetStyle(B,"padding-top"),10)+parseInt(this.GetStyle(B,"padding-bottom"),10)}}return(A)},GetWidth:function(B){B=this.Get(B);var A=0;if(B){A=B.scrollWidth}return(A)},GetHeight:function(B){B=this.Get(B);var A=0;if(B){A=B.scrollHeight}return(A)},GetWindowWidth:function(){var A=window.innerWidth;if((document.compatMode||this.client.isIE)&&!this.client.isOpera){A=(this.client.isStrict)?document.documentElement.clientWidth:document.body.clientWidth}return(A)},GetWindowHeight:function(){var A=window.innerHeight;if((document.compatMode||this.client.isIE)&&!this.client.isOpera){A=(this.client.isStrict)?document.documentElement.clientHeight:document.body.clientHeight}return(A)},GetDocumentHeight:function(){var A=document;return(Math.max(Math.max(A.body.scrollHeight,A.documentElement.scrollHeight),Math.max(A.body.offsetHeight,A.documentElement.offsetHeight),Math.max(A.body.clientHeight,A.documentElement.clientHeight)))},GetWindowScrollH:function(){var A=0;if(typeof (window.pageXOffset)=="number"){A=window.pageXOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){A=document.body.scrollLeft}else{A=document.documentElement.scrollLeft}}return(A)},GetWindowScrollV:function(){var A=0;if(typeof (window.pageYOffset)=="number"){A=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){A=document.body.scrollTop}else{A=document.documentElement.scrollTop}}return(A)},Append:function(C,B){if(C.insertAdjacentHTML){C.insertAdjacentHTML("BeforeEnd",B)}else{if(C.lastChild){var A=C.ownerDocument.createRange();A.setStartAfter(C.lastChild);var D=A.createContextualFragment(B);C.appendChild(D)}else{C.innerHTML=B}}},CopyObject:function(B,C){for(var A in B){C[A]=B[A]}return C},ToggleSpecificElements:function(F){var B=(F)?"hidden":"visible";var E=["select","object","embed"];for(var D=0;D<E.length;++D){els=document.getElementsByTagName(E[D]);for(var C=0,A=els.length;C<A;++C){els[C].style.visibility=B}}},AnimateStyle:function(B,O,H,G,E,D){var P=BrowserUtils;B=P.Get(B);var I=parseFloat(P.GetStyle(B,O));if(isNaN(I)){I=0}if(!G){G=0.75}if(I!=H){var N=H-I;var J=O=="opacity";var M=J?"":"px";var L=function(Q){P.SetStyle(B,O,I+Q*N+M)};var K=function(Q){return 1+Math.pow(Q-1,3)};G*=1000;var C=new Date().getTime();var F=C+G;var A=setInterval(function(){var Q=new Date().getTime();if(Q>=F){clearInterval(A);L(1);if(typeof E=="function"){E()}}else{L(K((Q-C)/G));if(typeof D=="function"){D()}}},10)}else{if(typeof E=="function"){E()}}},GetBody:function(){var A=document.getElementsByTagName("body")[0];return(A)},GetFirstNode:function(C){var A=null;for(var B=0;B<C.childNodes.length;B++){if(C.childNodes[B].nodeType==1){A=C.childNodes[B];break}}return(A)},ObjectExists:function(C,E){var A=false;var D;D=this.Get(C);for(var B=0;B<D.childNodes.length;B++){if(D.childNodes[B].id==E){A=true;break}}return(A)},LoadScript:function(C,A){if(C!=""){var D=document.getElementsByTagName("head")[0];var B=document.createElement("script");B.type="text/javascript";B.src=C;D.appendChild(B);if(typeof A=="function"){if(this.client.isIE){B.onreadystatechange=function(){if(this.readyState=="loaded"||this.readyState=="complete"){A()}}}else{B.onload=A}}}},GetChildNodes:function(C,D){var A=[];p=this.Get(C);for(var B=0;B<p.childNodes.length;B++){if(D){if(D.test(p.childNodes[B].id)){A.push(p.childNodes[B])}}else{A.push(p.childNodes[B])}}return(A)},CheckForm:function(C,E){var G="";var D=$(C);var F;for(var B=0;B<D.elements.length;B++){for(var A=0;A<E.length;A++){if(E[A].length>0&&E[A][0]==D.elements[B].id){switch(E[A][1]){case"email":if(!this.ElementIsEmail(D.elements[B])){G+=(E[A][2]!="")?E[A][2]+"\n":"Element ["+E[A][0]+"] is not an email!\n"}break;case"number":if(!this.ElementIsNumber(D.elements[B])){G+=(E[A][2]!="")?E[A][2]+"\n":"Element ["+E[A][0]+"] is not a number!\n"}break;case"checkbox":if(!this.ElementIsChecked(D.elements[B])){G+=(E[A][2]!="")?E[A][2]+"\n":"Element ["+E[A][0]+"] is not checked!\n"}break;case"null":default:if(this.ElementIsNull(D.elements[B])){G+=(E[A][2]!="")?E[A][2]+"\n":"Element ["+E[A][0]+"] is null!\n"}break}}}}if(G!=""){alert(G);return(false)}else{return(true)}},ElementIsNull:function(A){var B=false;obj=$(A);if(obj!=null){if(obj.value==""){B=true}}return(B)},ElementIsEmail:function(A){var B=false;obj=$(A);if(obj!=null){if(obj.value.indexOf("@")!=-1&&obj.value.indexOf(".")!=-1){B=true}}return(B)},ElementIsNumber:function(A){var B=false;obj=$(A);if(obj!=null){obj.value=obj.value.replace(/ /g,"");re=/[\d\.\,-]/gi;if(obj.value.replace(re,"")==""){B=true}}return(B)},ElementIsChecked:function(A){var B=false;obj=$(A);if(obj!=null){if(obj.checked){B=true}}return(B)}};var $=function(A){return(BrowserUtils.Get(A))};BrowserUtils.Init();