function Exception(name,message)
{if(name)
this.name=name;if(message)
this.message=message;}
Exception.prototype.setName=function(name)
{this.name=name;}
Exception.prototype.getName=function()
{return this.name;}
Exception.prototype.setMessage=function(msg)
{this.message=msg;}
Exception.prototype.getMessage=function()
{return this.message;}
function FlashTag(src,width,height)
{this.src=src;this.width=width;this.height=height;this.version='7,0,14,0';this.id=null;this.bgcolor='ffffff';this.flashVars=null;}
FlashTag.prototype.setVersion=function(v)
{this.version=v;}
FlashTag.prototype.setId=function(id)
{this.id=id;}
FlashTag.prototype.setBgcolor=function(bgc)
{this.bgcolor=bgc;}
FlashTag.prototype.setFlashvars=function(fv)
{this.flashVars=fv;}
FlashTag.prototype.toString=function()
{var ie=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;var flashTag=new String();if(ie)
{flashTag+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';if(this.id!=null)
{flashTag+='id="'+this.id+'" ';}
flashTag+='codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+this.version+'" ';flashTag+='width="'+this.width+'" ';flashTag+='height="'+this.height+'">';flashTag += '<param name="AllowScriptAccess" value="always"/>';flashTag+='<param name="movie" value="'+this.src+'"/>';flashTag+='<param name="quality" value="high"/>';flashTag+='<param name="bgcolor" value="#'+this.bgcolor+'"/>';if(this.flashVars!=null)
{flashTag+='<param name="flashvars" value="'+this.flashVars+'"/>';}
flashTag+='</object>';}
else
{flashTag+='<embed src="'+this.src+'" ';flashTag+='quality="high" ';flashTag+='bgcolor="#'+this.bgcolor+'" ';flashTag += 'AllowScriptAccess="always" ';flashTag+='width="'+this.width+'" ';flashTag+='height="'+this.height+'" ';flashTag+='type="application/x-shockwave-flash" ';if(this.flashVars!=null)
{flashTag+='flashvars="'+this.flashVars+'" ';}
if(this.id!=null)
{flashTag+='name="'+this.id+'" ';}
flashTag+='pluginspage="http://www.macromedia.com/go/getflashplayer">';flashTag+='</embed>';}
return flashTag;}
FlashTag.prototype.write=function(doc)
{doc.write(this.toString());}
FlashTag.prototype.writeToElement=function(elementId)
{var n=(typeof elementId=='string')?document.getElementById(elementId):elementId;n.innerHTML=this.toString();}
function FlashSerializer(useCdata)
{this.useCdata=useCdata;}
FlashSerializer.prototype.serialize=function(args)
{var qs=new String();for(var i=0;i<args.length;++i)
{switch(typeof(args[i]))
{case'undefined':qs+='t'+(i)+'=undf';break;case'string':qs+='t'+(i)+'=str&d'+(i)+'='+escape(args[i]);break;case'number':qs+='t'+(i)+'=num&d'+(i)+'='+escape(args[i]);break;case'boolean':qs+='t'+(i)+'=bool&d'+(i)+'='+escape(args[i]);break;case'object':if(args[i]==null)
{qs+='t'+(i)+'=null';}
else if(args[i]instanceof Date)
{qs+='t'+(i)+'=date&d'+(i)+'='+escape(args[i].getTime());}
else
{try
{qs+='t'+(i)+'=xser&d'+(i)+'='+escape(this._serializeXML(args[i]));}
catch(exception)
{throw new Exception("FlashSerializationException","The following error occurred during complex object serialization: "+exception.getMessage());}}
break;default:throw new Exception("FlashSerializationException","You can only serialize strings, numbers, booleans, dates, objects, arrays, nulls, and undefined.");}
if(i!=(args.length-1))
{qs+='&';}}
return qs;}
FlashSerializer.prototype._serializeXML=function(obj)
{var doc=new Object();doc.xml='<fp>';this._serializeNode(obj,doc,null);doc.xml+='</fp>';return doc.xml;}
FlashSerializer.prototype._serializeNode=function(obj,doc,name)
{switch(typeof(obj))
{case'undefined':doc.xml+='<undf'+this._addName(name)+'/>';break;case'string':doc.xml+='<str'+this._addName(name)+'>'+this._escapeXml(obj)+'</str>';break;case'number':doc.xml+='<num'+this._addName(name)+'>'+obj+'</num>';break;case'boolean':doc.xml+='<bool'+this._addName(name)+' val="'+obj+'"/>';break;case'object':if(obj==null)
{doc.xml+='<null'+this._addName(name)+'/>';}
else if(obj instanceof Date)
{doc.xml+='<date'+this._addName(name)+'>'+obj.getTime()+'</date>';}
else if(obj instanceof Array)
{doc.xml+='<array'+this._addName(name)+'>';for(var i=0;i<obj.length;++i)
{this._serializeNode(obj[i],doc,null);}
doc.xml+='</array>';}
else
{doc.xml+='<obj'+this._addName(name)+'>';for(var n in obj)
{if(typeof(obj[n])=='function')
continue;this._serializeNode(obj[n],doc,n);}
doc.xml+='</obj>';}
break;default:throw new Exception("FlashSerializationException","You can only serialize strings, numbers, booleans, objects, dates, arrays, nulls and undefined");break;}}
FlashSerializer.prototype._addName=function(name)
{if(name!=null)
{return' name="'+name+'"';}
return'';}
FlashSerializer.prototype._escapeXml=function(str)
{if(this.useCdata)
return'<![CDATA['+str+']]>';else
return str.replace(/&/g,'&amp;').replace(/</g,'&lt;');}
function FlashProxy(uid,proxySwfName)
{this.uid=uid;this.proxySwfName=proxySwfName;this.flashSerializer=new FlashSerializer(false);}
FlashProxy.prototype.call=function()
{if(arguments.length==0)
{throw new Exception("Flash Proxy Exception","The first argument should be the function name followed by any number of additional arguments.");}
var qs='lcId='+escape(this.uid)+'&functionName='+escape(arguments[0]);if(arguments.length>1)
{var justArgs=new Array();for(var i=1;i<arguments.length;++i)
{justArgs.push(arguments[i]);}
qs+=('&'+this.flashSerializer.serialize(justArgs));}
var divName='_flash_proxy_'+this.uid;if(!document.getElementById(divName))
{var newTarget=document.createElement("div");newTarget.id=divName;document.body.appendChild(newTarget);}
var target=document.getElementById(divName);var ft=new FlashTag(this.proxySwfName,1,1);ft.setVersion('6,0,65,0');ft.setFlashvars(qs);target.innerHTML=ft.toString();}
FlashProxy.callJS=function()
{var functionToCall=eval(arguments[0]);var argArray=new Array();for(var i=1;i<arguments.length;++i)
{argArray.push(arguments[i]);}
functionToCall.apply(functionToCall,argArray);}
function RichDesign(objName){
this.objName = (objName != null) ? objName : "rd";
this.swf = "http://brooksbrothersad.richfx.com.edgesuite.net/shirtconfig/assets/movies/framework.swf";
this.movieName = "richdesign";
this.width = 700;
this.height = 530;
this.minVersion = "7,0,14,0";
this.bgcolor = "#FFFFFF";
this.usexi = false;
this.quality = "high";
this.xiRedirectUrl = null;
this.noFlashPage = "";	
this.targetElement = "";
this.clientID = ""; this.targetPage = ""; this.viewBagPage = ""; this.collar = ""; this.cuff = ""; this.monogram = ""; this.monogramstyle = ""; this.monogramlocation = ""; this.fit = ""; this.necksize = ""; this.sleevelength = ""; this.pocket = ""; this.other = ""; this.monogramcolor = ""; this.backstyle = ""; this.plcktbutton = ""; 
this.pageUrl = "";
this.inputs = new Array();
this.inputnames = new Array();}
var lcId = new Date().getTime();
var flashProxy = new FlashProxy(lcId, "http://brooksbrothersad.richfx.com.edgesuite.net/shirtconfig/assets/gateway.swf");

RichDesign.prototype.personalize = function(){
var vals="";
for (i=0;i<this.inputnames.length;i++){
var e = document.getElementById(this.inputnames[i]);
if ((e != null)&&(this.inputs[this.inputnames[i]]!="btnPersonalize")) {vals+=escape(this.inputs[this.inputnames[i]])+"="+escape(e.value)+"&";}}
flashProxy.call("setVars", vals);}

RichDesign.prototype.changeColor = function(color){flashProxy.call("setVar", "itemColor", escape(color));}
RichDesign.prototype.setVar = function(name,value){flashProxy.call("setVar", name, value);}

RichDesign.prototype.addInput = function(name, elementid){ 
var evalstr=this.objName+".personalize();";
this.inputs[elementid] = name; 
this.inputnames[this.inputnames.length] = elementid;
var e = document.getElementById(elementid);
if ((e!=null)&&(name=="btnPersonalize")){e.onclick = function(evt){eval(evalstr);}}
if ((e!=null)&&(name=="itemColor")){e.onchange = function(evt){flashProxy.call("setVar", name, e.value);}}}

RichDesign.prototype.render = function(){
var ft = new FlashTag(this.swf, this.width, this.height, this.minVersion);
ft.setFlashvars("clientID="+this.clientID+"&serviceUrl=http://brooksbrothersad.richfx.com/shirtconfig/service/main.asmx&lcId="+lcId+"&rootPath=http://brooksbrothersad.richfx.com.edgesuite.net/shirtconfig/assets&objName="+this.objName+"&targetPage="+this.targetPage+"&viewBagPage="+this.viewBagPage+"&collar="+this.collar+"&cuff="+this.cuff+"&monogram="+this.monogram+"&monogramstyle="+this.monogramstyle+"&monogramlocation="+this.monogramlocation+"&fit="+this.fit+"&necksize="+this.necksize+"&sleevelength="+this.sleevelength+"&pocket="+this.pocket+"&other="+this.other+"&monogramcolor="+this.monogramcolor+"&backstyle="+this.backstyle+"&plcktbutton="+this.plcktbutton);
ft.writeToElement(this.targetElement);}

RichDesign.prototype.fillOnLoad = function(){}

function bookmark(url){
if (url==null) url = "http://www.brooksbrothers.com/selectshirts/selectshirts.tem";
title = "Brooks Brothers 'Select' Special Order Dress Shirts";
if (window.sidebar){window.sidebar.addPanel(title, url,"");} 
else if(window.external ){window.external.AddFavorite( url, title);}
else if(window.opera && window.print){return true;}}

//
