Commits

Fred Grott committed e270648

reorg some of it and redid the tallysets now on to rest of the tallys
logic to ensure proper build env per project type and add some more
modifications to some targets.

Comments (0)

Files changed (405)

 androidsite.url=http\://android.com
 androidsite.name=android.com
 projectrepo.url=https\://bitbucket.org/fredgrott/gwsantdroid
-gwsantdroid.project.type=app
+gwsantdroid.project.type=app
+isAndroidSupport=true
+AndroidSupport.Version=4

ant.properties.template

+# we usually like to use src as default
 source.dir=
+# we use bin/classes
 out.dir=
 company.url=
 company.name=
 androidsite.url=
 androidsite.name=
 projectrepo.url=
-gwsantdroid.project.type=
+# project types are app, library, test, testapp, javamonkey, guitar
+gwsantdroid.project.type=
+isNativeDriver=
+isCPMobileWeb=
+isWebDriver=
+isAndroidSupport=
+AndroidSupport.Version=
+isAdmobAds=
+isAnalytics=
+isGCM=
+isAnnotations=
      Aug 21, 2012 9:14:11 AM                                                        
 
      GWSAntDroid    
-     GWSAntDroid
+     GWSAntDroid, an effort has been made to de-couple items or modules and automating 
+     large amounts of manual drudgery so that we can reduce a build complexitiy by having not
+     breka down often and be felxible enough to enjoy rapid uptake an use.
                    
      fredgrott                                                                
      ====================================================================== -->
             GWSAntDroid
     </description>
 
+	<!-- ======================================= -->
+	<!-- === GWSAntDroid env vars                                     == -->
+	<!-- ======================================= -->
 	<property environment="env"/>
 	<tstamp/>
+	<!-- ************************************************ -->
+	<!-- **         first part of build.template from sdk      *** -->
+	<!-- **         namely the import properties files part *** -->
+	<!-- ************************************************ -->
 	<!-- The local.properties file is created and updated by the 'android' tool.
 	        It contains the path to the SDK. It should *NOT* be checked into
 	        Version Control Systems. -->
 	                message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
 	                unless="sdk.dir"
 	        />
-	
+	<!-- ========================================= -->
+	<!-- ==         More GWSAntDroid build system               == -->
+	<!-- ==        Bootstrap Initialization                                   == -->
+	<!-- ========================================= -->
 	<property name="project.root.dir" location="${basedir}"/>
 	<property name="project.bootstrapjars.dir" location="${project.root.dir}/bootstrapjars"/>
 	<property name="bootstrapjars.ivy.dir"    location="${project.bootstrapjars.dir}/ivyanttasklib"/>
 	<property name="projectdocs.dir" location="${project.bin.dir}/projectdocs"/>
 	<property name="assets.temp.dir" location="${project.bin.dir}/assetstemp"/>
 	<property name="assets.temp.abs.dir" location="${assets.temp.dir}"/>
+	<!-- =========================================== -->
+	<!-- ==  GWSAntDroid  Build system bootstrap paths    == -->
+	<!-- ==   temp artifact dirs                                                        == -->
+	<!-- =========================================== -->
 	<mkdir dir="${buildlogs.dir}"/>
 	<mkdir dir="${ivyreports.dir}"/>
 	<mkdir dir="${projectdocs.dir}"/>
 	<mkdir dir="${assets.temp.dir}"/>
+	<!-- ============================================= -->
+	<!-- == GWSAntDroid build system bootstrap initpaths     == -->
+	<!-- ============================================= -->
 	<!-- JWare path for both Log4Ant and Antrxas and the required logger jar-->
 	    <path id="jware.path">
 	        <fileset dir="${bootstrapjarslog4ant.dir}/dep">
 	        <pathelement 
 	          location="${bootstrapjarslog4ant.dir}/etc"/>
 	      </path>
+	<!-- Apache IVY path -->
 	<path id="ivy.lib.path">
 	    <fileset dir="${bootstrapjars.ivy.dir}" includes="*.jar"/>
 	</path>
+	<!-- Apache AntContrib path -->
 	<path id="antcontrib.lib.path">
 	             <fileset dir="${bootstrapjars.antcontrib.dir}" includes="*.jar"/>
 	</path>
+	<!-- AntContrib taskdef-->
 	<taskdef resource="net/sf/antcontrib/antlib.xml"
 		           classpathref="antcontrib.lib.path"/>
+	<!-- Apache IVY taskdef -->
 	<taskdef resource="org/apache/ivy/ant/antlib.xml"
 	         uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
-	
-	
-	
+	<!-- Log4Ant and Antxtras taskdefs -->
 	<taskdef uri="jwaresoftware.antxtras" 
 		              resource="org/jwaresoftware/antxtras/antlib.xml"
 	                   classpathref="jware.path"/>
 	   <taskdef uri="jwaresoftware.antxtras" 
 	   	                  resource="org/jwaresoftware/antxtras/install/antlib-advanced.xml"
 	                      classpathref="jware.path"/>
-	
-
-	    <taskdef uri="jwaresoftware.log4ant"
+	   <taskdef uri="jwaresoftware.log4ant"
 	         resource="org/jwaresoftware/log4ant/install/antlib.xml"
 	        classpathref="jware.path"/>
+	    <!-- Start of build logs with the check of basic bootstrap init of GWSAntDroid 
+	           build system -->
         <echo message="${DSTAMP} ${TSTAMP}"/>
 	    <oja:vendorinfo name="antxtras"/>
 	    <oja:show message="AntXtras: ${antxtras.build.label}"/>
-
-	    <emit:libcheck/>
+        <emit:libcheck/>
 	    <emit:show message="${log4ant.label}"/> 
 	    <emit:show message="${slf4j.label}"/>
 	    <emit:show message="${slf4j-impl.label}"/>
-	
+	<!-- ===================================== -->
+	<!-- == GWSAntDroid build system macro defs  == -->
+	<!-- ===================================== -->
 	<!-- our wrap error macro to obtain the error trace in all targets that have it applied -->
 	    <presetdef name="wrap">
 	       <oja:protect>
 	        </oja:always>
 	      </oja:protect>
 	    </presetdef>
-	
-	<!--  install our fallback and other message bundles -->
-	        <oja:messagesbundle id="allmessages" mustexist="yes"
+	   <!--  install our fallback and other message bundles -->
+	    <oja:messagesbundle id="allmessages" mustexist="yes"
 	             file="${basedir}/fallback.messages.properties"/>
-	        <oja:managemessages action="install-fallback"
+	    <oja:managemessages action="install-fallback"
 	            bundleid="allmessages"/>
-	    
-	    
 	    <!-- Install a fallback configuration -->
 	    <emit:configuration id="app.log.conf" wrt="longdate" to="MyAndroidApp" />
 	    <emit:manage action="install-fallback">
 	        <emit:mapping type="indicator" name="problems" logger="${TOP}.Problems"/>
 	            <emit:mapping type="indicator" name="status" logger="${TOP}.Log"/>
 	            <emit:mapping type="indicator" name="diagnostics" logger="${TOP}.Debug"/>
-	            
-	        </emit:mappings>
-	
-	<!-- our macro so we do not have to do caputrelogs all the time, ie our 
+	      </emit:mappings>
+	  <!-- our macro so we do not have to do caputrelogs all the time, ie our 
 	           begin and ending macro wrappings inside tagets with be:
 	                  body
+	                    timed
+	                       wrap
+	                           rest of task stuff of the target
+	                       wrap
+	                     timed
 	                    
 	                  body
 	                  
 	    <presetdef name="inform">
 	        <echo level="info"/>
 	     </presetdef>
-	     
-	      <presetdef name="body">
+	     <presetdef name="body">
 	        <emit:capturelogs includes="target" mappings="my.loggers">
-	            
-	          <inform message="Started ${$x:targetname}"/>
-	            
-	                    
-	            
-	        </emit:capturelogs>
+	            <inform message="Started ${$x:targetname}"/>
+	         </emit:capturelogs>
 	     </presetdef>
-	
-	<!-- IVY uses a different logger and logs it to console by default.-->
+	<!-- IVY uses a different logger and logs it to console by default.
+	      IVY libs retrieved path-->
 	<property name="ext-libs.dir" location="${project.root.dir}/ext-libs"/>
 	<mkdir dir="${ext-libs.dir}"/>
 	<ivy:resolve/>
 	<ivy:report todir="${ivyreports.dir}"/>
 	<ivy:retrieve pattern="${ext-libs.dir}/[conf]/[artifact].[ext]" conf="ant, compile, doclet, aptfactory, javadoc, nativedriver"/>
-
-	<!-- rest of buildsystem project properties-->
+    <!-- rest of buildsystem project properties-->
 	<property name="buildsys.dir" location="${project.root.dir}/buildsys"/>
+	<!-- =============================================== -->
+	<!-- == GWSAntDroid codeqa initialization                                    == -->
+	<!-- =============================================== -->
 	<property name="codeqa.dir" location="${buildsys.dir}/codeqa"/>
 	<property name="codeqa.images.dir" location="${codeqa.dir}/images"/>
 	<property name="codeqa.reportscss.dir" location="${codeqa.dir}/reportscss"/>
 	<property name="pmd.xsl" location="${codeqa.xsls.dir}/android.pmd.xsl"/>
 	<property name="javancss.xsl" location="${codeqa.xsls.dir}/javancss.xsl"/>
 	<property name="jdepend2dot.xsl" location="${codeqa.xsls.dir}/jdepend2dot.xsl"/>
+	<property name="jsdoctoolkit" location="${buildsys.dir}/jsdoc-toolkit"/>
+	<!-- ============================================================ -->
+	<!-- == GWSAntDroid projectdocs initialization                                                          == -->
+	<!-- ============================================================ -->
+	<property name="doclava.app.projectdocs.dir" location="${buildsys.dir}/app.projectdocs"/>
+	<property name="doclava.app.htmldir" location="${doclava.app.projectdocs.dir}/htmldir"/>
+	<property name="doclava.app.templates" location="${doclava.app.projectdocs.dir}/projectassets/tempaltes"/>
+	<property name="doclava.app.assets" location="${doclava.app.templates}/assets"/>
+	<property name="doclava.library.projectdocs.dir" location="${buildsys.dir}/library.projectdocs"/>
+	<property name="doclava.library.htmldir" location="${doclava.library.projectdocs.dir}/htmldir"/>
+	<property name="doclava.library.templates" location="${doclava.library.projectdocs.dir}/projectassets/tempaltes"/>
+	<property name="doclava.library.assets" location="${doclava.library.templates}/assets"/>
+	<property name="doclava.test.projectdocs.dir" location="${buildsys.dir}/test.projectdocs"/>
+	<property name="doclava.test.htmldir" location="${doclava.test.projectdocs.dir}/htmldir"/>
+	<property name="doclava.test.templates" location="${doclava.test.projectdocs.dir}/projectassets/templates"/>
+	<property name="doclava.test.assets" location="${doclava.test.templates}/assets"/>
+	<property name="doclava.testapp.projectdocs.dir" location="${buildsys.dir}/testapp.projectdocs"/>
+	<property name="doclava.testapp.htmldir" location="${doclava.testapp.projectdocs.dir}/htmldir"/>
+	<property name="doclava.testapp.templates" location="${doclava.testapp.projectdocs.dir}/projectassets/templates"/>
+	<property name="doclava.testapp.assets" location="${doclava.testapp.templates}/assets"/>
+	<property name="doclava.guitar.projectdocs.dir" location="${buildsys.dir}/guitar.projectdocs"/>
+	<property name="doclava.guitar.htmldir" location="${doclava.guitar.projectdocs.dir}/htmldir"/>
+	<property name="doclava.guitar.templates" location="${doclava.guitar.projectdocs.dir}/projectassets/templates"/>
+	<property name="doclava.guitar.assets" location="${doclava.guitar.templates}/assets"/>
+	<property name="doclava.javamonkey.projectdocs.dir" location="${buildsys.dir}/javamonkey.projectdocs"/>
+	<property name="doclava.javamonkey.htmldir" location="${doclava.javamonkey.projectdocs.dir}/htmldir"/>
+	<property name="doclava.javamonkey.templates" location="${doclava.javamonkey.projectdocs.dir}/projectassets/templates"/>
+	<property name="doclava.javamonkey.assets" location="${doclava.javamonkey.templates}/assets"/>
+	<property name="doclava.monkeyrunner.projectdocs.dir" location="${buildsys.dir}/monkeyrunner.projectdocs"/>
+	<property name="doclava.monkeyrunner.htmldir" location="${doclava.monkeyrunner.projectdocs.dir}/htmldir"/>
+	<property name="doclava.monkeyrunner.templates" location="${doclava.monkeyrunner.projectdocs.dir}/projectassets/templates"/>
+	<property name="doclava.monkeyrunner.assets" location="${doclava.monkeyrunner.templates}/assets"/>
+	<property name="doclava.cucumber.projectdocs.dir" location="${buildsys.dir}/cucumber.projectdocs"/>
+	<property name="doclava.cucumber.htmldir" location="${doclava.cucumber.projectdocs.dir}/htmldir"/>
+	<property name="doclava.cucumber.templates" location="${doclava.cucumber.projectdocs.dir}/projectassets/templates"/>
+	<property name="doclava.cucumber.assets" location="${doclava.cucumber.templates}/assets"/>
 	
 	
-	<property name="doclava.app.htmldir" location="${buildsys.dir}/app.doclavaasserts/htmldir"/>
-	<property name="doclava.app.assets.dir" location="${buildsys.dir}/app.doclavaassets/gwsasets/templates/assets"/>
-	<property name="doclava.library.htmldir" location="${buildsys.dir}/library.doclavaassets/htmldir"/>
-	<property name="doclava.library.assets.dir" location="${buildsys.dir}/libary.doclavaassets/gwsassets/templates/assets"/>
-	<property name="doclava.test.htmldir" location="${buildsys.dir}/test.doclavaassets/htmldir"/>
-	<property name="doclava.test.assets.dir" location="${buildsys.dir}/test/doclavaassets/gwsassets.templates/assets"/>
-	<property name="doclava.testapp.htmldir" location="${buildsys.dir}/testapp.doclavaassets/htmldir"/>
-	<property name="doclava.testapp.assets.dir" location="${buildsys.dir}/testapp.doclavaassets/gwsassets/templates/assets"/>
 	<!-- aptfactory and nativedriver are soft fails, if not there they do not stop 
 	       builds as if not there than not used as in case of test project.-->
 	<property name="ext-libs.ant.dir" location="${ext-libs.dir}/ant"/>
 	<property name="ext-libs.aptfactory.dir" location="${ext-libs.dir}/aptfactory"/>
-	<property name="ext-libs.compile.dir" location="${ext-libs.dir}/compile"/>
-	<property name="ext-libs.nativedriver.dir" location="${ext-libs.dir}/nativedriver"/>
+	<property name="ext-libs.appcompile.dir" location="${ext-libs.dir}/appcompile"/>
+	
+	<property name="ext-libs.testappcompile.dir" location="${ext-libs.dir}/testappcompile"/>
+	<property name="ext-libs.instrumentedtest.dir" location="${ext-libs.dir}/instrumented-test"/>
+	<property name="ext-libs.instrumentedruntime.dir" location="${ext-libs.dir}/instrumented-runtime"/>
+	
 	<property name="ext-libs.doclet.dir" location="${ext-libs.dir}/doclet"/>
 	<property name="doclet.doclava.jar" location="${ext-libs.doclet.dir}/doclava.jar"/>
 	<property name="doclet.umlgraph.jar" location="${ext-libs.doclet.dir}/umlgraph.jar"/>
+	<!-- ================================================ -->
+	<!-- == Rest of GWSAntDroid paths, paths of different              == -->
+	<!-- == project  types soft fail if not found which occurs            == -->
+	<!-- == only in a project type that is not using them.                    == -->
+	<!-- ================================================ -->
+	<path id="javacpp.path">
+	                 <fileset dir="${ext-libs.javacpp.dir}">
+		                           <include name="**.jar"/>
+	                 	</fileset>
+		</path>
+	<path id="testappcompile.path">
+	             <fileset dir="${ext-libs.testappcompile.dir}" >
+		                   <include name="**.jar"/>
+	             	</fileset>
+		</path>
+	<path id="instrumented-test.path">
+		               <fileset dir="${ext-libs.instrumentedtest.dir}">
+		                               <include name="**.jar"/>
+		              </fileset>
+		</path>
+	<path id="instrumented-runtime.path">
+	                   <fileset dir="${ext-libs.instrumentedruntime.dir}">
+		                              <include name="**.jar"/>
+		          </fileset>
+	</path>
 	<path id="ant.task.libs">
+		
 	          <fileset dir="${ext-libs.ant.dir}">
 	          	          <include name="**.jar"/>
 	          	</fileset>
 		                    <include name="**.jar"/>
 	           	</fileset>
 	</path>
-	<path id="compile.path">
-		      <fileset dir="${ext-libs.compile.dir}">
+	<path id="appcompile.path">
+		      <fileset dir="${ext-libs.appcompile.dir}">
 		                        <include name="**.jar"/>
 		      	</fileset>
 	</path>
 	<path id="nativedriver.server.path">
-	                  <fileset dir="${ext-libs.nativedriver.dir}">
-	                  	           <include name="**.jar"/>
-	                  	           <exclude name="client.standalone.jar"/>
+	                  <fileset dir="${ext-libs.appcompile.dir}">
+	                  	           <include name="server-standalone.jar"/>
+	                  	           
 		            </fileset>
+		<fileset dir="${ext-libs.testappcompile.dir}">
+		                     <include name="server-standalone.jar"/>
+		        </fileset>
 		</path>
 	<path id="nativedriver.client.path">
-	               <fileset dir="${ext-libs.nativedriver.dir}">
-		                              <include name="**.jar"/>
-	               	            <exclude name="server.standalone.jar"/>
-		          </fileset>
+	               <fileset dir="${ext-libs.instrumentedtest.dir}">
+		               <include name="client-standalone.jar"/>
+		</fileset>
 	</path>
-	<property name="androidlint.exec" location="${sdk.dir}/tools/lint"/>
-	
-	<!-- rest of build system taskdefs for our codeqa stuff-->
-	
-	
-	
-	
-	
+	<path id="webdriver.path">
+	           <fileset dir="${sdk.dir}/tools/lib">
+		                <include name="guava-**.jar"/>
+		</fileset>
+		         <fileset dir="${sdk.dir}/extras/google/webdriver">
+		         	               <include name="**.jar"/>
+		         	</fileset>
+	</path>
+	<!-- extra google libs -->
 	
 	
+	<path id="admobs.path">
+	          <fileset dir="${sdk.dir}/extras/google/admob_ads_sdk">
+		                  <include name="**.jar"/>
+		</fileset>
+		<fileset dir="${sdk.dir}/extras/google/admob_ads_sdk/Add-ons">
+			        <include name="**.jar"/>
+		</fileset>
+	</path>
+	<path id="gcm.path">
+		               <fileset dir="${sdk.dir}/extras/google/gcm/gcm-client/dist">
+		                                         <include name="**.jar"/>
+		               	</fileset>
+	</path>
+	<!-- annotations from sdk/lib -->
+	<path id="annotations.jar.path">
+		             <fileset dir="${sdk.dir}/tools/support">
+		             	           <include name="**.jar"/>
+		             	</fileset>
+	</path>
 	
+	<!-- android support jars, use trick to correct libs on path when executing
+	      from an IDE that synchronizes the classpath and libs folder-->
+	<path id="android.support.v4.path">
+		            <fileset dir="${sdk.dir}/extras/android/support/v4">
+		            	                <include name="**.jar"/>
+		            </fileset>
+	</path>
+	<path id="android.support.v7.path">
+	                 <fileset dir="${sdk.dir}/extras/android/support/v7/girdlayout/libs">
+		                         <include name="**.jar"/>
+	                 	</fileset>
+		</path>
+	<path id="android.support.v13.path">
+	                   <fileset dir="${sdk.dir}/extras/android/support/v13">
+		                            <include name="**.jar"/>
+		          </fileset>
+	</path>
+	<property name="androidlint.exec" location="${sdk.dir}/tools/lint"/>
 	<property name="android.checkstyle" location="${project.root.dir}/android.eclipse.checkstyle.xml"/>
 	<property name="android.pmd" location="${project.root.dir}/android.pmd.ruleset.xml"/>
-	
-	<!-- Our build system flags, at this time these are set as blanks to be enabled when the 
-	       build script is launched
-	       
-	       most cases have the same build script being used in different project types thus the 
-	       var is one var for two items, nd client and nd server.
-	       
-	       isNativeDriver would be set with launch of the app build and we would pass on that
-	       var setting to the test build in the case of using robotium or in the case of using cucumber 
-	       to the cucumber build script and other test script sliek javamonkey, monkeyrunner, etc.
-	       -->
+	<property name="sdkcontroller.apk" location="${sdk.dir}/tools/apps/SdkController/bin/SdkControllerApp.apk"/>
+	<!-- ============================================================== -->
+	<!-- == GWSAntDroid build system flags:                                                                          == -->
+	<!-- ==     isNativeDriver             would be set with launch of the app build and    == -->
+	<!-- ==                                             we would pass on that var setting to the              == -->
+	<!-- ==                                             test build in the case of using robotium or            == -->
+	<!-- ==                                             in the case of using cucumber to the                       == -->
+	<!-- ==                                             cucumber build script and other test scripts        == -->
+	<!-- ==                                             like javamonkey, monkeyrunner, etc.                        == -->
+	<!-- ==     isCPMobileWeb         would be set on the app build before the test     == -->
+	<!-- ==                                             is executed.                                                                       == -->
+	<!-- ==      isWebDriver               Set when testing app project type for mobile       == -->
+	<!-- ==                                             web.                                                                                     == -->
+	<!-- ==      isDynamicTestReporting       An upcoming feature involving                    == -->
+	<!-- ==                                                             nativedriver and communicating with       == -->
+	<!-- ==                                                             a java war web app to dynamically             == -->
+	<!-- ==                                                             collect test data.                                              == -->
+	<!-- ==      isOnBuildServer         To allow setting of specific build server stuff       == -->
+	<!-- ==      isCodeqaOnInstrumented      Some prefer no codeqa on   their              == -->
+	<!-- ==                                                               Instrumented testing.                                   == -->
+	<!-- =============================================================== -->
 	<property name="isNativeDriver" value=""/>
-	<!-- We need two blank vas here for MobileWeb one for setting
-	        obfuscation when doing a production relase and one for 
-	        doing testing
-	        
-	        isWebDriver would be set on the app build before the test target run.
-	        isCPMobileWeb would be set on the app build
-	        -->
 	<property name="isCPMobileWeb" value=""/>
 	<property name="isWebDriver" value=""/>
-	<!-- our  flag so that we can avoid running war report servers as build server setup
-	      will have its own mulit-purpose war report server that we use
-	      
-	      Default is StaticTestReporting and not On build Server, this way we can have very much 
-	      one code base war test reports app that gets triggered slightly differently if its 
-	      just IDE or command line or build server.
-	      -->
 	<property name="isDynamicTestReporting" value=""/>
 	<property name="isOnBuildServer" value=""/>
+	<property name="isCodeqaOnInstrumented" value=""/>
+	<property name="isAndroidSupport" value=""/>
+	<property name="AndroidSupport.Version" value=""/>
+	<property name="isAdmobAds" value=""/>
+	<property name="isAnalytics" value=""/>
+	<property name="isGCM" value=""/>
+	<property name="isAnnotations" value=""/>
 	
+	<!--************************************************** -->
+	<!-- ** Beginning of build.xml from sdk                            ** -->
+	<!-- ************************************************* -->
 	<!--
 	            This build file is imported by the project build file. It contains
 	            all the targets and tasks necessary to build Android projects, be they
 
 	        <!-- compilation options -->
 	        <property name="java.encoding" value="UTF-8" />
-	        <!-- Most of the libs I use and code use 1.6 thus the 1.6 setting-->
+	        <!-- =============================================== -->
+	        <!-- == GWSAntDroid build system modification                         == -->
+	        <!--  == Most of the libs I use and code use 1.6                             == -->
+	        <!-- == thus the 1.6 setting                                                                  == -->
+	        <!-- ================================================ -->
 	        <property name="java.target" value="1.6" />
 	        <property name="java.source" value="1.6" />
 	
 	                </exec>
 	            </sequential>
 	        </macrodef>
+	
+	<!-- ============================================ -->
+	<!-- =========== Our GWSAntDroid Fixture Checks ===== -->
+	<!--  The general flow of this is:                                                       -->
+	<!--                  fixturechecks                                                                -->
+	<!--                  tallysets                                                                          -->
+	<!--                  tally to call the tallysets                                            -->
+	<!--                  rulemacrodefs                                                              -->
+	<!--                 ruleset                                                                             -->
+	<!--    With other things mixed in like criteria                              -->
+	<!-- flowing from the micro level to the                                      -->
+	<!-- gwsantdroid.project.type global level                                 -->
+	<!-- ============================================ -->
+	
+	<oja:fixturecheck isref="graphviz.exec" messageid="local.properties.graphviz.exec.missing"/>
+	<oja:fixturecheck isref="source.dir" messageid="ant.properties.source.dir.missing"/>
+	<oja:fixturecheck isref="out.dir" messageid="ant.properties.our,.dir.missing"/>
+	<oja:fixturecheck isref="company.url" messageid="ant.properties.company.url.missing"/>
+	<oja:fixturecheck isref="company.name" messageid="ant.properties.company.name.missing"/>
+	<oja:fixturecheck isref="copyright.years" messageid="ant.properties.copyright.years.missing"/>
+	<oja:fixturecheck isref="masterbranch.projecturl" messageid="ant.properties.masterbranch.projecturl.missing"/>
+	<oja:fixturecheck isref="apilevel.top" messageid="ant.properties.apilevel.top.missing"/>
+	<oja:fixturecheck isref="apilevel.bottom" messageid="ant.properties.apilevel.bottom.missing"/>
+	<oja:fixturecheck isref="androidsite.url" messageid="ant.properties.androidsite.url.missing"/>
+	<oja:fixutrecheck isref="androidsite.name" messageid="ant.properties.androidsite.name.missing"/>
+	<oja:fixturecheck isref="projectrepo.url" messageid="ant.properties.projectrepo.url.missing"/>
+	<oja:fixturecheck isref="gwsantdroid.project.type" message="ant.properties.gwsantdroid.project.type.missing"/>
+	
+	<!-- ================================================ -->
+	<!-- ============= Our GWSAntDroid TallySets ============ -->
+	<!-- == Our GWSAntDroid build system should be flexible         == -->
+	<!-- == enough that we can change to new frameworks and      == -->
+	<!-- == dev processes so we need to use Antxtras                        == -->
+	<!-- == tallyset/tally features to verify that certain                      == -->
+	<!-- == frameworks are laded without a hard ruleset to             == -->
+	<!-- == stop build if they do not exist. We also need to set      == -->
+	<!-- == tallsets to mark true if a build project type flag              == -->
+	<!-- == is set to project type                                                                == -->
+	<!-- ================================================ -->
+	<!-- tallysets for ant.path -->
+	<oja:tallyset name="tally.ant.classycle.libs">
+		<oja:isclasss classname="classycle.Analyser" classpatheref="ant.path"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.ant.checkstyle.libs">
+	      <oja:isclass classname="com.puppycrawl.tools.checkstyle.Checker" classpathref="ant.path"/>
+     </oja:tallyset>
+	 <oja:tallyset name="tally.ant.zutubi.libs">
+	 	  <oja:isclass classname="com.zutubi.android.ant.LintTask" classpathref="ant.path"/>
+	 </oja:tallyset>
+	<oja:tallyset name="tally.ant.javancss.libs">
+	           <oja:isclass classname="ccl.Main" classpathref="ant.path"/>
+		       <oja:isclass classname="org.javacc.version" classpathref="ant.path"/>
+		       <oja:isclass classname="javancss.Javancss" classpathref="ant.path"/>
+		       <oja:isclass classname="com.sun.java.help.impl.Tag" classpathref="ant.path"/>
+		       <oja:isclass classname="net.jernigan.javancss2ant.JavaNCSS" classpathref="ant.path"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.ant.yuicompressor.libs">
+	    <oja:isclass classname="net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask" classpathref="ant.path"/>
+		<oja:isclass classname="jargs.gnu.CmdLineParser" classpathref="ant.path"/>
+		<oja:isclass classname="org.mozilla.javascript.Arguments" classpathref="ant.path"/>
+		<oja:isclass classname="com.yahoo.platform.yui.compressor.Bootstrap" classpathref="ant.path"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.ant.pmd.libs">
+		<oja:isclass classname="org.objectweb.asm.Attribute" classpathref="ant.path"/>
+		<oja:isclass classname="org.jaxen.Context" classpathref="ant.path"/>
+		<oja:isclass classname="junit.framework.Assert" classpathref="ant.path"/>
+		<oja:isclass classname="net.sourceforge.pmd.PMD" classpathref="ant.path"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.ant.jsdoc.libs">
+	                  <oja:isclass classname="uk.co.darrenhurley.ant.tasks.JsDocToolkit" classpathref="ant.path"/>
+	</oja:tallyset>
+	<!-- tallysets for appcompile,
+	       we use androidannotations instead of roboguice/guice_noaop in apps -->
+	<oja:tallyset name="tally.appcompileandaptfactory.androidannotations.libs">
+	   <oja:isclass classname="com.googlecode.androidannotations.annotations.App" classpathref="appcompile.path"/>
+		<oja:isclass classname="com.googlecode.androidannotations.AndroidAnnotationProcessor" classpathref="aptfactory.path"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.appcompile.androidbinding.libs">
+	         <oja:isclass name="gueei.binding.Binder" classpathref="appcompile"/>
+		     <oja:iscalss classname="gueei.binding.converters.JS" classpathref="appcompile"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.appcompile.actionbarsherlock.libs">
+		<oja:iscalss classname="com.actionbarsherlock.ActionBarSherlock" classpathref="appcompile"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.appcompile.googleplay.libs">
+	         <oja:isclass classname="com.google.android.vending.licensing.DeviceLimiter" classpathref="appcompile"/>
+		<oja:isclass classname="com.google.android.vending.expansion.downloader.Constants" classpathref="appcompile"/>
+		<oja:isclass classname="com.google.android.vending.expansion.zipfile.APEZProvder" classpathref="appcompile"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.appcompile.nativedriver.libs">
+	               <oja:isclass classname="com.google.android.testing.nativedriver.common.Touch" classpathref="appcompile"/>
+	</oja:tallyset>
+	<oja:tallyset name="tally.appcompile.javacpp.libs">
+		<oja:isclass classname="com.googlecode.javacpp.Builder" classpathref="appcompile"/>
+	</oja:tallyset>
+	<!-- tallysets for librarycompile -->
+	
+	<!-- tallysets for testappcompile -->
+	<oja:tallyset name="tally.testappcompile.androidannotations.libs">
+	       <oja:isclass classname="com.googlecode.androidannotations.annotations.App" classpathref="tstappcompile.path"/>
+	    </oja:tallyset>
+	    <oja:tallyset name="tally.testappcompile.androidbinding.libs">
+	             <oja:isclass name="gueei.binding.Binder" classpathref="testappcompile"/>
+	             <oja:iscalss classname="gueei.binding.converters.JS" classpathref="testappcompile"/>
+	    </oja:tallyset>
+	    <oja:tallyset name="tally.testappcompile.actionbarsherlock.libs">
+	        <oja:iscalss classname="com.actionbarsherlock.ActionBarSherlock" classpathref="testappcompile"/>
+	    </oja:tallyset>
+	
+	<!-- tallysets for instrumented-test (compile) -->
+	<oja:tallyset name="tally.instrumentedtest.dexmakermockito.libs">
+	      <oja:isclass classname="com.google.dexmaker.Binary.Op" classpathref="instrumentedtest.path"/>
+		   <oja:isclass classanme="org.mockito.Mockito" classpathref="instrumentedtest.path"/>
+		</oja:tallyset>
+	<oja:tallyset name="tally.instrumentedtestandruntime.androidmock.libs">
+		             <oja:isclass classname="com.google.android.testing.mocking.AndroidMock" classpathref="instrumentedtest.path"/>
+		              <oja:isclass classname="com.google.android.testing.mocking.MockObject" classpathref="instrumentedruntime.path"/>
+    </oja:tallyset>
+	
+	<oja:tallyset name="tally.instrumentedtest.roboguiceguicerobotiumrobogherkhamcrestfest.libs">
+		<oja:isclass classname="roboguice.RoboGuice" classpathref="instrumentedtest.path"/>
+		<oja:isclass classname="com.google.inject.Guice" classpathref="instrumentedtest.path"/>
+		<oja:isclass classname="com.jayway.android.robotium.solo.Presser" classpathref="instrumentedtest.path"/>
+		<oja:isclass classname="org.bitbucket.fredgrott.gwsrobogherk.Device" classpathref="instrumentedtest.path"/>
+	     <oja:isclass classname="org.hamcrest.description" classpathref="instrumentedtest.path"/>
+		 <oja:isclass classname="org.fest.assertions.util.ArrayWrapperList" classpathref="instrumentedtest.path"/>
+	</oja:tallyset>
+	
+	
+	<oja:tallyset name="tally.instrumentedtest.nativedriver.libs">
+	                <oja:isclass classname="com.google.android.testing.nativedriver.client.AdbConnection" classpathref="instrumentedtest.path"/>
+		</oja:tallyset>
+	
+	<!-- tallyset for common build system stuff -->
+	
+	<oja:tallyset name="tally.common.buildsystemstuff">
+	              <oja:isdirectory filepath="${project.root.dir}/buildsys"/>
+		          <oja:isdirectory filepath="${buildsys.dir}/app.projectdocs"/>
+		          <oja:isdirectory filepath="${buildsys.dir}/codeqa"/>
+	              <oja:isdirectory filepath="${buildsys.dir}/guitar.projectdocs"/>
+	</oja:tallyset>
+	
+	
+	
+	<!-- ================================================ -->
+	<!-- ========= Our GWSAntDroid Tallys =================== -->
+	<!-- ================================================= -->
+	<oja:tally trueproperty="appnativec.env.present" all="yes">
+		                 <oja:tallyset refid="tally.javacpp"/>
+		                  <oja:isdirectory filepath="${basedir}/obj"/>
+		                  <oja:isfile filepath="${basedir}/jni/Android.mk"/>
+		                  <oja:tallyset refid="tally.doxygen.anttasks.lib"/>
+		</oja:tally>
+	<oja:tally trueproperty="appcompile.env.present" all="yes">
+	                <oja:tallyset refid="tally.appcompile.guice.libs"/>
+		             <oja:tallyset refid="tally.appcompile.actionbarsherlock.lib"/>
+		             <oja:tallyset refid="tally.appcompile.androidbinding.libs"/>
+		              <oja:tallyset ref="tally.appcompile.androidannotations.libs"/>
+	</oja:tally>
+	<oja:tally trueproperty="appdebug.dynamictestreporting.env.present" all="yes">
+	             <oja:tallyset refid="tally.app.nativedriver.lib"/>
+	</oja:tally>
+	<oja:tally trueproperty="testappdebug.dynamictestreporting.env.present" all="yes">
+		           <oja:tallyset  refid="tally.app.nativedriver.lib"/>
+		</oja:tally>
+	<oja:tally trueproperty="testdebug.dynamictestreporting.env.present" all="yes">
+		        <oja:tallyset refid="tally.test.nativedriver.lib"/>
+		</oja:tally>
+	<oja:tally trueproperty="testappcompile.env.present" all="yes">
+	                    <oja:tallyset refid="tally.testappcompile.guice.libs"/>
+	                     <oja:tallyset refid="tally.testappcompile.actionbarsherlock.lib"/>
+	                     <oja:tallyset refid="tally.testappcompile.androidbinding.libs"/>
+	                      <oja:tallyset ref="tally.testappcompile.androidannotations.libs"/>
+	    </oja:tally>
+	<oja:tally trueproperty="testcompile.env.present" all="yes">
+	                 <oja:tallyset refid="tally.instrumented-test.androidmock.libs"/>
+		             <oja:tallyset refid="tally.instrumented-test.fest.libs"/>
+		             <oja:tallyset refid="tally.instrumented-test.hamcrest.libs"/>
+		              <oja:tallyset refid="tally.instrumented-test.marvin.libs"/>
+		               <oja:tallyset refid="tally.instrumented-test.robotium.libs"/>
+		               <oja:tallyset refid="tally.instrumented-test.technetium.libs"/>
+	</oja:tally>
+	
 
 	    
 	<!-- ******************************************************* -->
 	        </if>
 	    </target>
 
-	    <!-- empty default pre-build target. Create a similar target in
-	         your build.xml and it'll be called instead of this one. 
-	         
-	         We put our rest of build system initization here so that its 
-	         executed such as:
-	               projectdocs images dir with copies of images from codeqa images dir
-	               reportscss css file copied to root of projectdocs dir
-	               
-	         
-	         We need this flexible as sometimes it will be different libs 
-	         imported in to use in a project thus we lazy confirm libs needed 
-	         later as we use them but here use antxtras rules and asserts, etc 
-	         to assert that we have a minimum build set up to continue the 
-	         build.
-	         
-	         -->
+	    <!-- =================================== -->
+	    <!-- == GWSAntDroid Modification                     == -->
+	    <!-- =================================== -->
 	    <target name="-pre-build">
 	    	     <copydir dest="${projectdocs.dir}/images" src="${codeqa.images.dir}"></copydir>
 	    	     <copyfile dest="${projectdocs.dir}" src="${codeqa.reportscss.dir}"/>
 	    	     <!-- copy org assets dir to our temp in case we need obfuscate js/css files-->
 	    	      <copydir dest="${assets.temp.dir}" src="${asset.dir}"></copydir>
-	    	<!-- Asserting the minimum for proper project setup. -->
-	    	
-	    	<!-- first lets deal with local.properties settings, sdk.dir is taken care of but 
-	    	       graphviz.exec needs to be asserted-->
-	    	<oja:assert isset="${graphviz.exec}" messageid="local.properties.graphviz.exec.missing"/>
-	    	<!-- need to assert the added stuff in the ant.properties file-->
-	    	<oja:assert isset="${company.url}" messageid="ant.properties.company.url.missing"/>
-	    	<oja:assert isset="${company.name}" messageid="ant.properties.company.name.missing"/>
-	    	<oja:assert isset="${copyright.years}" messageid="ant.properties.copyright.years.missing"/>
-	    	<oja:assert isset="${masterbranch.projecturl}" messageid="ant.properties.masterbranch.projecturl.missing"/>
-	    	<oja:assert isset="${apilevel.top}" messageid="ant.properties.apilevel.top.missing"/>
-	    	<oja:assert isset="${apilevel.bottom}" messageid="ant.properties.apilevel.bottom.missing"/>
-	    	<oja:assert isset="${androidsite.url}" messageid="ant.properties.androidsite.url.missing"/>
-	    	<oja:assert isset="${androidsite.name}" messagedi="ant.properties.androidsite.name.missing"/>
-	    	<oja:assert isset="${projectrepo.url}" messageid="ant.properties.projectrepo.url.missing"/>
-	    	<!-- Assert the minimum checkstyle and pmd xml config files -->
-	    	<oja:assert filenotempty="${android.checkstyle}" messageid="android.eclipse.checkstyle.xml.file.missing"/>
-	    	<oja:assert filenotempty="${android.pmd}" messageid="android.pmd.ruleset.xml.file.missing"/>
 	    	
+	    	      <!-- our asserts for the right minimum dev env for build go here -->
 	    	
 	    </target>
 
 	           Also run androidLint, PMD and Checkstyle and what do we fail on?
 	          -->
 	    <target name="-pre-compile">
-	
+	    	             <!-- compute any special paths depending upon what projec type and 
+	    	                    what flags are set-->
+	    	
+	    	
+	                       <!-- codeqa stuff, one item first doclava than rest in 
+	                               a later target -->
 	    	</target>
 
 	    <!-- Compiles this project's .java files into .class files. -->
 	    <target name="-compile" depends="-build-setup, -pre-build, -code-gen, -pre-compile">
 	        <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
-	            <!-- merge the project's own classpath and the tested project's classpath -->
+	            <!-- merge the project's own classpath and the tested project's classpath 
+	            
+	                   GWSantDroid modified to include androidannotations jar from 
+	                   apptfactory folder. We than submit our own path for first 
+	                   path as ours is set in the -precompile target for the right 
+	                   project type
+	            -->
 	            <path id="project.javac.classpath">
 	                <path refid="project.all.jars.path" />
 	                <path refid="tested.project.classpath" />
+	            	<fileset dir="${ext-libs.aptfactory.dir}" includes="*.jar"/>
 	            </path>
 	            <javac encoding="${java.encoding}"
 	                    source="${java.source}" target="${java.target}"
 	    </target>
 
 	    <!-- empty default post-compile target. Create a similar target in
-	         your build.xml and it'll be called instead of this one. -->
-	    <target name="-post-compile"/>
+	         your build.xml and it'll be called instead of this one. 
+	         
+	         GWSAntDroid  Modified, our rest of codeqa stuff here
+	         -->
+	    <target name="-post-compile">
+	    	
+	    	
+	    	</target>
 
 	    <!-- Obfuscate target
 	        This is only active in release builds when proguard.config is defined

buildsys/app.doclavaassets/gwsassets/html/index.html

-<html>
-  <head>
-    <meta http-equiv="refresh" content="0;url=reference/packages.html" />
-  </head>
-  <body>
-  </body>
-</html>

buildsys/app.doclavaassets/gwsassets/templates/assets/carousel.js

-/* file: carousel.js
-   date: oct 2008
-   author: jeremydw,smain
-   info: operates the carousel widget for announcements on 
-         the android developers home page. modified from the
-         original market.js from jeremydw. */
-
-/* -- video switcher -- */
-
-var oldVid = "multi"; // set the default video
-var nowPlayingString = "Now playing:";
-var assetsRoot = "assets/";
-
-
-/* -- app thumbnail switcher -- */
-
-var currentDroid;
-var oldDroid;
-
-// shows a random application
-function randomDroid(){
-
-	// count the total number of apps
-	var droidListLength = 0;
-	for (var k in droidList)
-		droidListLength++;
-		
-	// pick a random app and show it
-  var j = 0;
-  var i = Math.floor(droidListLength*Math.random());
-  for (var x in droidList) {
-    if(j++ == i){
-    	currentDroid = x;
-    	showPreview(x);
-    	centerSlide(x);
-    }
-  }
-
-}
-
-// shows a bulletin, swaps the carousel highlighting
-function droid(appName){
-
-  oldDroid = $("#droidlink-"+currentDroid);
-  currentDroid = appName;
-
-  var droid = droidList[appName];
-  
-  $("#"+appName).show().siblings().hide();
-
-  if(oldDroid)
-    oldDroid.removeClass("selected");
-
-  $("#droidlink-"+appName).addClass("selected");
-}
-
-
-// -- * build the carousel based on the droidList * -- //
-function buildCarousel() {
-  var appList = document.getElementById("app-list");
-  for (var x in droidList) {
-    var droid = droidList[x];
-    var icon = droid.icon;
-    var name = droid.name;
-    var a = document.createElement("a");
-    var img = document.createElement("img");
-    var br = document.createElement("br");
-    var span = document.createElement("span");
-    var text = document.createTextNode(droid.name);
-
-    a.setAttribute("id", "droidlink-" + x);
-    a.className = x;
-    a.setAttribute("href", "#");
-    a.onclick = function() { showPreview(this.className); return false; }
-    img.setAttribute("src", toRoot + assetsRoot + "images/home/" + droid.icon);
-    img.setAttribute("alt", "");
-
-    span.appendChild(text);
-    a.appendChild(img);
-    a.appendChild(br);
-    a.appendChild(span);
-    appList.appendChild(a);
-    
-    
-    /* add the bulletins */
-    var layout = droid.layout;
-    var div = document.createElement("div");
-    var imgDiv = document.createElement("div");
-    var descDiv = document.createElement("div");
-    
-    div.setAttribute("id", x);
-    div.setAttribute("style", "display:none");
-    imgDiv.setAttribute("class", "bulletinImg");
-    descDiv.setAttribute("class", "bulletinDesc");
-	
-	  if (layout == "imgLeft") {
-	    $(imgDiv).addClass("img-left");
-	    $(descDiv).addClass("desc-right");
-	  } else if (layout == "imgTop") {
-	    $(imgDiv).addClass("img-top");
-	    $(descDiv).addClass("desc-bottom");
-	  } else if (layout == "imgRight") {
-	    $(imgDiv).addClass("img-right");
-	    $(descDiv).addClass("desc-left");
-	  }
-	
-	  imgDiv.innerHTML = "<img src='" + toRoot + assetsRoot + "images/home/" + droid.img + "'>";
-	  descDiv.innerHTML = (droid.title != "") ? "<h3>" + droid.title + "</h3>" + droid.desc : droid.desc;
-		$(div).append(imgDiv);
-		$(div).append(descDiv);
-    
-    $("#carouselMain").append(div);
-    
-  }
-}
-
-// -- * slider * -- //
-
-// -- dependencies:
-//    (1) div containing slides, (2) a "clip" div to hide the scroller
-//    (3) control arrows
-
-// -- * config below * -- //
-
-var slideCode = droidList; // the dictionary of slides
-var slideList = 'app-list'; // the div containing the slides
-var arrowRight = 'arrow-right'; // the right control arrow
-var arrowLeft = 'arrow-left'; // the left control arrow
-
-
-function showPreview(slideName) {
-  centerSlide(slideName);
-  if (slideName.indexOf('selected') != -1) {
-    return false;
-  }
-  droid(slideName); // do this function when slide is clicked
-}
-
-var thumblist = document.getElementById(slideList);// the div containing the slides
-
-var slideWidth = 144; // width of a slide including all margins, etc.
-var slidesAtOnce = 3; // no. of slides to appear at once (requires odd number to have a centered slide)
-
-// -- * no editing should be needed below * -- //
-
-var originPosition = {};
-var is_animating = 0;
-var currentStripPosition = 0;
-var centeringPoint = 0;
-var rightScrollLimit = 0;
-
-// makeSlideStrip()
-// - figures out how many slides there are
-// - determines the centering point of the slide strip
-function makeSlideStrip() {
-  var slideTotal = 0;
-  centeringPoint = Math.ceil(slidesAtOnce/2);
-  for (var x in slideCode) {
-    slideTotal++;
-  }
-  var i = 0;
-  for (var code in slideCode) {
-    if (i <= centeringPoint-1) {
-      originPosition[code] = 0;
-    } else {
-      if (i >= slideTotal-centeringPoint+1)  {
-        originPosition[code] = (slideTotal-slidesAtOnce)*slideWidth;
-      } else {
-        originPosition[code] = (i-centeringPoint+1)*slideWidth;
-      }
-    }
-    i++;
-  }
-  rightScrollLimit = -1*(slideTotal-slidesAtOnce)*slideWidth;
-}
-
-// slides with acceleration
-function slide(goal, id, go_left, cp) {
-  var div = document.getElementById(id);
-  var animation = {};
-  animation.time = 0.5;  // in seconds
-  animation.fps = 60;
-  animation.goal = goal;
-  origin = 0.0;
-  animation.origin = Math.abs(origin);  
-  animation.frames = (animation.time * animation.fps) - 1.0;
-  var current_frame = 0;
-  var motions = Math.abs(animation.goal - animation.origin);
-  function animate() {
-    var ease_right = function (t) { return (1 - Math.cos(t * Math.PI))/2.0; };
-    var ease = ease_right;
-    if (go_left == 1) {
-      ease = function(t) { return 1.0 - ease_right(t); };
-    }
-    var left = (ease(current_frame/animation.frames) * Math.abs(animation.goal - animation.origin)) - cp; 
-    if(left < 0) {
-      left = 0;
-    }
-    if(!isNaN(left)) {
-      div.style.left = '-' + Math.round(left) + 'px';
-    }
-    current_frame += 1;
-    if (current_frame == animation.frames) {
-      is_animating = 0;
-      window.clearInterval(timeoutId)
-    }
-  }
-  var timeoutId = window.setInterval(animate, animation.time/animation.fps * 1000);
-}
-
-//Get style property
-function getStyle(element, cssProperty){
-  var elem = document.getElementById(element);
-  if(elem.currentStyle){
-    return elem.currentStyle[cssProperty]; //IE
-  } else{
-    var style =  document.defaultView.getComputedStyle(elem, null); //firefox, Opera
-    return style.getPropertyValue(cssProperty);
-  }
-}
-
-// Left and right arrows
-function page_left() {
-  var amount = slideWidth;
-  animateSlide(amount, 'left');
-}
-
-function page_right() { 
-  var amount = slideWidth;
-  animateSlide(amount, 'right');
-}
-
-
-// animates the strip
-// - sets arrows to on or off
-function animateSlide(amount,dir) {
-  var currentStripPosition = parseInt(getStyle(slideList,'left'));
-  var motionDistance;
-  if (amount == slideWidth ) {
-    motionDistance = slideWidth;
-  } else {
-    motionDistance = amount;
-  }
-  
-  var rightarrow = document.getElementById(arrowRight);
-  var leftarrow = document.getElementById(arrowLeft);
-  
-  function aToggle(state,aDir) {
-    if (state == 'on') {
-      if (aDir =='right') {
-        rightarrow.className = 'arrow-right-on';
-        rightarrow.href = "javascript:page_right()";
-      } else {
-        leftarrow.className = 'arrow-left-on';
-        leftarrow.href = "javascript:page_left()";
-      }
-    } else {
-      if (aDir =='right') {
-        rightarrow.href = "javascript:{}";
-        rightarrow.className = 'arrow-right-off'; 
-      } else {
-        leftarrow.href = "javascript:{}";
-        leftarrow.className = 'arrow-left-off';
-      }
-    }
-  }
-  
-  function arrowChange(rP) {
-    if (rP >= rightScrollLimit) {
-      aToggle('on','right');
-    }
-    if (rP <= rightScrollLimit) {
-      aToggle('off','right');
-    }
-    if (rP <= slideWidth) {
-      aToggle('on','left');
-    }
-    if (rP >= 0) {
-      aToggle('off','left');
-    }
-  }
-
-  if (dir == 'right' && is_animating == 0) {
-    arrowChange(currentStripPosition-motionDistance);
-    is_animating = 1;
-    slide(motionDistance, slideList, 0, currentStripPosition);
-  } else if (dir == 'left' && is_animating == 0) {
-    arrowChange(currentStripPosition+motionDistance);
-    is_animating = 1;
-    rightStripPosition = currentStripPosition + motionDistance;
-    slide(motionDistance, slideList, 1, rightStripPosition);
-  }
-}
-
-function centerSlide(slideName) {
-  var currentStripPosition = parseInt(getStyle(slideList,'left'));
-  var dir = 'left';
-  var originpoint = Math.abs(currentStripPosition);
-  if (originpoint <= originPosition[slideName]) {
-    dir = 'right';
-  }
-  var motionValue = Math.abs(originPosition[slideName]-originpoint);
-  animateSlide(motionValue,dir);
-}
-
-
-function initCarousel(def) {
-  buildCarousel();
-  showPreview(def);
-  makeSlideStrip();
-}

buildsys/app.doclavaassets/gwsassets/templates/assets/customizations.css

-#header {
-  border-bottom: 3px solid #0767a4;
-}
-
-#search_filtered .jd-selected {
-  background-color: #0767a4;
-}
-
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 24px;
-  height: 24px;
-  *margin-right: .3em;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("images/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-}
-
-[class^="icon-"]:last-child,
-[class*=" icon-"]:last-child {
-  *margin-left: 0;
-}
-
-.icon-white {
-  background-image: url("images/glyphicons-halflings-white.png");
-}
-
-.icon-glass {
-  background-position: 0      0;
-}
-
-.icon-music {
-  background-position: -24px 0;
-}
-
-.icon-search {
-  background-position: -48px 0;
-}
-
-.icon-envelope {
-  background-position: -72px 0;
-}
-
-.icon-heart {
-  background-position: -96px 0;
-}
-
-.icon-star {
-  background-position: -120px 0;
-}
-
-.icon-star-empty {
-  background-position: -144px 0;
-}
-
-.icon-user {
-  background-position: -168px 0;
-}
-
-.icon-film {
-  background-position: -192px 0;
-}
-
-.icon-th-large {
-  background-position: -216px 0;
-}
-
-.icon-th {
-  background-position: -240px 0;
-}
-
-.icon-th-list {
-  background-position: -264px 0;
-}
-
-.icon-ok {
-  background-position: -288px 0;
-}
-
-.icon-remove {
-  background-position: -312px 0;
-}
-
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-
-.icon-off {
-  background-position: -384px 0;
-}
-
-.icon-signal {
-  background-position: -408px 0;
-}
-
-.icon-cog {
-  background-position: -432px 0;
-}
-
-.icon-trash {
-  background-position: -456px 0;
-}
-
-.icon-home {
-  background-position: 0 -24px;
-}
-
-.icon-file {
-  background-position: -24px -24px;
-}
-
-.icon-time {
-  background-position: -48px -24px;
-}
-
-.icon-road {
-  background-position: -72px -24px;
-}
-
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-
-.icon-download {
-  background-position: -120px -24px;
-}
-
-.icon-upload {
-  background-position: -144px -24px;
-}
-
-.icon-inbox {
-  background-position: -168px -24px;
-}
-
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-
-.icon-repeat {
-  background-position: -216px -24px;
-}
-
-.icon-refresh {
-  background-position: -240px -24px;
-}
-
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-
-.icon-lock {
-  background-position: -287px -24px;
-}
-
-.icon-flag {
-  background-position: -312px -24px;
-}
-
-.icon-headphones {
-  background-position: -336px -24px;
-}
-
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-
-.icon-barcode {
-  background-position: -456px -24px;
-}
-
-.icon-tag {
-  background-position: 0 -48px;
-}
-
-.icon-tags {
-  background-position: -25px -48px;
-}
-
-.icon-book {
-  background-position: -48px -48px;
-}
-
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-
-.icon-print {
-  background-position: -96px -48px;
-}
-
-.icon-camera {
-  background-position: -120px -48px;
-}
-
-.icon-font {
-  background-position: -144px -48px;
-}
-
-.icon-bold {
-  background-position: -167px -48px;
-}
-
-.icon-italic {
-  background-position: -192px -48px;
-}
-
-.icon-text-height {
-  background-position: -216px -48px;
-}
-
-.icon-text-width {
-  background-position: -240px -48px;
-}
-
-.icon-align-left {
-  background-position: -264px -48px;
-}
-
-.icon-align-center {
-  background-position: -288px -48px;
-}
-
-.icon-align-right {
-  background-position: -312px -48px;
-}
-
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-
-.icon-list {
-  background-position: -360px -48px;
-}
-
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-
-.icon-picture {
-  background-position: -456px -48px;
-}
-
-.icon-pencil {
-  background-position: 0 -72px;
-}
-
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-
-.icon-adjust {
-  background-position: -48px -72px;
-}
-
-.icon-tint {
-  background-position: -72px -72px;
-}
-
-.icon-edit {
-  background-position: -96px -72px;
-}
-
-.icon-share {
-  background-position: -120px -72px;
-}
-
-.icon-check {
-  background-position: -144px -72px;
-}
-
-.icon-move {
-  background-position: -168px -72px;
-}
-
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-
-.icon-backward {
-  background-position: -240px -72px;
-}
-
-.icon-play {
-  background-position: -264px -72px;
-}
-
-.icon-pause {
-  background-position: -288px -72px;
-}
-
-.icon-stop {
-  background-position: -312px -72px;
-}
-
-.icon-forward {
-  background-position: -336px -72px;
-}
-