d=document;f=d.documentElement;g=d.forms;j=d.all;k=d.URL;m=d.location;o=d.images;p=d.anchors;t=d.links;u=d.embeds;v=false;ba=window;bb=true;bc=parseInt;bd=location;be=bd.pathname;bj=Array;bk=Object;bl=eval;bm=navigator;bn=bm.plugins;bo=bm.userAgent;bp=undefined;bq=unescape;br=parseFloat;PINT_Global=new bk();PINT_Global.HTML=new bk();PINT_Global.HTML.anchors=d.getElementsByTagName('a');PINT_Global.HTML.label=d.getElementsByTagName('label');PINT_Global.Status=new bk();PINT_Global.Status.windowStatus="";PINT_Global.Browser=new Browser();function PINT_GetEventSource(e){if(e&&e.target){var event=e&&e.target;while(event&&event.nodeType==3)event=event.parentNode;return(event);}if(ba&&ba.event&&ba.event.srcElement)return(ba&&ba.event&&ba.event.srcElement);return v}function PINT_GetElementById(idname){var handle;if(d.getElementById){handle=d.getElementById(idname);if(handle)return handle}if(d.getElementByName){handle=d.getElementByName(idname)[0];if(handle)return handle}handle=document[idname];if(handle)return handle;if(d.all){handle=d.all[idname];if(handle)return handle}if(d.anchors){handle=d.anchors[idname];if(handle)return handle}if(d.links){handle=d.links[idname];if(handle)return handle}if(d.images){handle=d.images[idname];if(handle)return handle}if(d.embeds){handle=d.embeds[idname];if(handle)return handle}return handle}function PINT_GetIdByElement(element){if(!(element))return bp;if(element.id)return element.id;if(element.name)return element.name;return bp}function PINT_ChangePageTitle(pageTitle){if(d.title.readOnly==bb)d.title=pageTitle}function PINT_GetCurrentFileName(){var URL=bq(bd.pathname);var start=URL.lastIndexOf("/")+1;var end=(URL.indexOf("?")>0)?URL.indexOf("?"):URL.length;return(URL.substring(start,end));}function PINT_GetCurrentFilePath(){var URL=bq(bd.pathname);var start=URL.lastIndexOf("/");return(URL.substring(0,start));}function PINT_GetCurrentDirectory(){var filePath=PINT_GetCurrentFilePath();var directories=filePath.split("/");return directories.length&&directories[directories.length-1]!=""?directories[directories.length-1]:""}function PINT_IsRootDirectory(directory){return directory.toLowerCase()==PINT_GetRootDirectory().toLowerCase()?bb:v}function PINT_IsDefaultFile(){var fileName=typeof(PINT_IsDefaultFile.arguments[0])!='undefined'?PINT_IsDefaultFile.arguments[0]:PINT_GetCurrentFileName();if(fileName=="")return bb;var fileNameList=PINT_GetDefaultFile();if(bl('typeof(fileNameList)')=='object'){for(var fileNameListIndex=0;fileNameListIndex<fileNameList.length;fileNameListIndex++)if((fileName==fileNameList[fileNameListIndex]))return bb}return v}function PINT_GetDefaultFile(){if(typeof(defaultFileList)=='undefined')return"";else return defaultFileList.split(",");}function PINT_FirstFocus(){var elementref;var i=0;if(!(elementref=PINT_FirstFocus.arguments[0])){if(!(d.forms[0]))return v;while((elementref=d.forms[0].elements[i++])&&((elementref.type=='hidden')||(elementref.type=='radio')||(elementref.disabled)||(elementref.type=='submit')||(elementref.type=='submit')||(elementref.type=='checkbox'))){}}else{var formIndex;var formElementIndex;var formElementName=PINT_FirstFocus.arguments[0];elementref=null;for(formIndex=0;formIndex<d.forms.length;formIndex++){for(formElementIndex=0;formElementIndex<d.forms[formIndex].elements.length;formElementIndex++){if(d.forms[formIndex].elements[formElementIndex].name==formElementName){elementref=d.forms[formIndex].elements[formElementIndex];break}}if(elementref)break}}if(!(elementref))return v;elementref.focus();return bb}function PINT_OnMouseOverHandler(e){e=(e)?e:((ba.event)?ba.event:"");if(e){var eventsource=PINT_GetEventSource(e);if(bl('typeof(PINT_MenuTriggers)')!='undefined'){typeOfEventSource=typeof(PINT_MenuTriggers[eventsource.id]);if(typeOfEventSource!='undefined')PINT_MenuPopUp(e);}else if(bl('typeof(PINT_Global.Rollover.triggers)')!='undefined'){typeOfEventSource=typeof(PINT_Global.Rollover.triggers[eventsource.id]);if(typeOfEventSource!='undefined')PINT_RORollover(e);}PINT_SetWindowStatus();}return bb}function PINT_OnMouseOutHandler(e){e=(e)?e:((ba.event)?ba.event:"");if(e){var eventsource=PINT_GetEventSource(e);if(bl('typeof(PINT_MenuTriggers)')!='undefined'){typeOfEventSource=typeof(PINT_MenuTriggers[eventsource.id]);if(typeOfEventSource!='undefined')PINT_MenuPopDown(e);}else if(bl('typeof(PINT_Global.Rollover.triggers)')){typeOfEventSource=typeof(PINT_Global.Rollover.triggers[eventsource.id]);if(typeOfEventSource!='undefined')PINT_RORollout(e);}}return bb}function PINT_SetWindowStatus(){if(PINT_SetWindowStatus.arguments.length==0){if(typeof(PINT_Global.Status.windowStatus)!='undefined'&&PINT_Global.Status.windowStatus!=""){ba.status=PINT_Global.Status.windowStatus;PINT_Global.Status.windowStatus=""}}else ba.status=PINT_SetWindowStatus.arguments[0];return bb}function PINT_GetRootDirectory(){if(typeof(rootDirectory)=='undefined')return"";else return rootDirectory}function PINT_getElementsByClass(name){var all=d.all?d.all:d.getElementsByTagName('*');var elements=new bj();for(var e=0;e<all.length;e++){if((name!='')&&(all[e].className.indexOf(name)>=0))elements[elements.length]=all[e]}return elements}function PINT_getURLParam(name,defaultVal){var paramVal=defaultVal;var regex=new RegExp("\&"+name+"\=([^$\&]+)","i");if(d.URL.indexOf('?')!=-1){var qString='&'+d.URL.substring((d.URL.indexOf('?')+1),d.URL.length);var urlMatches=qString.match(regex);if((urlMatches!=null)&&(urlMatches.length==2))paramVal=urlMatches[1]}return paramVal}PINT_Global.OnChange=new bk;PINT_Global.OnChange.linkType=new bj();function PINT_OnChangeHandler(e){var formElement;e=(e)?e:((ba.event)?ba.event:"");if(e){var eventsource=PINT_GetEventSource(e);for(formIndex=0;formIndex<d.forms.length;formIndex++){formElement=d.forms[formIndex];for(elementIndex=0;elementIndex<formElement.elements.length;elementIndex++){if(eventsource.name==formElement.elements[elementIndex].name){if(PINT_Global.OnChange.linkType[eventsource.id]=="anchor"&&formElement.elements[elementIndex].value!="")bd=formElement.action+"#"+formElement.elements[elementIndex].value;else if(PINT_Global.OnChange.linkType[eventsource.id]=="page"&&formElement.elements[elementIndex].value!="")bd=formElement.elements[elementIndex].value}}}}return bb}function PINT_OnChangeInit(){if(PINT_OnChangeInit.arguments.length!=2)return v;if(d.getElementById){var trigger=d.getElementById(PINT_OnChangeInit.arguments[0]);if(trigger){PINT_Global.OnChange.linkType[trigger.id]=PINT_OnChangeInit.arguments[1];trigger.onchange=PINT_OnChangeHandler}}return bb}var rot13map;function rot13init(){var map=new bj();var s="abcdefghijklmnopqrstuvwxyz";for(i=0;i<s.length;i++)map[s.charAt(i)]=s.charAt((i+13)%26);for(i=0;i<s.length;i++)map[s.charAt(i).toUpperCase()]=s.charAt((i+13)%26).toUpperCase();return map}function rot13(a){if(!rot13map)rot13map=rot13init();var s="";for(i=0;i<a.length;i++){var b=a.charAt(i);s+=(b>='A'&&b<='Z'||b>='a'&&b<='z'?rot13map[b]:b);}return s}function print_e(user,domain){var e=rot13(user)+"@"+rot13(domain);var out='<a href="mailto:'+e+'">';out+=e;out+='</a>';d.write(out);}PINT_FlashObject=function(swf,id,w,h,defaultImage,ver,imageMap,c){this.swf=swf;this.id=id;this.width=w;this.height=h;this.imageMap=imageMap;this.version=ver||6;this.align="middle";this.codebase=this.version+",0,0,0";this.redirect="";this.sq=m.search.split("?")[1]||"";this.defaultImage=defaultImage;this.altTxt="Please <a href='http://www.macromedia.com/go/getflashplayer'>upgrade your Flash Player</a>.";this.bypassTxt="";this.params=new bk();this.variables=new bk();if(c)this.color=this.addParam('bgcolor',c);this.addParam('quality','high');this.doDetect=getQueryParamValue('detectflash');};PINT_FlashObject.prototype.addParam=function(name,value){this.params[name]=value};PINT_FlashObject.prototype.getParams=function(){return this.params};PINT_FlashObject.prototype.getParam=function(name){return this.params[name]};PINT_FlashObject.prototype.addVariable=function(name,value){this.variables[name]=value};PINT_FlashObject.prototype.getVariable=function(name){return this.variables[name]};PINT_FlashObject.prototype.getVariables=function(){return this.variables};PINT_FlashObject.prototype.getParamTags=function(){var paramTags="";for(var param in this.getParams()){paramTags+='<param name="'+param+'" value="'+this.getParam(param)+'" />'}if(paramTags==""){paramTags=null}return paramTags};PINT_FlashObject.prototype.getHTML=function(){var flashHTML="";if(ba.ActiveXObject&&bm.userAgent.indexOf('Mac')==-1){flashHTML+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+this.codebase+'" width="'+this.width+'" height="'+this.height+'" id="'+this.id+'" align="'+this.align+'">';flashHTML+='<param name="movie" value="'+this.swf+'" />';if(this.getParamTags()!=null){flashHTML+=this.getParamTags();}if(this.getVariablePairs()!=null){flashHTML+='<param name="flashVars" value="'+this.getVariablePairs()+'" />'}flashHTML+='</object>'}else{flashHTML+='<embed type="application/x-shockwave-flash" src="'+this.swf+'" width="'+this.width+'" height="'+this.height+'" id="'+this.id+'" align="'+this.align+'"';for(var param in this.getParams()){flashHTML+=' '+param+'="'+this.getParam(param)+'"'}if(this.getVariablePairs()!=null){flashHTML+=' flashVars="'+this.getVariablePairs()+'"'}flashHTML+='></embed>'}return flashHTML};PINT_FlashObject.prototype.getVariablePairs=function(){var variablePairs=new bj();for(var name in this.getVariables()){variablePairs.push(name+"="+escape(this.getVariable(name)));}if(variablePairs.length>0){return variablePairs.join("&");}else{return null}};PINT_FlashObject.prototype.write=function(elementId){if(detectFlash(this.version)||this.doDetect=='false'){if(elementId){d.getElementById(elementId).innerHTML=this.getHTML();}else{d.write(this.getHTML());}}else{if(this.redirect!=""){m.replace(this.redirect);}else if(this.defaultImage!=""){imageString="<img src=\""+this.defaultImage+"\" width=\""+this.width+"\" height=\""+this.height+"\" border=\"0\" alt=\"\"";if(bl('typeof(this.imageMap)')!="undefined"&&this.imageMap!="")imageString+=" usemap=\"#"+this.imageMap+"\" ";imageString+=" class=\"inlineimage\" />";d.write(imageString);}else d.write(this.altTxt+""+this.bypassTxt);}};function getFlashVersion(){var flashversion=0;if(bm.plugins&&bm.plugins.length){var x=bm.plugins["Shockwave Flash"];if(x){if(x.description){var y=x.description;flashversion=y.charAt(y.indexOf('.')-1);}}}else{result=v;for(var i=15;i>=3&&result!=bb;i--){execScript('on error resume next: result = IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.'+i+'"))','VBScript');flashversion=i}}return flashversion}function detectFlash(ver){if(getFlashVersion()>=ver){return bb}else{return v}}function getQueryParamValue(param){var q=m.search;var detectIndex=q.indexOf(param);if(q.length>1&&detectIndex!=-1){return q.substring(q.indexOf("=",detectIndex)+1,q.indexOf("&",detectIndex));}else{return bb}}function addEvent(obj,evType,fn){if(obj.addEventListener){obj.addEventListener(evType,fn,bb);return bb}else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r}else{return v}}function Browser(){var ua,s,i;this.isIE=v;this.isNS=v;this.version=null;ua=bm.userAgent;s="MSIE";if((i=ua.indexOf(s))>=0){this.isIE=bb;this.version=br(ua.substr(i+s.length));return}s="Netscape6/";if((i=ua.indexOf(s))>=0){this.isNS=bb;this.version=br(ua.substr(i+s.length));return}s="Gecko";if((i=ua.indexOf(s))>=0){this.isNS=bb;this.version=6.1;return}}function PINT_BrowserDetection(){if(PINT_BrowserDetection.arguments.length!=1)return v;var browserUpgradeFile=PINT_BrowserDetection.arguments[0];var currentFileName=PINT_GetCurrentFileName();if(!d.getElementById&&(browserUpgradeFile.indexOf(currentFileName)=="-1"||currentFileName==""))bd.replace(PINT_GetRootDirectory()+'/'+browserUpgradeFile);}function popupWindow(){if(popupWindow.arguments.length<1)return v;var popupWin=null;popupWin=ba.open(popupWindow.arguments[0],popupWindow.arguments[1],popupWindow.arguments[2]);}function PINT_GetWindowSize(style){var size=400;if(style=="width"){if(typeof(ba.innerWidth)=='number')size=ba.innerWidth;else if(d.documentElement&&(d.documentElement.clientWidth||d.documentElement.clientHeight))size=d.documentElement.clientWidth;else if(d.body&&d.body.clientWidth)size=d.body.clientWidth}else if(style=="height"){if(typeof(ba.innerWidth)=='number')size=ba.innerHeight;else if(d.documentElement&&(d.documentElement.clientWidth||d.documentElement.clientHeight))size=d.documentElement.clientHeight;else if(d.body&&d.body.clientHeight)size=d.body.clientHeight}return size}function PINT_AnchorPopupWindows(){if(!d.getElementsByTagName)return;var anchors=PINT_Global.HTML.anchors;var currentAnchor;for(var anchorIndex=0;anchorIndex<anchors.length;anchorIndex++){var targetLink,relArray,relInformation,windowAttributes,javascriptTargetLink,windowName;var bd,menubar,resizable,scrollbars,status,toolbar;var width,height,windowType,windowName;currentAnchor=anchors[anchorIndex];targetLink=currentAnchor.getAttribute("href");relInformation=currentAnchor.getAttribute("rel");if(relInformation&&targetLink){relArray=relInformation.split("|");if(relArray[0]=="popup"&&relArray.length>=4){if(relArray[1]!="null")width=bc(relArray[1])?bc(relArray[1]):400;else width=PINT_GetWindowSize("width");if(relArray[2]!="null")height=bc(relArray[2])?bc(relArray[2]):400;else height=PINT_GetWindowSize("height");windowType=relArray[3];windowAttributes="width="+width+",height="+height;if(windowType=="custom"){if(relArray.length<10)return v;bd=bc(relArray[4])?bc(relArray[4]):0;menubar=bc(relArray[5])?bc(relArray[5]):0;resizable=bc(relArray[6])?bc(relArray[6]):0;scrollbars=bc(relArray[7])?bc(relArray[7]):0;status=bc(relArray[8])?bc(relArray[8]):0;toolbar=bc(relArray[9])?bc(relArray[9]):0;if(relArray.length==11)windowName=relArray[10];else windowName="popupWindow";windowAttributes+=",location="+bd+",menubar="+menubar+",resizable="+resizable+",scrollbars="+scrollbars+",status="+status+",toolbar="+toolbar}else{if(relArray.length==5)windowName=relArray[4];else windowName="popupWindow";if(windowType=="standard")windowAttributes+=",location=0,menubar=0,resizable=0,scrollbars=0,status=0,toolbar=0";else if(windowType=="resize")windowAttributes+=",location=0,menubar=0,resizable=1,scrollbars=0,status=0,toolbar=0";else if(windowType=="scrollbar")windowAttributes+=",location=0,menubar=0,resizable=0,scrollbars=1,status=0,toolbar=0";else if(windowType=="blank")windowAttributes="";else return v}javascriptTargetLink="javascript:popupWindow('"+targetLink+"','"+windowName+"','"+windowAttributes+"');";currentAnchor.setAttribute("href",javascriptTargetLink);}}}}

function showPostBit() {
	if (document.getElementById('postbit')) {
		var emailPrint = '<a href="mailto:?subject=Check out Identity 2008: See More Potential Conference &body='+document.location+'" id="email">Email</a>';
		var postBit = document.getElementById('postbit');
		postBit.innerHTML = emailPrint;
	}
}

/* PINT, PINT.util, PINT.util.dom, PINT.util.form */
if (typeof this.PINT == "undefined") {
    var PINT = {};
}

PINT.util = {};
PINT.connection = {};
PINT.widget = {};

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(oObject) {
        for (var i=0;i<this.length;i++) {
            if (this[i] == oObject) {
                return i;
            }
        }
        return -1;
    };
}

if (!Array.prototype.push) {
    Array.prototype.push = function() {
        for (var i=0;i<arguments.length;i++) {
            this[this.length] = arguments[i];
        }
    };
}


/*global PINT YAHOO */
/**
@item {Object} PINT.util
@info PINT.util object
*/
PINT.util = {
/**
    @item {Method} getQueryParamValue
    @parent PINT.util
    @info Method to get a value from the querystring
    @param {String} sParam
    @return {String} value
    @sample
    <script type="text/javascript">
    alert(PINT.util.getQueryParamValue('firstname'));
    </script>
*/
    getQueryParamValue : function(sParam) {
    	var aTemp = document.location.search.split('&');
    	for (var i=0;i<aTemp.length;i++) {
    	    var aTemp2 = aTemp[i].split('=');
    	    if (aTemp2[0] == sParam) {
    	        return aTemp2[1];
    	    }
    	}
		return "";
    },
/**
    @item {Method} setWindowTitle
    @parent PINT.util
    @info Method to set the Title of the current document
    @param {String} sTitle The new title
*/
    setWindowTitle : function(sTitle) {
        document.title = sTitle;
    },
/**
    @item {Method} setWindowStatus
    @parent PINT.util
    @info Method to set the status of the current window object
    @param {}
*/
    setWindowStatus : function(sStatus) {
        window.status = sStatus;
    },
/**
    @item {Method} getRandomString
    @parent PINT.util
    @info Method to generate a random string of letters and numbers
    @param {Integer} iLength The length of the string to be generated
    @param {String} sChars The characters to generate the string from
    @sample
    <script type="text/javascript">
    alert(PINT.util.getRandomString(5)); 
    </script>
    alerts: F7Q90
	
    <script type="text/javascript">
    alert(PINT.util.getRandomString(5,'!@#$%^&*()')); 
    </script>
	alerts: $*@)%
*/
    getRandomString : function(iLength, sChars) {
        iLength = iLength || 8;
        sChars = sChars || "abcdefghijklmnopqrstuvwxyz0123456789";
        var sRandomString = "";
        for (var i=0;i<iLength;i++) {
            sRandomString += sChars.charAt(parseInt(sChars.length * Math.random(), 10));
        }
        return sRandomString;
    },
/**
    @item {Method} getCurrentFileName
    @parent PINT.util
    @info Returns the file name of the current page, if there is one
    @return {String} File name
*/
	getCurrentFileName : function() {
		var sUrl = decodeURI(window.location.pathname);
		var iStart = sUrl.lastIndexOf("/") + 1;
		var iEnd = (sUrl.indexOf("?") > 0) ? sUrl.indexOf( "?" ) : sUrl.length;
		return sUrl.substring(iStart, iEnd);
	},
/**
    @item {Method} getCurrentPath
    @parent PINT.util
    @info Returns the path if there is one
    @return {String} Path from address to the filename
*/
	getCurrentFilePath : function()	{
		var sUrl = decodeURI(window.location.pathname);
		var iStart = sUrl.lastIndexOf("/");
		return sUrl.substring(0, iStart);
	},
/**
    @item {Method} getCurrentDirectory
    @parent PINT.util
    @info Returns current directory
    @return {String} Directory name
*/
	getCurrentDirectory : function () {
		var sFilePath = this.getCurrentFilePath();
		var aDirectories = sFilePath.split("/");
		return aDirectories.length && aDirectories[aDirectories.length-1] !== "" ? aDirectories[aDirectories.length-1] : "";
	},

    encodeJSON : function(sData) {
        sData = sData.replace(/\[/gi, "[");
        sData = sData.replace(/\]/gi, "]");
        sData = sData.replace(/\{/gi, "{");
        sData = sData.replace(/\}/gi, "}");
        sData = sData.replace(/\'/gi, "0x27");
        sData = sData.replace(/\"/gi, "0x22");
        sData = sData.replace(/\\/gi, "\\\\");
        sData = sData.replace(/\t/gi, "0x09");
        sData = sData.replace(/\n/gi, "0x0A");
        sData = sData.replace(/\f/gi, "0x0C");
        sData = sData.replace(/\r/gi, "0x0D");
        return sData;
    },

    decodeJSON : function(sData) {
        sData = sData.replace(/\[/gi, "[");
        sData = sData.replace(/\]/gi, "]");
        sData = sData.replace(/\{/gi, "{");
        sData = sData.replace(/\}/gi, "}");
        sData = sData.replace(/0x27/gi, "'");
        sData = sData.replace(/0x28/gi, '"');
        sData = sData.replace(/\\\\/gi, "\\");
        sData = sData.replace(/0x09/gi, "\t");
        sData = sData.replace(/0x0A/gi, "\n");
        sData = sData.replace(/0x0C/gi, "\f");
        sData = sData.replace(/0x0D/gi, "\r");
        return sData;
    },
    /**
    @item {Method} obfuscateMailto
    @parent PINT.util
    @info void Writes an obfuscated mailto: into the page
    @param {String} sDomain The domain portion of the email address
    @param {String} sUser The user portion of the email address
    @param {String} sText Optional The link text. If this value is not passed, then the email address will be used as the link text.
    @sample
    Use: 
    <script type="text/javascript">PINT.util.obfuscateMailto('blah.com', 'user', 'email me');</script>
    where you want the link to appear.
    */
    obfuscateMailto : function(sDomain, sUser, sText) {
    	var sLinkText;
        if (sText === null)
        {
            sLinkText = sUser + "&#" + 64 + ";" + sDomain;
        }
        else
        {
            sLinkText = sText;
        }
    	document.write("<a href=\"m&#"+97+";il&#"+116+";o:"+ sUser +"&#"+64+";" + sDomain + "\">"+sLinkText+"</a>");
    },
	/**
    @item {Method} anchorPopupWindows
    @parent PINT.util
    @info void Grabs all of the anchors with rel tags that say popup in them
    @sample
    Use:
	Put this into PINT.init when you want to scan for popups on a site:
	PINT.util.anchorPopupWindows();
    */
	anchorPopupWindows : function() { 
		if(!document.getElementsByTagName) { return; }
	
		var getPopupAnchors = function(el) {
			var rel = el.getAttribute("rel");
			if (rel) { return (rel.indexOf("popup")>=0); 
			} else { return false; }
		};
		var anchors = YAHOO.util.Dom.getElementsBy(getPopupAnchors, "a");
		var currentAnchor;
	
		for (var anchorIndex = 0; anchorIndex < anchors.length; anchorIndex++) {
			var targetLink, relArray, relInformation, windowAttributes, javascriptTargetLink;
			var location, menubar, resizable, scrollbars, status, toolbar;
			var width, height, windowType, windowName;
			currentAnchor = anchors[anchorIndex];
			
			targetLink = currentAnchor.getAttribute("href"); 
			relInformation = currentAnchor.getAttribute("rel"); 
			
			if (relInformation && targetLink) {
				relArray = relInformation.split("|");
				var size = PINT.util.browser.getSize();
				if (relArray.length >= 4) {
					if (relArray[1] != "null") {
						width = parseInt(relArray[1], 10) ? parseInt(relArray[1], 10) : 400;
					} else {
						width = size[2];
					}
					
					if (relArray[2] != "null") {
						height = parseInt(relArray[2], 10) ? parseInt(relArray[2], 10) : 400;
					} else {
						height = size[3];
					}
	
					windowType = relArray[3];
	
					windowAttributes = "width=" + width + ",height=" + height; 
					if (windowType == "custom") {
						if (relArray.length < 10) { return false; }
						location = parseInt(relArray[4], 10) ? parseInt(relArray[4], 10): 0;
						menubar = parseInt(relArray[5], 10) ? parseInt(relArray[5], 10): 0;
						resizable = parseInt(relArray[6], 10) ? parseInt(relArray[6], 10): 0;
						scrollbars = parseInt(relArray[7], 10) ? parseInt(relArray[7], 10): 0;
						status = parseInt(relArray[8], 10) ? parseInt(relArray[8], 10): 0;
						toolbar = parseInt(relArray[9], 10) ? parseInt(relArray[9], 10): 0;
						
						if (relArray.length == 11) { windowName = relArray[10]; 
						} else { windowName = "popupWindow"; }
					
						windowAttributes += ",location="+ location +",menubar=" + menubar +",resizable=" + resizable + ",scrollbars=" + scrollbars + ",status=" + status + ",toolbar="+ toolbar;
					} else {
						if (relArray.length == 5) { windowName = relArray[4];
						} else { windowName = "popupWindow"; }

						if (windowType == "standard") { windowAttributes += ",location=0,menubar=0,resizable=0,scrollbars=0,status=0,toolbar=0";
						} else if (windowType == "resize") { windowAttributes += ",location=0,menubar=0,resizable=1,scrollbars=0,status=0,toolbar=0";
						} else if (windowType == "scrollbar") { windowAttributes += ",location=0,menubar=0,resizable=0,scrollbars=1,status=0,toolbar=0";
						} else if (windowType == "blank") { windowAttributes = "";					
						} else { return false; }
					}
					
					var parameters = [targetLink,windowName,windowAttributes];
					YAHOO.util.Event.addListener(currentAnchor, 'click', PINT.util.popupWindow, parameters);
				}
			}
		}
    },
	/**
    @item {Method} popupWindow
    @parent PINT.util
    @info void Used by anchorPopupWindows to actually open a popup
    */
	popupWindow : function(e, params) { 
		if (params.length < 1) { return false; }
		var popupWin = null; 
		popupWin = window.open(params[0],params[1],params[2]);  
		YAHOO.util.Event.preventDefault(e);
	}
};

/**
@item {Object} PINT.util.dom
@info PINT.util.dom object for DOM manipulation
*/
PINT.util.dom = {

    getElementById : function(sId) {
        if (oNode=document.getElementById(sId)) {
            return oNode;
        } else {
            return null;
        }
    },

    getElementsByTagName : function(sTagName, iOffset) {
        if (iOffset == null || typeof(iOffset) == "undefined") {
            return document.getElementsByTagName(sTagName);
        } else {
            if (oNode=document.getElementsByTagName(sTagName)[iOffset]) {
                return oNode;
            } else {
                return null;
            }
        }
    },

    getElementsByClassName : function(sClassName, sTagName, oStartElement) {
        sTagName = sTagName || "*";
        oStartElement = oStartElement || document;
        var aTagNodes = (sTagName == "*" && document.all)?document.all:oStartElement.getElementsByTagName(sTagName);
        var aNodes = new Array();
        for (var i=0;i<aTagNodes.length;i++) {
            var aClasses = aTagNodes[i].className.split(" ");
            for (var j=0;j<aClasses.length;j++) {
                if (aClasses[j] == sClassName) {
                    aNodes[aNodes.length] = aTagNodes[i];
                    break;
                }
            }
        }
        return aNodes;
    },

    createElement : function(sTag, oParent, sText) {
        var aAttributes = [];
        if (aMatches=sTag.match(/(.+)\[(.+)\]/)) {
            sTag = aMatches[1];
            aAttributes = aMatches[2].split(",");
        }

        if (PINT.util.browser.bIe && sTag == "INPUT" && aAttributes.indexOf("type=radio") != -1) {
            var sName = "";
            for (var i=0;i<aAttributes.length;i++) {
                var aTemp = aAttributes[i].split("=");
                if (aTemp[0] == "name") {
                    sName = aTemp[1];
                }
            }
            var oNode = document.createElement('<input type="radio" name="' + sName + '" />');
        } else {
            if (sTag == "TEXT" && sText != null && typeof(sText) != "undefined") {
                var oNode = document.createTextNode(sText);
            } else {
                var oNode = document.createElement(sTag);
            }
        }
        for (var i=0;i<aAttributes.length;i++) {
            var aTemp = aAttributes[i].split("=");
            try {
                oNode.setAttribute(aTemp[0], aTemp[1]);
            } catch(oError) {
            }
        }

        if (oParent && typeof(oParent) != "undefined") {
            oParent.appendChild(oNode);
        }
        return oNode;
    },

    removeElement : function(oNode) {
        if (oNode && oNode.parentNode) {
            oNode.parentNode.removeChild(oNode);
        }
    },

    getFirstParentByTagName : function(oNode, sTagName) {
        while (oNode.parentNode && oNode.tagName != sTagName) {
            oNode = oNode.parentNode;
        }
        if (oNode.tagName) {
            return oNode;
        } else {
            return null;
        }
    },

    getFirstParentById : function(oNode, sId) {
        while (oNode.parentNode && oNode.id != sId) {
            oNode = oNode.parentNode;
        }
        if (oNode.tagName) {
            return oNode;
        } else {
            return null;
        }
    },

    getFirstParentByClassName : function(oNode, sClassName) {
        var aClassNames = oNode.className.split(" ");
        while (oNode.parentNode && aClassNames.indexOf(sClassName) == -1) {
            oNode = oNode.parentNode;
            if (oNode.className) {
                aClassNames = oNode.className.split(" ");
            } else {
                return null;
            }
        }
        if (oNode.tagName) {
            return oNode;
        } else {
            return null;
        }
    },

    createXmlElement : function(sXml) {
        if (window.ActiveXObject) {
            var oXmlDom = new ActiveXObject("Microsoft.XMLDOM");
            oXmlDom.async = "false";
            oXmlDom.loadXML(sXml);
        } else if (navigator.userAgent.toLowerCase().indexOf("konqueror") != -1) {
            sXml = sXml.replace(/<\?xml(.+)\?>/, "");
            var oXmlDom = document.implementation.createDocument("", "", null);
            oXmlDom.loadXML(sXml);
        } else {
            var oXmlDom = document.createElement("xmldata");
            oXmlDom.innerHTML = sXml;
        }
        return oXmlDom;
    },

    getElementLeftOffset : function(oElement) {
        var iOffsetLeft = parseInt(oElement.offsetLeft, 10);
        var oOffsetParent = oElement.offsetParent;
        while (oOffsetParent) {
            iOffsetLeft += parseInt(oOffsetParent.offsetLeft, 10);
            oOffsetParent = oOffsetParent.offsetParent;
        }
        return iOffsetLeft;
    },

    getElementTopOffset : function(oElement) {
        var iOffsetTop = parseInt(oElement.offsetTop, 10);
        var oOffsetParent = oElement.offsetParent;
        while (oOffsetParent) {
            iOffsetTop += parseInt(oOffsetParent.offsetTop, 10);
            oOffsetParent = oOffsetParent.offsetParent;
        }
        return iOffsetTop;
    },

    getElementWidth : function(oElement) {
        if (PINT.util.browser.bIe) {
            return parseInt(oElement.offsetWidth, 10);
        } else {
            return (parseInt(oElement.offsetWidth, 10) > parseInt(oElement.clientWidth, 10))?parseInt(oElement.offsetWidth, 10):parseInt(oElement.clientWidth, 10);
        }
    },

    getElementHeight : function(oElement) {
        if (PINT.util.browser.bIe) {
            return parseInt(oElement.offsetHeight, 10);
        } else {
            return (parseInt(oElement.offsetHeight, 10) > parseInt(oElement.clientHeight, 10))?parseInt(oElement.offsetHeight, 10):parseInt(oElement.clientHeight, 10);
        }
    }

}



PINT.util.form = {
	
    disableSubmit : function(sForm) {
        var oForm = PINT.util.form.getForm(sForm);
        if (!oForm || (oForm.tagName.toUpperCase() != "FORM")) {
            oForm = document.forms[0];
        }
        if (oForm && (oForm.tagName.toUpperCase() == "FORM")) {
            for (var i=0;i<oForm.elements.length;i++) {
                if (oForm.elements[i].type == "submit") {
                    oForm.elements[i].disabled = true;
                }
            }
        }
    },

    selectFirst : function(sForm) {
        var oForm = PINT.util.form.getForm(sForm);
        if (!oForm || oForm.tagName.toUpperCase() != "FORM") {
            oForm = document.forms[0];
        }
        if (oForm && oForm.tagName.toUpperCase() == "FORM") {
            for (var i=0;oForm.elements.length;i++) {
                if (oForm.elements[i].type == "text" || oForm.elements[i].type == "password" || oForm.elements[i].type == "textarea") {
                    oForm.elements[i].focus();
                    break;
                }
            }
        }
    },

    getForm : function(sForm) {
        if ((oForm=PINT.util.dom.getElementById(sForm)) && oForm.tagName.toUpperCase() == "FORM") {
            return oForm;
        } else {
            if (oForm=document.forms[sForm]) {
                return oForm;
            }
        }
        return null;
    },

    getElement : function(sElement, sForm) {
        if (sForm && (oForm=PINT.util.form.getForm(sForm))) {
            if (oElement=oForm.elements[sElement]) {
                return oElement;
            }
        } else {
            for (var i=0;i<document.forms.length;i++) {
                for (var j=0;j<document.forms[i].elements.length;j++) {
                    if (document.forms[i].elements[j].length > 1) {
                        if (document.forms[i].elements[j][0].name == sElement) {
                            return document.forms[i].elements[j];
                        }
                    } else {
                        if (document.forms[i].elements[j].name == sElement) {
                            return document.forms[i].elements[j];
                        }
                    }
                }
            }
        }
        return null;
    },

    getValue : function(oElement) {
        if (oElement.type == "text" || oElement.type == "textarea" || oElement.type == "password" || oElement.type == "hidden" || oElement.type == "file") {
            return [oElement.value];
        } else if (oElement.type == "select-one") {
            if (oElement.options.length == 0) {
                return [""];
            } else {
                if (oElement.options[oElement.selectedIndex].getAttribute("value") != null) {
                    return [oElement.options[oElement.selectedIndex].value];
                } else {
                    return [oElement.options[oElement.selectedIndex].text];
                }
            }
        } else if (oElement.type == "select-multiple") {
            if (oElement.options.length == 0) {
                return [""];
            } else {
                var aValues = [];
                for (var i=0;i<oElement.options.length;i++) {
                    if (oElement.options[i].getAttribute("value") != null) {
                        aValues.push(oElement.options[i].value);
                    } else {
                        aValues.push(oElement.options[i].text);
                    }
                }
                return aValues;
            }
        }
    }
};

PINT.util.form.select = function(oSelect) {
    this.oSelect = oSelect;

    this.getValue = function() {
        return this.oSelect.value;
    };

    this.getText = function() {
        return this.oSelect.text;
    };

    this.add = function(sValue, sText) {
    	var iLen = this.oSelect.options.length;
    	this.oSelect.options[iLen] = new Option(sText, sValue);
    	return this;
    };

    this.removeByValue = function(sValue) {
    	var iLen = this.oSelect.options.length;
    	for (i=(iLen-1);i>=0;i--) {
    		if (this.oSelect.options[i].value == sValue) {
    			this.oSelect.options[i] = null;
    		}
    	}
    	return this;
    };

    this.removeByText = function(sText) {
    	var iLen = this.oSelect.options.length;
    	for (i=(iLen-1);i>=0;i--) {
    		if (this.oSelect.options[i].text == sText) {
    			this.oSelect.options[i] = null;
    		}
    	}
    	return this;
    };

    this.selectByValue = function(sValue) {
    	var iLen = this.oSelect.options.length;
    	for (i=(iLen-1);i>=0;i--) {
    		if (this.oSelect.options[i].value == sValue) {
    			this.oSelect.options[i].selected = true;
    		}
    	}
    	return this;
    };

    this.selectByText = function(sText) {
    	var iLen = this.oSelect.options.length;
    	for (i=(iLen-1);i>=0;i--) {
    		if (this.oSelect.options[i].text == sText) {
    			this.oSelect.options[i].selected = true;
    		}
    	}
    	return this;
    };

    this.removeAll = function() {
    	this.oSelect.options.length = 0;
    	return this;
    };

    this.selectAll = function() {
        var iLen = this.oSelect.options.length;
    	for (i=0;i<iLen;i++) {
    		this.oSelect.options[i].selected = true;
    	}
    	return this;
    };
};

PINT.util.form.validator = function() {
    this.aParams = arguments[0] || [];
    this.sForm = this.aParams["form"] || "";
    this.aRules = [];
    this.aMessages = [];
    this.aElements = [];

    this.oDefaultErrorHandler = function(oElement) {
        if (oElement.length && oElement.length > 0) {
            for (var i=0;i<oElement.length;i++) {
                oElement[i].style.backgroundColor = "#ff0000";
            }
        } else {
            oElement.style.backgroundColor = "#ff0000";
        }
    };

    this.oDefaultClearHandler = function(oElement) {
        if (oElement.length && oElement.length > 0) {
            for (var i=0;i<oElement.length;i++) {
                oElement[i].style.backgroundColor = "";
            }
        } else {
            oElement.style.backgroundColor = "";
        }
    };

    this.oDefaultNotificationHandler = function() {
        var sMessage = "One or more errors occured during the process\n\n";
        for (var i=0;i<this.aMessages.length;i++) {
            sMessage += this.aMessages[i] + "\n";
        }
        alert(sMessage);
    };

    this.oErrorHandler = this.aParams["errorHandler"] || this.oDefaultErrorHandler;
    this.oClearHandler = this.aParams["clearHandler"] || this.oDefaultClearHandler;
    this.oNotificationHandler = this.aParams["notificationHandler"] || this.oDefaultNotificationHandler;

    this.addRule = function(oRule) {
        oRule.oValidator = this;
        oRule.oElement = PINT.util.form.getElement(oRule.sTarget, this.sForm);
        this.aRules.push(oRule);
    };

    this.activate = function() {
        var self = this;
        PINT.util.dom.getElementById(this.sForm).onsubmit = function() {
            for (var i=0;i<self.aRules.length;i++) {
                if (self.aRules[i].oElement.length && self.aRules[i].oElement.length > 0) {
                    if (self.aElements.indexOf(self.aRules[i].oElement[0]) == -1) {
                        self.oClearHandler(self.aRules[i].oElement);
                        if ("" != (sMessage=self.aRules[i].check())) {
                            self.aMessages.push(sMessage);
                            self.aElements.push(self.aRules[i].oElement[0]);
                        }
                    }
                } else {
                    if (self.aElements.indexOf(self.aRules[i].oElement) == -1) {
                        self.oClearHandler(self.aRules[i].oElement);
                        if ("" != (sMessage=self.aRules[i].check())) {
                            self.aMessages.push(sMessage);
                            self.aElements.push(self.aRules[i].oElement);
                        }
                    }
                }
            }
            if (self.aMessages.length > 0) {
                self.oNotificationHandler(self.aMessages);
                self.aMessages = [];
                self.aElements = [];
                return false;
            } else {
                self.aMessages = [];
                self.aElements = [];
                return true;
            }
        }
    };
};

PINT.util.form.rule = function() {
    var self = this;

    this.aParams = arguments[0] || [];
    this.sTarget = this.aParams["element"] || "";
    this.sRule = this.aParams["rule"] || "NOTNULL";
    this.oConditions = this.aParams["conditions"] || null;
    this.sMessage = this.aParams["message"] || "";
    this.oValidator = null;
    this.oElement = null;
    this.bChecked = false;

    this.check = function() {
        eval("this.check" + this.sRule)();
        if (!this.bChecked) {
            this.oValidator.oErrorHandler(this.oElement);
            return this.sMessage;
        } else {
            return "";
        }
    };

    this.checkJS = function() {
        self.bChecked = eval(self.oConditions());
    };

    this.checkNOTNULL = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            self.bChecked = self.bChecked && (aValues[i].replace(/(\s)*/g, "") != "");
        }
    };

    this.checkEMAIL = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && (aValues[i].search(/^[a-zA-Z0-9]([a-zA-Z0-9\+\._-])*(@){1}([a-zA-Z0-9_-])+(\.){1}([a-zA-Z0-9\._-])+$/) != -1);
            }
        }
    };

    this.checkDIGITS = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && (aValues[i].replace(/([0-9])*/g, "") == "");
            }
        }
    };

    this.checkNUMERIC = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && (aValues[i].replace(/([0-9\.])*/g, "") == "");
            }
        }
    };

    this.checkALPHA = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && (aValues[i].replace(/([a-zA-Z])*/g, "") == "");
            }
        }
    };

    this.checkUSZIP = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && (aValues[i].replace(/([0-9]{5}(\-*)[0-9]{0,5})*/g, "") == "");
            }
        }
    };

    this.checkUSPHONE = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && (aValues[i].replace(/([0-9]{3}\-[0-9]{3}\-[0-9]{4})*/g, "") == "");
            }
        }
    };

    this.checkMINCHARS = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && (aValues[i].length >= parseInt(self.oConditions, 10));
            }
        }
    };

    this.checkMAXCHARS = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && (aValues[i].length <= parseInt(self.oConditions, 10));
            }
        }
    };

    this.checkEQ = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                if (typeof(self.oConditions) == "object") {
                    var sValue = PINT.util.form.getValue(self.oConditions)[0];
                    self.bChecked = self.bChecked && (aValues[i] == sValue);
                } else {
                    self.bChecked = self.bChecked && (aValues[i] == self.oConditions);
                }
            }
        }
    };
    
    this.checkNOTEQ = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                if (typeof(self.oConditions) == "object") {
                    var sValue = PINT.util.form.getValue(self.oConditions)[0];
                    self.bChecked = self.bChecked && (aValues[i] != sValue);
                } else {
                    self.bChecked = self.bChecked && (aValues[i] != self.oConditions);
                }
            }
        }
    };

    this.checkEXTENSION = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        var aExtensions = self.oConditions.split(",");
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                var aTokens = aValues[i].split(".");
                var sExtension = aTokens[aTokens.length-1].toLowerCase();
                self.bChecked = self.bChecked && (aExtensions.indexOf(sExtension) != -1);
            }
        }
    };

    this.checkREGEXP = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        var oRegExp = new RegExp(this.oConditions);
        for (var i=0;i<aValues.length;i++) {
            if (aValues[i].replace(/(\s)*/g, "") != "") {
                self.bChecked = self.bChecked && oRegExp.test(aValues[i]);
            }
        }
    };

    this.checkCHECKED = function() {
        self.bChecked = self.oElement.checked;
    };

    this.checkSELECTED = function() {
        self.bChecked = false;
        for (var i=0;i<self.oElement.length;i++) {
            self.bChecked = self.bChecked || self.oElement[i].checked;
        }
    };

    this.checkCC = function() {
        var aValues = PINT.util.form.getValue(self.oElement);
        self.bChecked = true;
        for (var i=0;i<aValues.length;i++) {
            if ((sValue=aValues[i].replace(/(\s)*/g, "")) != "") {
                if (sValue.length > 19) {
                    self.bChecked = false;
                    return;
                } else {
                    var iSum = 0;
                    var iMul = 1;
                    var iLen = sValue.length;
                    for (var i=0;i<iLen;i++) {
                        iDigit = sValue.substring(iLen-i-1, iLen-i);
                        iCode = parseInt(iDigit, 10) * iMul;
                        if (iCode >= 10) {
                            iSum += (iCode % 10) + 1;
                        } else {
                            iSum += iCode;
                        }
                        if (iMul == 1) {
                            iMul++;
                        } else {
                            iMul--;
                        }
                    }
                    if ((iSum % 10) == 0) {
                        self.bChecked = self.bChecked && true;
                    } else {
                        self.bChecked = false;
                        return;
                    }
                }
            }
        }
    };

};