//Script copyright 2001-2006 by Jack Endino, http://www.endino.comif(window==top){top.location.replace("index3.html")};//  ******* Globals *******var printable="";   // may want to clear this one upon reset.parent.loaderr=0;var resetflag=false;var pay = 0;var printurl="";var printemail="";// var Separator = "#";  // var used formerly in GetField (don't delete from forms though)var Fields = 20;var regions = 2;      // number of regions in DB, var also used in matchzonevar allmatch = new Array(1);   var resultarray = new Array(Fields); var cities = new Array(regions +1);  // NO SPACES WITHIN EACH LOCALITY NAME... 0 thru regionscities[0]="";cities[1] = "westseattle richmondbeach redmond bellevue shoreline auburn kent renton mercerisland issaquah index brier edmonds bothell kirkland newporthills federalway burien capitolhill beaconhill capitalhill fremont georgetown queenanne belltown ballard greenwood wallingford wedgewood phinneyridge duvall industrialarea columbiacity downtown universitydistrict ravennapark magnolia montlake mapleleaf mountlaketerrace vashonisland woodinville pioneersquare crownhill snohomish lakeforestpark interbay silverdale index northend madisonvalley bainbridgeisland tacoma olympia shelton centralia aberdeen lynnwood everett marysville mountvernon mtvernon anacortes bellingham orcasisland sanjuanislands whidbeyisland stanwood blaine cle elum yakima ellensburg wenatchee spokane wallawalla pullman pasco kennewick richland clarkston";cities[2]= "portland clackamas medford eugene salem dalles sisters vancouverwa"; // ******* Functions *******function GetField(Entry,number) // get field "number" in record "Entry", field numbering starts at 1{var arr = Entry.split("#");  // used to have var Separator. Quotes?var Out = arr[number-1];arr = null;// alert(Out);return Out;} function stripdash(stringarg) // used for search terms: strip dashes and spaces and commas and final letter s{var newstr="";if(stringarg.charAt(0)!=" "){var newstr=stringarg.charAt(0)}; // retain 1st char except space		for (var q = 1; q < stringarg.length-1; q++) // does not do last char, note "-1", see below		{if (stringarg.charAt(q) != "-" && stringarg.charAt(q) != " " && stringarg.charAt(q) != ",") 				{newstr = newstr + stringarg.charAt(q)}		};if (stringarg.charAt(stringarg.length-1)!="s" && stringarg.charAt(stringarg.length-1)!=" " && stringarg.charAt(stringarg.length-1)!="," && stringarg.length>1) {newstr = newstr + stringarg.charAt(stringarg.length-1)}; // remove some plurals and trailing spaces// alert("'" + newstr+"'");return newstr;}function stripdash1(stringarg) // used for data fields: strip dashes and spaces and commas{ var newstr=stringarg.charAt(0); // retain 1st char		for (var q = 1; q < stringarg.length; q++)		{if (stringarg.charAt(q) != "-" && stringarg.charAt(q) != " " && stringarg.charAt(q) != ",") 				{newstr = newstr + stringarg.charAt(q);}		};		return newstr;}function stripdash2(stringarg) // used for localities: strip dashes and spaces and commas including 1st char -- used by matchzone{ var newstr="";		for (var q = 0; q < stringarg.length; q++) // note the zero		{if (stringarg.charAt(q) != "-" && stringarg.charAt(q) != " " && stringarg.charAt(q) != ",") 				{newstr = newstr + stringarg.charAt(q);}		};		return newstr;}function stripdash3(stringarg) // used for logo names, strip everything and lowercase it, max 27 chars{var newstr=""; 		for (var q = 0; q < stringarg.length; q++)		{if (stringarg.charAt(q) != "-" && stringarg.charAt(q) != " " && stringarg.charAt(q) != "," && stringarg.charAt(q) != "!" && stringarg.charAt(q) != "." && stringarg.charAt(q) != "&" && stringarg.charAt(q) != "/"){newstr = newstr + stringarg.charAt(q);}		};if (newstr.length>28){newstr=newstr.substring(0,27)};		return newstr.toLowerCase();}function dataload(){parent.dbase.window.location.href="JEdbasemast" + parent.nav.document.SearchForm.elements[0].options.selectedIndex + ".html";return;}function pleasewait()  // increment parent.loaderr to test for bad serving{window.status="....LOADING DATABASE....";alert("Please wait a moment while I find the data for \n" + parent.nav.document.SearchForm.elements[0].options[parent.nav.document.SearchForm.elements[0].options.selectedIndex].value + ". Watch the status \nbar on the bottom of your browser."); parent.loaderr=parent.loaderr+1;return}function ResetResult(){ if (resetflag==true){return};parent.result.document.open();parent.result.document.write("<HTML><BODY TEXT=\"darkred\" BGCOLOR=\"#FFFFFF\"><DIV ALIGN=\"CENTER\"><B><P>Results of your search will be shown as links at left. <BR>When you click on one of those links, details about that studio will appear here.</P></B><HR>If you have a public <b>recording</b> or <b>mastering studio</b> anywhere in the states of WA, OR, ID, MT, HI, NV, AZ, Northern CA, or in BC, Canada, you are invited to add it to this searchable database. A \"basic\" listing is FREE, and might get you some work. The more that are listed, the more useful this becomes. <br>Here is some <B><A HREF=\"../tips.html\" target=\"result\" onClick=\"parent.nav.resetflag=false\">Information, and an Easy Submission Form</A>.</B></P><P><B>Read the <A HREF=\"../bigarticle.gif\" TARGET=\"_blank\">Seattle Weekly article</A> about this site!</B></P><P><B>Other Useful Info\: <A HREF=\"http://www.gravelvoice.com\" TARGET=\"_blank\">Scott Colburn\'s</a> NWSTUDIOS Yahoo group</B>, a very useful opt-in list. For signup details, visit <b><A HREF=\"http://groups.yahoo.com/groups/nwstudios/\" TARGET=\"_blank\">http://groups.yahoo.com/groups/nwstudios</A>.</B></P><P><B><FONT SIZE=\"+1\">Problems? Bugs? <A HREF=\"../bugfaq.html\" target=\"result\" onClick=\"parent.nav.resetflag=false\">Read This.</A></FONT></B></P><FONT COLOR=\"#000000\">&copy\; 2007 Jack Endino, <A HREF=\"http://www.endino.com/\" target=\"_blank\">http://www.endino.com</A><BR><I>Tell \'em, JACK sent ya!</I></FONT></DIV></BODY></HTML>");parent.result.document.close();resetflag=true;return;}function ResetSearch2()  {window.status=". . . . . S E A R C H I N G . . . . .";	parent.list.document.open();  parent.list.document.write("<HTML><BODY BGCOLOR=\"#D3D3D3\"><I><P>SEARCHING...</P></I></BODY></HTML>");  parent.list.document.close();  ResetResult();	return;}function ResetSearch1()  {window.status="";  parent.list.document.open();  parent.list.document.write("<HTML><BODY TEXT=\"darkred\" BGCOLOR=\"#D3D3D3\"><DIV ALIGN=\"CENTER\"><B><P>Mastering Studios that match your search term will be listed here as clickable links.</P></B></DIV></BODY></HTML>");  parent.list.document.close();	ResetResult();	return;}function ResetSearch()   // should we clear some unneeded variables here, like printable,etc?{window.status="";	parent.nav.document.SearchForm.elements[2].value = "";  	parent.nav.document.SearchForm.elements[1].options.selectedIndex = 0;   parent.list.document.open();  parent.list.document.write("<HTML><BODY TEXT=\"darkred\" BGCOLOR=\"#D3D3D3\"><DIV ALIGN=\"CENTER\"><B><P>Mastering Studios that match your search term will be listed here as clickable links.</P></B></DIV></BODY></HTML>");  parent.list.document.close();  ResetResult();	return;}function TypeAll(){if(parent.nav.document.SearchForm.elements[0].options.selectedIndex==0){alert("Please choose a geographical region."); return};if(parent.nav.document.SearchForm.elements[1].options.selectedIndex==0){alert("Please choose a search category."); return};if(parent.nav.document.SearchForm.elements[2].value==""){alert("Please enter a search term."); return};if(parent.dbase.localdbflag!=parent.flag && parent.flag==parent.nav.document.SearchForm.elements[0].options.selectedIndex){dataload(); alert("The 'Back' button scrambled things, \nlet me reload data.");return}; if(parent.flag!=parent.nav.document.SearchForm.elements[0].options.selectedIndex || parent.dbase.localdbflag!=parent.nav.document.SearchForm.elements[0].options.selectedIndex){if (parent.loaderr>0){dataload(); alert("Connection seems slow today, \n still trying to get data."); return} else {pleasewait()}; return};if(parent.nav.document.SearchForm.elements[1].options.selectedIndex == 2) // check cities database, load appropriate studio DB + bail{if (matchzone(parent.nav.document.SearchForm.elements[2].value)==true){return};};  ResetSearch2();var index =parent.nav.document.SearchForm.elements[1].options.selectedIndex;var SearchString = parent.nav.document.SearchForm.elements[2].value;if (index ==0){index=1};   // default to studio nameif (index >13){index = index + 5} else if (index >1){index = index + 2};    // skips over some fieldsvar j = FindAll(SearchString, index);if (j == 0)         /// no hits?{window.status="";if (parent.dbase.Entries == 0){alert("No studios listed here yet, sorry.")}else {alert("Nothing matches your search term! \n\(Did you remember to choose a search category?\)")};ResetSearch1();return;};parent.list.document.open(); parent.list.document.write("<HTML><BODY TEXT=\"#000000\" BGCOLOR=\"#D3D3D3\">");parent.list.document.write("<BASEFONT SIZE=\"2\"><font size =\"+1\"><B>" + allmatch.length + " Matches for:<BR><FONT COLOR=\"darkred\">" + parent.nav.document.SearchForm.elements[0].options[parent.nav.document.SearchForm.elements[0].options.selectedIndex].value +"</FONT><BR>" + parent.nav.document.SearchForm.elements[1].options[parent.nav.document.SearchForm.elements[1].options.selectedIndex].value + " <FONT COLOR=\"darkred\">" +SearchString + "</FONT></b></font><P>");for(i=0; i < allmatch.length; i++)    {if (parent.dbase.Paid[allmatch[i]] > 0)     	{parent.list.document.write("<B>&gt\; <A HREF=\"\#\" onMouseOver=\"window.status=\' \'\" onClick=\"parent.nav.crosslink("+i+")\;return false\">" + parent.dbase.studionames[allmatch[i]] + "</A></B><BR>")     	}    else{parent.list.document.write("<font size =\"-1\">&gt\; <A HREF=\"\#\" onMouseOver=\"window.status=\' \'\" onClick=\"parent.nav.crosslink("+i+")\;return false\">" + parent.dbase.studionames[allmatch[i]] + "</A></font><BR>")     	}     };parent.list.document.write("</P><BR></BODY></HTML>");parent.list.document.close();window.status="";return;}function FindAll(String$, number)  // find all matches for String$ in fields "number"{allmatch.length=0;if(parent.flag!=parent.nav.document.SearchForm.elements[0].options.selectedIndex){if (parent.loaderr>0){dataload(); alert("Connection seems slow today, \n still trying to get data."); return 0} else {pleasewait()}; return 0};if (parent.dbase.Entries==0){return 0};var n=0;      // if (String$ == "8") {String$ = " 8"};  this is in the wrong placevar searchstr = stripdash(String$.toLowerCase());if(searchstr=="8"){searchstr=" 8"};  // distinguishes 8 tracks from 48 tracksfor (var i=1;i<=parent.dbase.Entries;i++){var fld = stripdash1(GetField(parent.dbase.Data[i],number).toLowerCase());  // composite statement, one less varif (fld.indexOf(searchstr) > -1){allmatch[n] = i; n=n+1}; 			   };return allmatch.length;}function ListAll()  // list all studios in region, in list window, uses studionames array{if(parent.nav.document.SearchForm.elements[0].options.selectedIndex==0){alert("Choose a geographical region."); return};if(parent.dbase.localdbflag!=parent.flag && parent.flag==parent.nav.document.SearchForm.elements[0].options.selectedIndex){dataload(); alert("The 'Back' button scrambled things, \nlet me reload data.");return};allmatch.length=0;if(parent.flag!=parent.nav.document.SearchForm.elements[0].options.selectedIndex){if (parent.loaderr>0){dataload(); alert("Connection seems slow today, \n still trying to get data."); return} else {pleasewait()}; return};window.status="";if (parent.dbase.Entries==0){alert("No studios listed here yet, sorry."); return};ResetResult();         // note simpler reset! for (var nn=0; nn<parent.dbase.Entries; nn++) {allmatch[nn] = nn+1};parent.list.document.open(); parent.list.document.write("<HTML><BODY TEXT=\"#000000\" BGCOLOR=\"#D3D3D3\">");parent.list.document.write("<BASEFONT SIZE=\"2\"><font size =\"+1\"><B>" + parent.dbase.Entries + " Listings for: <BR><FONT COLOR=\"darkred\">" + parent.nav.document.SearchForm.elements[0].options[parent.nav.document.SearchForm.elements[0].options.selectedIndex].value +"</FONT></b></font><P>");for (var i=1; i<=parent.dbase.Entries; i++)	{if (parent.dbase.Paid[i] > 0)    		{parent.list.document.write("<B>&gt\; <A HREF=\"\#\" onMouseOver=\"window.status=\' \'\" onClick=\"parent.nav.crosslink("+ (i-1) +")\;return false\">" + parent.dbase.studionames[i] + "</A></B><BR>")    	}    else{parent.list.document.write("<font size =\"-1\">&gt\; <A HREF=\"\#\" onMouseOver=\"window.status=\' \'\" onClick=\"parent.nav.crosslink("+ (i-1) +")\;return false\">" + parent.dbase.studionames[i] + "</A></font><BR>")		}	};parent.list.document.write("</P><BR></BODY></HTML>");parent.list.document.close();return;}function crosslink(i2){if(parent.dbase.localdbflag!=parent.nav.document.SearchForm.elements[0].options.selectedIndex){dataload(); alert("The 'Back' button scrambled things, \nlet me reload data.");return};pay = parent.dbase.Paid[allmatch[i2]];for(k=1;k<=Fields;k++)   {      resultarray[k] = GetField(parent.dbase.Data[allmatch[i2]],k);      if (resultarray[k] == "" || resultarray[k]==" "){resultarray[k] = "none listed"};    }; if (resultarray[16]!= "none listed"){printurl=resultarray[16]; resultarray[16] ="<A HREF=\"" + resultarray[16] + "\" target=\"_blank\">"+ resultarray[16] +"</A>"} else {printurl="none listed"; resultarray[16] ="none listed \(perhaps they\'re too busy to make one)"};if (resultarray[18]!= "none listed"){printemail=resultarray[18]; resultarray[18] ="<A HREF=\"mailto:" + resultarray[18] + "\">" + resultarray[18] + "</A>"} else {resultarray[18] = "none listed -- see website"; printemail="none listed--see website"};resetflag=false;parent.result.document.open();parent.result.document.write("<HTML><BODY TEXT=\"#000000\" BGCOLOR=\"#FFFFFF\" LINK=\"#0000EE\">");parent.result.document.write("<BASEFONT SIZE=\"2\"><FONT FACE=\"Arial, Helvetica\">");parent.result.document.write("<FONT SIZE = \"+2\">");if (pay>0){parent.result.document.write("<center><IMG SRC=\"logos/" + stripdash3(resultarray[1]) + ".jpg\"></center>");};parent.result.document.write("<P><FORM NAME=\"Dummy\" onSubmit=\"return false;\"><B>Mastering Studio:&nbsp\;&nbsp\;<FONT COLOR=\"darkred\">" + resultarray[1] +"</FONT></B> &nbsp\; &nbsp\; &nbsp\; &nbsp\; &nbsp\;<INPUT NAME=\"Printable\" TYPE=\"BUTTON\" VALUE=\"View Printable\" onClick =\"parent.nav.PrintResult(" + pay + ")\;return false\;\"></FORM></P></FONT></FONT>");parent.result.document.write("<P><B>Phone: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[17] + "</FONT><B>&nbsp\;&nbsp\;E-Mail: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[18] + "</FONT><BR><B>Website: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[16] + "</FONT><BR>");parent.result.document.write("<B>Location: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[4] + "</FONT><BR>" );parent.result.document.write("<B>Destination Formats: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[5] + "</FONT></P>");parent.result.document.write("<P><B>Staff / Personnel / Freelancers: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[6] + "</FONT><BR>");parent.result.document.write("<B>Acceptable Analog Source Formats: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[7] + "</FONT><BR><B>Acceptable Digital Source Formats: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[8] + "</FONT><BR><B>Analog Tape Playback Machines: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[9] + "</FONT><BR><B>Best A/D \& D/A Converters: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[10] + "</FONT><BR><B>Workstation/Mastering/Editing System: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[11] + "</FONT><BR><B>Console/Control Surface: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[12] + "</FONT><BR><B>Monitor Speakers: &nbsp\;</B><FONT COLOR=\"darkred\">" + resultarray[13] + "</FONT></P>");if(pay>0){parent.result.document.write("<P><B><FONT SIZE=\"+1\">General Description:</FONT> </B><BR><FONT COLOR=\"darkred\">" + resultarray[14] + "</FONT></P>");parent.result.document.write("<P><B>Past Clients Include: </B><BR><FONT COLOR=\"darkred\">" + resultarray[15] + "</FONT></P>");parent.result.document.write("<P><B>Outboard Gear, Processors, Plug-ins, Etc: </B><BR><FONT COLOR=\"darkred\">" + resultarray[19] + "</FONT></P>");}parent.result.document.write("<BR><BR><BR><CENTER><A HREF=\"jemastupdate.html\">Update Info</A></CENTER>");parent.result.document.write("<BR><BR></BODY></HTML>");parent.result.document.close();return;}function PrintResult(payy){now = new Date;mon = now.getMonth() + 1;yr = now.getYear().toString();yr= yr.substring((yr.length-2),(yr.length)); // using last 2 digits fixes NN y2k bugdays = now.getDate();datestr = (" " + mon + "/" + days + "/" + yr); printable=("<HTML><HEAD><TITLE>Printable Format: NEW WINDOW</TITLE></HEAD><BODY TEXT=\"#000000\" BGCOLOR=\"#FFFFFF\">");printable += ("<BASEFONT SIZE=\"2\"><CENTER><H2>MASTERING STUDIO SPECS</H2> <B>Printed from Jack Endino's Recording Studio Search," + datestr + "</B><BR>");printable += ("http://www.recordingstudiosearch.com</CENTER>");printable += ("<P><FONT SIZE = \"+2\"><B>MASTERING STUDIO NAME: </B>" + resultarray[1] +"</P></FONT>");printable += ("<P><B>PHONE NUMBER: </B>" + resultarray[17] + "<BR><B>EMAIL CONTACT: </B>" + printemail + "<BR><B>WEBSITE: </B>" + printurl + "<BR>");printable += ("<B>LOCATION: </B>" + resultarray[4] + "</P>");printable += ("<P><B>DESTINATION FORMATS: </B>" + resultarray[5] + "</P>");printable += ("<P><B>STAFF/PERSONNEL: </B>" + resultarray[6] + "</P>");if (payy > 0){printable += ("<P><B>DESCRIPTION: </B><BR>" + resultarray[14] + "</P>")}else {printable += ""};printable += ("<P><B>ACCEPTABLE ANALOG SOURCE FORMATS: </B>" + resultarray[7] + "<BR>");printable += ("<B>ACCEPTABLE DIGITAL SOURCE FORMATS: </B>" + resultarray[8] + "<BR>");printable += ("<B>ANALOG PLAYBACK MACHINE\(S\): </B>" + resultarray[9] + "<BR>");printable += ("<B>BEST A/D \& D/A CONVERTERS: </B>" + resultarray[10] + "<BR>");printable += ("<B>WORKSTATION/MASTERING/EDITING SYSTEM: </B>" + resultarray[11] + "<BR>");printable += ("<B>CONSOLE/CONTROL SURFACE: </B>" + resultarray[12] + "<BR>");printable += ("<B>MONITOR SPEAKERS: </B>" + resultarray[13] + "</P>");if (payy > 0){printable += ("<P><B>OUTBOARD GEAR, PROCESSORS, PLUG-INS, ETC: </B><BR>" + resultarray[19] + "</P>")}else {printable += ""};if (payy > 0){printable += ("<P><B>PREVIOUS AND/OR RECENT CLIENTS: </B><BR>" + resultarray[15] + "</P>")}else {printable += ""};printable += ("<BR><BR></BODY></HTML>");newWin=window.open("JEprintwindow.html","new","location=yes,menubar=yes,resizable=yes,scrollbars=yes,toolbar=yes,status=yes");newWin.focus();return;}function matchzone(search$tring){var city=stripdash2(search$tring.toLowerCase());// if (city=="vancouver"){alert("Caution\! Vancouver, WA is listed with Portland, OR.");return false};if (city==""){return false};if (cities[parent.nav.document.SearchForm.elements[0].options.selectedIndex].indexOf(city) > -1){return false};  // if it finds it in the current region/db, do nothing... go back to the searchfor(var nn=0; nn<=regions-1; nn++){       // if it's not in the current region, BUT it's in another region, switch to that dbif (cities[nn].indexOf(city) > -1 && parent.nav.document.SearchForm.elements[0].options.selectedIndex != nn) {parent.nav.document.SearchForm.elements[0].options.selectedIndex = nn;dataload();ResetSearch1();alert("\""+search$tring + "\" is actually listed under  \""+parent.nav.document.SearchForm.elements[0].options[parent.nav.document.SearchForm.elements[0].options.selectedIndex].value + "\"! \nI\'m switching to that database for you, try again. \(Caution: \nVancouver, WA is listed with Portland, OR.\)");return true} // optional return?};return false;}
