/************************************************************************************************
Name		- Function Library
Description	- Advanced JavaScript Functionalities.
Version		- 2.8.2
Author		- Anoop Nair.
Company		- OASIS (part of MKCL).

# COPYRIGHT NOTICE
# Copyright (c) 2005-2009 MKCL, All rights reserved.
# This script may be used and modified free of charge for Non-profit purposes by anyone as long
# as this copyright notice and the comments above are kept in their original form.
************************************************************************************************/

 Function.prototype.method=function(name,func){this.prototype[name]=func;return this;};String.method('removeAt',function(index){return this.substring(0,index)+this.substring(index+1,this.length);});String.method('lTrim',function(){var output='';var c_tab=String.fromCharCode(9);var c_feed=String.fromCharCode(10);var c_return=String.fromCharCode(13);var c_space=String.fromCharCode(32);var c_nb_space=String.fromCharCode(160);for(i=0;i<this.length;i++){var temp=this.charAt(i);if(temp!=c_tab && temp!=c_feed && temp!=c_return && temp!=c_space && temp!=c_nb_space)break;}return this.substring(i,this.length);});String.method('rTrim',function(){var output='';var c_tab=String.fromCharCode(9);var c_feed=String.fromCharCode(10);var c_return=String.fromCharCode(13);var c_space=String.fromCharCode(32);var c_nb_space=String.fromCharCode(160);for(i=this.length-1;i>=0;i--){var temp=this.charAt(i);if(temp!=c_tab && temp!=c_feed && temp!=c_return && temp!=c_space && temp!=c_nb_space)break;}return this.substring(0,i+1);});String.method('trim',function(){return this.lTrim().rTrim();});String.method('trimAll',function(retainSpace){var str=this;var c_tab=String.fromCharCode(9);var c_feed=String.fromCharCode(10);var c_return=String.fromCharCode(13);var c_space=String.fromCharCode((retainSpace)?160:32);var c_nb_space=String.fromCharCode(160);for(i=0;i< str.length;i++){var temp=str.charAt(i);if(temp==c_tab || temp==c_feed || temp==c_return || temp==c_space || temp==c_nb_space)str=str.removeAt(i--);}return str;});String.method('startsWith',function(input){return(this.match("^"+input)==input);});String.method('endsWith',function(input){return(this.match(input+"$")==input);});function addOnLoadEvent(functionName,useCapture){addEventHandler(window,'load',functionName,useCapture);}function addEventHandler(element,eventType,functionName,useCapture){if(element.addEventListener){element.addEventListener(eventType,functionName,useCapture);return true;}else if(element.attachEvent){return(element.attachEvent('on'+eventType,functionName));}}function removeEventHandler(element,eventType,functionName,useCapture){if(element.removeEventListener){element.removeEventListener(eventType,functionName,useCapture);return true;}else if(element.detachEvent){return(element.detachEvent('on'+eventType,functionName));}}function GetInnerText(element){if(typeof(element)=="undefined" || typeof(element)=="string")return element;if(element.innerText && element.innerText.trim()!=''){return element.innerText;}else if(element.textContent && element.textContent.trim()!=''){return element.textContent;}else if(element.innerHTML && element.innerHTML.search(/<input/i)==-1){return element.innerHTML.replace(/<[^>]+>/g,"");}else if(element.nodeName=='INPUT' && element.type=='text'){return element.value;}else{var textData='';for(var i=0;i<element.childNodes.length;i++){if(element.childNodes[i].nodeType==1)textData+=GetInnerText(element.childNodes[i]);else if(element.childNodes[i].nodeType==3)textData+=element.childNodes[i].nodeValue;}return textData;}return '';}function GetWindowSize(HorW){var relWidth=0,relHeight=0;if(typeof(window.innerWidth)=='number'){relWidth=window.innerWidth;relHeight=window.innerHeight;}else if(document.documentElement &&(document.documentElement.clientWidth || document.documentElement.clientHeight)){relWidth=document.documentElement.clientWidth;relHeight=document.documentElement.clientHeight;}else if(document.body &&(document.body.clientWidth || document.body.clientHeight)){relWidth=document.body.clientWidth;relHeight=document.body.clientHeight;}if(HorW=='H')return relHeight;else if(HorW=='W')return relWidth;return 0;}function GetScrollPosition(XorY){var scrollX=0,scrollY=0;if(typeof(window.pageYOffset)=='number'){scrollY=window.pageYOffset;scrollX=window.pageXOffset;}else if(document.body &&(document.body.scrollLeft || document.body.scrollTop)){scrollY=document.body.scrollTop;scrollX=document.body.scrollLeft;}else if(document.documentElement &&(document.documentElement.scrollLeft || document.documentElement.scrollTop)){scrollY=document.documentElement.scrollTop;scrollX=document.documentElement.scrollLeft;}if(XorY=='X')return scrollX;else if(XorY=='Y')return scrollY;return 0;}function GetOffsetPosition(elem){var point=new function(){this.offsetX=this.offsetY=0;};if(elem.offsetParent){var obj=elem;do{point.offsetX+=obj.offsetLeft;point.offsetY+=obj.offsetTop;}while(obj=obj.offsetParent);}return point;}function scrollPositionX(){if(document.documentElement && !document.documentElement.scrollLeft)return 0;else if(document.documentElement && document.documentElement.scrollLeft)return document.documentElement.scrollLeft;else if(document.body && document.body.scrollLeft)return document.body.scrollLeft;}function scrollPositionY(){if(document.documentElement && !document.documentElement.scrollTop)return 0;else if(document.documentElement && document.documentElement.scrollTop)return document.documentElement.scrollTop;else if(document.body && document.body.scrollTop)return document.body.scrollTop;}function SetAttribute(element,attributeName,attributeValue){element.setAttribute(attributeName,attributeValue);if(navigator.userAgent.indexOf("IE")==-1)return;if(element.parentNode==null)alert('Element "'+element.id+'" is not part of DOM!!!\r\n [SetAttribute function in FunctionLibrary.js]');else element.parentNode.innerHTML=element.parentNode.innerHTML;}function IsChildAndParent(childElem,parentElem){if(!childElem || !parentElem)return false;var parentOfChild=childElem.parentNode;while(parentOfChild!=document.body)if(parentOfChild==parentElem)return true;else parentOfChild=parentOfChild.parentNode;return false;}function revampMouseEvent(e){if(!e)var e=window.event;e.sourceElement=e.target || e.srcElement;if(e.sourceElement.nodeType==3)e.sourceElement=e.sourceElement.parentNode;e.relayTarget=e.relatedTarget || e.fromElement;if(e.relayTarget==e.sourceElement && e.toElement)e.relayTarget=e.toElement;if(e.pageX){e.positionX=e.pageX;e.positionY=e.pageY;}else if(e.clientX){e.positionX=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;e.positionY=e.clientY+document.body.scrollTop+document.documentElement.scrollTop;}if(typeof(event)!='undefined')e.suppress=function(){e.returnValue=false;};else e.suppress=function(){e.preventDefault();};return e;}var Browser=new function(){this.userAgent=navigator.userAgent.toLowerCase();this.compatibleName=this.userAgent.split('/')[0];this.compatibleVersion=parseFloat(navigator.appVersion);this.isIe=(this.userAgent.indexOf('msie')==-1? false: true);this.isFirefox=(this.userAgent.indexOf('firefox')==-1? false: true);this.isOpera=(this.userAgent.startsWith('opera')? true: false);this.isChrome=(this.userAgent.indexOf('chrome')==-1? false: true);if(this.isIe){this.name='Internet Explorer';this.version=parseFloat(this.userAgent.split('msie')[1]);}else if(this.isFirefox){this.name='FireFox';this.version=parseFloat(this.userAgent.split('firefox/')[1]);}else if(this.isChrome){this.name='Chrome';this.version=parseFloat(this.userAgent.split('chrome/')[1].split(' ')[0]);}else{this.name=this.compatibleName;this.version=this.compatibleVersion;}};var QueryString=new function(){var keyValuePairs=document.location.search.removeAt(0).split('&');this.getKey=function(index){return keyValuePairs[index].split('=')[0];};this.getValue=function(key){if(typeof(key)=='number'){if(key >-1 && key< keyValuePairs.length)return keyValuePairs[key].split('=')[1];else return "";}else{key=key.toLowerCase();for(i=0;i< keyValuePairs.length;i++)if(keyValuePairs[i].split('=')[0].toLowerCase()==key)return keyValuePairs[i].split('=')[1];return "";}};this.toString=function(){return keyValuePairs.toString();};};function ErrorHandler(moduleName,errorTypes,noOfLines){var mod=moduleName,lines=(noOfLines? noOfLines: 25),err=errorTypes;this.showAlert=function(message,errorTypeId,functionName){if(!functionName && this.showAlert.caller)functionName=this.showAlert.caller.toString().match(/(.*function\s*[A-Za-z0-9]*\([A-Za-z0-9,\s]*\))/gi)[0];var msg=''+mod+' Error:-\r\n';for(var i=0;i<lines;i++)msg+='-';msg+='\r\n'+(functionName? '['+functionName+']-': '')+err[errorTypeId]+'Exception.\r\n\t-'+message;alert(msg);};}function PrintIFrame(frameName){var theFrame=frames[frameName];if(Browser.isOpera){var wind=window.open(theFrame);wind.opener.focus();wind.print();wind.close();wind=null;}theFrame.focus();if(Browser.isIe && Browser.version>=7)theFrame.document.execCommand('print',true,null);else theFrame.print();}function IsNumber(text,isFloat){var testKey=/(^\d+$)/;if(isFloat)testKey=/(^\d+$)|(^\d+\.\d+$)/;if(testKey.test(text))return true;else return false;}