/*
    Author: Joe Tan
    Email: jtan@silaspartners.com

*/    
var SilasPage = function() {
    function SilasPlugins(e){
    }
    var self = SilasPlugins
    
    function addOnLoad (func) {
        this.plugins[this.plugins.length] = func
    }
    function addOnLoadFinish (func) {
        this.pluginsFinish[this.pluginsFinish.length] = func
    }
    
    function initialize() {
        for (var i=0;i<this.plugins.length;i++) {
            this.plugins[i]()
        }
        for (var i=0;i<this.pluginsFinish.length;i++) {
            this.pluginsFinish[i]()
        }
    }
    self.addOnLoad = addOnLoad
    self.addOnLoadFinish = addOnLoadFinish
    self.initialize = initialize
    self.plugins = Array()
    self.pluginsFinish = Array()
    return self;
}();

function initializeBookmark() {
    var location = window.location + ""
    if (location.indexOf('#') != -1)
        gotoBookmark(location.substring(location.indexOf('#')+1))
}

SilasPage.addOnLoadFinish(initializeBookmark)

/*
Some useful utility DOM functions
*/
function GetElementsWithClassName(elementName,className,obj) {
    var allElements = null
    if (obj) {
        allElements = obj.getElementsByTagName(elementName);
    } else {
    	allElements = document.getElementsByTagName(elementName);
    }
	var elemColl = new Array();
	for (i = 0; i< allElements.length; i++) {
		if (isClass(allElements[i], className)) {
			elemColl[elemColl.length] = allElements[i];
		}
	}
	return elemColl;
}
function DOM_insertAfter(newChild,refChild)
//Post condition: if childNodes[n] is refChild, than childNodes[n+1] is newChild.
{
  var parent=refChild.parentNode;
  if(parent.lastChild==refChild) return parent.appendChild(newChild);
  else return parent.insertBefore(newChild,refChild.nextSibling);
}
function isClass(object, className) {
	return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
}
function removeElement(id)   {
   var Node = document.getElementById(id);
   return Node.parentNode.removeChild(Node);
}


/* Misc functions */
function clearDefaultValue(obj) {
    if (!obj.defaultValue || obj.defaultValue == '' || (obj.defaultValue == obj.value)) {
        obj.value = ''
        if (obj.className) obj.className += ' focused'
        else obj.className = 'focused'
    }
}
function gotoBookmark (bookmark) {
    return
}
function clearDefault(obj) { return clearDefaultValue(obj); }
function doDropDown(obj) {
    var url = obj.options[obj.selectedIndex].value
    if (url != "null") {
    window.location = url
    }
}
function ap_stopAll () {}
