shoogar

Javascript Application & Development Framework

view shoogar.js
features 1. Enables autoload function with a configuration file.
2. Enables the adding and removing of external stylesheets or javascript files or internal styles.
3. Includes an extensive browser check.
4. Enables valid browser specific CSS fixes with Javacript: no more ugly selector or property hacks!
5. Contains more usefull functions (Ajax, Browser, Cookie, Debug, Element, Event, Script and Style).
changelog changelog.txt
demo demo.htm
tests tests.htm
download shoogar.js
apidoc bizmedia jslib
status development
version 1.7.6
last mod 2008/01/16
supported
browsers
Internet Explorer 6 higher
Firefox 1.5 higher
Opera 9.x higher
Safari 2.x higher
author Uli Preuss
copyright © 2007-2008 bizmedia
note 'Shoogar' is the name of a curious magus in the wonderful fantasy novel 'The Flying Sorcerers' by David Gerrold and Larry Niven. The conclusion of the story: magic and sciences are only two modes of perception one and the same things - the reality.
licence The MIT License:

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Constructors

SHO()

Base class

examples

var obj = new SC();
if( obj.isloaded.Browser == true) do something;
alert( obj.metadata.version );

properties

type name description
object isloaded Object with infos if subclasses are loaded
object metadata Infos about the Initer script

SHO.Ajax()

Ajax functions

examples

var ajaxObj = new SHO.Ajax();

methods

SHO.Browser()

This function performs an extensive browser detection and stores all data in an object for later use.

examples

var browserObj = new SHO.Browser();

objects

type name description
bool name Checks browser name
bool platform Checks browser platform
bool isGecko Checks if browser is Gecko
bool isAppleWebKit Checks if browser is AppleWebKit
bool isIE Checks if browser is IE
bool isNS Checks if browser is Netscape
bool isFirebird Checks if browser is Firebird
bool isFirefox Checks if browser is Firefox
bool isSafari Checks if browser is Safari
bool isKonqueror Checks if browser is Konqueror
bool isOmniweb Checks if browser is Omniweb
bool isWebtv Checks if browser is Webtv
bool isICab Checks if browser is ICab
bool isCamino Checks if browser is Camino
bool isIECompatible Checks if browser is IE compatible
bool isNSCompatible Checks if browser is NS compatible
bool geckoVersion Checks if browser is Gecko version
bool isMozillaEquiv Checks if browser is equivalent Mozilla
number versionMinor Checks browser version minor
number versionMajor Checks browser version major
bool isDOM Checks if browser support DOM
bool isDOM1 Checks if browser support DOM 1
bool isDOM2Event Checks if browser support DOM 2 Event
bool isDHTML Checks if browser support DHTML
string mode Checks if browser mode is back compatible
bool isWin Checks if browser platform is Windows
bool isWin32 Checks if browser platform is Windows 32
bool isMac Checks if browser platform is Mac
bool isNS6x Checks if browser is NS6 x
bool isNS6up Checks if browser is NS6x
bool isNS7x Checks if browser is NS7x
bool isNS7up Checks if browser is NS7 up
bool isIE5x Checks if browser is IE5x
bool isIE55 Checks if browser is IE5.5
bool isIE5up Checks if browser is IE5 up
bool isIE6x Checks if browser is IE6x
bool isIE6up Checks if browser is IE6 up
number flashInstalled Checks if flash is installed
(0 = not installed, 1 = unknown, 2 = installed )
number flashVersion Checks flash version
number availWidth Returns available screen width
number availHeight Returns available screen height
number scrollTop Returns top positon in scrolled browser window

SHO.Config()

Configuration functions

examples

var confObj = new SHO.Config();

objects

type name description
const PATH_ROOT Path to the root folder
const PATH_CSS Default value = "stylesheets"
const PATH_CSS_AUTO Default value = "stylesheets/pages"
const PATH_CSS_PATCH Default value = "stylesheets/patches"
const PATH_CSS_APPS Default value = "stylesheets/apps"
const PATH_CSS_ALTER Default value = "stylesheets/apps"
const PATH_JS Default value = "javascripts"
const PATH_JS_LIB Default value = "javascripts/lib"
const PATH_JS_DEV Default value = "javascripts/dev"
const PATH_JS_APPS Default value = "javascripts/apps"
const PATH_IMG Default value = "images"
const PATH_CONF Default value = "conf"
const NAME_FILE_SELF

SHO.Cookie()

Cookie functions

examples

var cookieObj = new SHO.Cookie();

methods

SHO.Debug()

Object with informations about shoogar.js and stores all data in an object for later use.

examples

var debugObj = new SHO.Debug();

objects

type name description
string version Version number
string lastmod Date of the last modification
string contact Author mail for contact
string urlscript Link to the script archive
string urldoc Link to the script documentation (this file)

methods

SHO.Element()

Element functions

examples

var elemObj = new SHO.Element();

methods

SHO.Event()

Event functions

examples

var eventObj = new SHO.Event();

methods

SHO.Script()

Script functions

examples

var scriptObj = new SHO.Script();

methods

SHO.Style()

Stylesheet function

examples

var styleObj = new SHO.Style();

methods

Objects

bool SHO.Browser.name

Checks browser name

examples

if (browserObj.name == "Opera") do something

bool SHO.Browser.platform

Checks browser platform

examples

if (browserObj.platform == "Mac") do something

bool SHO.Browser.isGecko

Checks if browser is Gecko

examples

if (browserObj.isGecko) do something

bool SHO.Browser.isAppleWebKit

Checks if browser is AppleWebKit

examples

if (browserObj.isAppleWebKit) do something

bool SHO.Browser.isIE

Checks if browser is IE

examples

if (browserObj.isIE) do something

bool SHO.Browser.isNS

Checks if browser is Netscape

examples

if (browserObj.isNS) do something

bool SHO.Browser.isFirebird

Checks if browser is Firebird

examples

if (browserObj.isFirebird) do something

bool SHO.Browser.isFirefox

Checks if browser is Firefox

examples

if (browserObj.isFirefox) do something

bool SHO.Browser.isSafari

Checks if browser is Safari

examples

if (browserObj.isSafari) do something

bool SHO.Browser.isKonqueror

Checks if browser is Konqueror

examples

if (browserObj.isKonqueror) do something

bool SHO.Browser.isOmniweb

Checks if browser is Omniweb

examples

if (browserObj.isOmniweb) do something

bool SHO.Browser.isWebtv

Checks if browser is Webtv

examples

if (browserObj.isWebtv) do something

bool SHO.Browser.isICab

Checks if browser is ICab

examples

if (browserObj.isICab) do something

bool SHO.Browser.isCamino

Checks if browser is Camino

examples

if (browserObj.isCamino) do something

bool SHO.Browser.isIECompatible

Checks if browser is IE compatible

examples

if (browserObj.isIECompatible) do something

bool SHO.Browser.isNSCompatible

Checks if browser is NS compatible

examples

if (browserObj.isNSCompatible) do something

bool SHO.Browser.geckoVersion

Checks if browser is Gecko version

examples

if (browserObj.geckoVersion) do something

bool SHO.Browser.isMozillaEquiv

Checks if browser is equivalent Mozilla

examples

if (browserObj.isMozillaEquiv) do something

number SHO.Browser.versionMinor

Checks browser version minor

examples

if (browserObj.versionMinor) do something

number SHO.Browser.versionMajor

Checks browser version major

examples

if (browserObj.versionMajor) do something

bool SHO.Browser.isDOM

Checks if browser support DOM

examples

if (browserObj.isDOM) do something

bool SHO.Browser.isDOM1

Checks if browser support DOM 1

examples

if (browserObj.isDOM1) do something

bool SHO.Browser.isDOM2Event

Checks if browser support DOM 2 Event

examples

if (browserObj.isDOM2Event) do something

bool SHO.Browser.isDHTML

Checks if browser support DHTML

examples

if (browserObj.isDHTML) do something

string SHO.Browser.mode

Checks if browser mode is back compatible

examples

if (browserObj.mode) do something

bool SHO.Browser.isWin

Checks if browser platform is Windows

examples

if (browserObj.isWin) do something

bool SHO.Browser.isWin32

Checks if browser platform is Windows 32

examples

if (browserObj.isWin32) do something

bool SHO.Browser.isMac

Checks if browser platform is Mac

examples

if (browserObj.isMac) do something

bool SHO.Browser.isNS6x

Checks if browser is NS6 x

examples

if (browserObj.isNS6x) do something

bool SHO.Browser.isNS6up

Checks if browser is NS6x

examples

if (browserObj.isNS6x) do something

bool SHO.Browser.isNS7x

Checks if browser is NS7x

examples

if (browserObj.isNS7x) do something

bool SHO.Browser.isNS7up

Checks if browser is NS7 up

examples

if (browserObj.isNS7up) do something

bool SHO.Browser.isIE5x

Checks if browser is IE5x

examples

if (browserObj.isIE5x) do something

bool SHO.Browser.isIE55

Checks if browser is IE5.5

examples

if (browserObj.isIE55) do something

bool SHO.Browser.isIE5up

Checks if browser is IE5 up

examples

if (browserObj.isIE5up) do something

bool SHO.Browser.isIE6x

Checks if browser is IE6x

examples

if (browserObj.isIE6x) do something

bool SHO.Browser.isIE6up

Checks if browser is IE6 up

examples

if (browserObj.isIE6up) do something

number SHO.Browser.flashInstalled

Checks if flash is installed
(0 = not installed, 1 = unknown, 2 = installed )

examples

if (browserObj.flashInstalled) do something

number SHO.Browser.flashVersion

Checks flash version

examples

if (browserObj.flashVersion) do something

number SHO.Browser.availWidth

Returns available screen width

examples

alert(browserObj.availWidth)

number SHO.Browser.availHeight

Returns available screen height

examples

alert(browserObj.availHeight)

number SHO.Browser.scrollTop

Returns top positon in scrolled browser window

examples

alert(browserObj.scrollTop)

const SHO.Config.PATH_ROOT

Path to the root folder

const SHO.Config.PATH_CSS

Default value = "stylesheets"

const SHO.Config.PATH_CSS_AUTO

Default value = "stylesheets/pages"

const SHO.Config.PATH_CSS_PATCH

Default value = "stylesheets/patches"

const SHO.Config.PATH_CSS_APPS

Default value = "stylesheets/apps"

const SHO.Config.PATH_CSS_ALTER

Default value = "stylesheets/apps"

const SHO.Config.PATH_JS

Default value = "javascripts"

const SHO.Config.PATH_JS_LIB

Default value = "javascripts/lib"

const SHO.Config.PATH_JS_DEV

Default value = "javascripts/dev"

const SHO.Config.PATH_JS_APPS

Default value = "javascripts/apps"

const SHO.Config.PATH_IMG

Default value = "images"

const SHO.Config.PATH_CONF

Default value = "conf"

const SHO.Config.NAME_FILE_SELF

string SHO.Debug.version

Version number

examples

var version = debugObj.version;

string SHO.Debug.lastmod

Date of the last modification

examples

var lastMod = Debug.lastmod;

string SHO.Debug.contact

Author mail for contact

examples

var author = Debug.author;

string SHO.Debug.urlscript

Link to the script archive

examples

var scriptLink = Debug.UrlScript;

string SHO.Debug.urldoc

Link to the script documentation (this file)

examples

var docLink = Debug.UrlDoc;

Functions

SHO.Ajax.simpleRequest(url)

Load

examples

ajaxObj.simpleRequest(url);

parameters

type name description
string url JSON/XML Object Url

SHO.Ajax.parseData(data_type, data_source, rootElement)

Load JSON/XML Object with JKL.ParseXML.

examples

ajaxObj.parseData(url);

parameters

type name description
string data_type JSON or XML
string data_source JSON/XML Object Url
string rootElement Name of root element (optional/only XML)

SHO.Ajax.loadJSON(url)

Load JSON Object with prototype Ajax.Request.

examples

ajaxObj.loadJSON(url);

parameters

type name description
string url JSON Object Url

SHO.Cookie.create(name, value, days)

Function to create cookie

examples

cookieObj.create('font-size','12px','100');

parameters

type name description
string name Name of the cookie
string value Value of the cookie
string days Number of days until expires

SHO.Cookie.read(name)

Function to read cookie

examples

alert(cookieObj.read('font-size'))

parameters

type name description
string name Name of the cookie

SHO.Cookie.erase(name)

Function to erase cookie

examples

cookieObj.erase()

parameters

type name description
string name Name of the cookie

SHO.Debug.showBrowserInfo()

Returns all browser informations in a formated string

examples

alert(Debug.showBrowserInfo());

SHO.Debug.showDocs()

Show documentation

examples

debugObj.showDocs();

SHO.Debug.benchmark(func, times, args)

Simple benchmark test function

examples

debugObj.benchmark(test, 1000000, [1,2,3]);

parameters

type name description
function func Function
number times Title of alternate stylesheet
array args Arguments

SHO.Element.setDraggable(Id)

Add Drag and Drop function to an element

examples

elemObj.setDraggable('IdOfMyElement')

parameters

type name description
string Id Element id

SHO.Element.appendToBody(tagname, id, content)

Append an element to the BODY

examples

elemObj.appendToBody('div', 'myId', 'Hello!');

parameters

type name description
string tagname New HTML element
string id New element id
string content New element content

SHO.Element.appendToElementById(id1, tagname, id2, content)

Append an element to an existig Element by id

examples

elemObj.appendToElementById('myId1', 'div', 'myId2', 'Hello!');

parameters

type name description
string id1 Target id
string tagname New HTML element
string id2 New element id
string content New element content

SHO.Element.remove(id)

Remove an element

examples

elemObj.remove('IdOfMyElement');

parameters

type name description
string id Element id

SHO.Event.add(obj, evt, fn)

Add an event

examples

eventObj.add(document, 'keypress', myKeypressFunction);

parameters

type name description
string obj Object (window, document , ..)
string evt Event (keypress, mouseover,..)
string fn Function name

SHO.Event.remove(obj, evt, fn)

Remove an event

examples

eventObj.remove(document, 'keypress', myKeypressFunction);

parameters

type name description
string obj Object (window, document , ..)
string evt Event (keypress, mouseover,..)
string fn Function name

SHO.Event.sync()

Ensure the synchronous of data

examples

eventObj.sync(start, callback, max_wait)
eventObj.sync(start, callback, failure_callback, max_wait)

SHO.Event.disableSelecting()

Disable selecting text elements (without input and textarea)

examples

eventObj.disableSelecting()

SHO.Event.disableContextMenu()

Disable Selecting Elements

examples

eventObj.disableContextMenu()

SHO.Script.appendFile(filepath)

Append a javascript file (appendChild version)

examples

scriptObj.appendFile(PATH_JS + '/newscript.js');

parameters

type name description
string filepath File path.

SHO.Script.addEmpty(filepath)

Insert an empty script BEFORE page load

examples

scriptObj.addEmpty();

parameters

type name description
string filepath File path.

SHO.Script.loadFile(filepath)

Load a javascript file AFTER page load -> usage of addEmpty()

examples

scriptObj.loadFile(path/to/newscript.js');

parameters

type name description
string filepath File path.

SHO.Script.addFile(filepath)

Add a javascript file (document.write version)
NOTE: Usage only before load!

examples

scriptObj.addFile(PATH_JS_APPS + '/quiz.js');

parameters

type name description
string filepath File path

SHO.Script.useLib()

Load the javascript lib files

examples

scriptObj.useLib();

SHO.Style.enableAlternateFile(styleTitle)

Enable alternate stylesheet

examples

styleObj.enableAlternateFile('alternateStyleTitle');
styleObj.enableAlternateFile('');

parameters

type name description
string styleTitle Title of alternate stylesheet

SHO.Style.disableAlternates()

Disable all alternate stylesheets

examples

styleObj.disableAlternates();

SHO.Style.addFile(css, id)

Add a CSS file

examples

styleObj.addFile(PATH_CSS + '/xtra.css');

parameters

type name description
string css Stylesheet name
string id (otional)

SHO.Style.removeFile(css)

Remove a CSS file

examples

styleObj.removeFile('xtra.css');

parameters

type name description
string css Stylesheet name

SHO.Style.addRule(selectorText, ruleText)

Create a (crossbrowser) style rule

examples

styleObj.addRule("#myElement", "top:30px");

parameters

type name description
string selectorText The CSS selector text.
string ruleText The style specification with or without braces.

SHO.Style.addClassById(elementId, className)

Add a class on an element by ID

examples

styleObj.addClassById("sheet", "style2");

parameters

type name description
string elementId id of an element
string className class name of an element

SHO.Style.getStyleById(elementId, strCssRule)

Get the CSS rule of an element by ID

examples

styleObj.getStyleById('sheet', 'background-color');

parameters

type name description
string elementId id of an element
string strCssRule CSS rule of an element

SHO.Style.getElementsByClassName(className, tag, elm)

Get an Elements by class name

examples

var arrayOfElements = styleObj.getElementsByClassName();

parameters

type name description
string className class name
string tag tag name
string elm (optional, default: document)

SHO.Style.loadAuto()

Load page stylesheet from url

examples

styleObj.loadAuto();

SHO.Style.loadAlternates()

Load alternate stylesheets

examples

styleObj.loadAlternates('green', 'red');