/**
 * @author Scott Clarke, Sean White
 */
document.write('<script type="text/javascript" src="/js/jsonClass.js"></script>');
document.write('<script type="text/javascript" src="/js/leftMenu.vm"></script>');

var common = {
	
	scriptRoot : "/js",
	version: 0.1,
	loadedLibs: [],
	showDebug : false,
	
	include : function(requiredScript) {
		if(inArray(common.loadedLibs,requiredScript) < 0) {
			//alert(requiredScript);
			/*
			var script = document.createElement("script");
			script.src = common.scriptRoot + "/" + requiredScript + ".js";
			document.getElementsByTagName("head")[0].appendChild(script);
			*/
		    // inserting via DOM fails in Safari 2.0, so brute force approach
		    document.write('<script type="text/javascript" src="'+ common.scriptRoot + '/' + requiredScript + '.js"></script>');
			common.loadedLibs.push(requiredScript);
			
		}
	},
	
	includeScripts : function(scriptsArray) {
		
		var arrayLen = scriptsArray.length;
		for(i=0;i < arrayLen; i=i+1) {
			common.include(scriptsArray[i]);
		}
	},
	
	globalSearchHandler : function() {
		formObj = document.getElementById('quickSearchForm');
		searchQuery = formObj.searchQueryText.value;
		searchType = formObj.typeOfSearch[formObj.typeOfSearch.selectedIndex].value
		
		if(searchQuery != "") {		
			switch(searchType) {
				case "itemSearch" :
					window.location = "/items.vm?itemSearchCriteria.wildCard=1&report=search&query=" + searchQuery;		
				break;
				
				case "charSearch" :
					window.location = "/characterSearch.vm?characterSearchCriteria.wildCard=1&format=wide&query=" + searchQuery;		
				break;
				
				case "guildsSearch" :
					window.location = "/guildSearch.vm?guildSearchCriteria.wildCard=1&query=" + searchQuery;		
				break;
				
			}
		}
	}
}

function $() {
  var results = [], element;
  for (var i = 0; i < arguments.length; i++) {
    element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    results.push(Element.extend(element));
  }
  return results.reduce();
}

//var $F = Form.Element.getValue;


var Try = {
  these: function() {
    var returnValue;

    for (var i = 0; i < arguments.length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }

    return returnValue;
  }
}

function inArray(arrayList,findString) {
	var al=arrayList.length;
    for (var i = 0; i < al; i++)
      if (arrayList[i] == findString) return i;
    return -1;
}


//someone else's code 
function copyObject(myObj)
{
	if(typeof(myObj) != 'object') return myObj;
	if(myObj == null) return myObj;

	var myNewObj = new Object();
	
	for(var i in myObj) {
		myNewObj[i] = myObj[i];
	}
	
	return myNewObj;
}

function copyByInheritance(object) {
	function dummyConstructor(){};
	dummyConstructor.prototype = object;
	return new dummyConstructor();
}

function isArray(a) {
return isObject(a) && a.constructor === Array;
}
function isBoolean(a) {
return typeof a === 'boolean';
}
function isEmpty(o) {
	var i, v;
	if (isObject(o)) {
		for (i in o) {
		v = o[i];
		if (isUndefined(v) && isFunction(v)) {
			return false;
		}
	}
}
return true;
}
function isFunction(a) {
return typeof a === 'function';
}
function isNull(a) {
return typeof a === 'object' && !a;
}
function isNumber(a) {
return typeof a === 'number' && isFinite(a);
}
function isObject(a) {
return (a && typeof a === 'object') || isFunction(a);
}
function isString(a) {
return typeof a === 'string';
}
function isUndefined(a) {
return typeof a === 'undefined';
} 

function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

