CCI = {};

CCI.LIB_VERSION = "0.1regonly";

CCI.util = {
		"safeLoad"			:	function() {
			// safely execute a function after the DOM is ready
			// Listens for when the scrollbar is ready to be used
			
			//store this in a closure, in case we do asynchronous operation
			var This = this;
			this.timeoutLength = 200;	//millis
			
			// the first argument must be the function to call; 
			// any remaining arguments get passed to that function
			
			if (typeof arguments[0] != "function") {
				throw("First parameter to CCI.util.safeLoad is required and must be a function");
				} else {
					this.functionToCall = arguments[0];
					//console.dir(this);
					}
			
			this.execute = function() {
				//on the first call, we need to cache the arguments
				if (typeof This.arguments == "undefined") {
          This.arguments = arguments;
          }
				if ( typeof document.all == "object" && (document.readyState != "loaded" && document.readyState != "complete") ) {
					try {
						document.documentElement.doScroll("left");
						This.functionToCall.apply(This.functionToCall, This.arguments);
					} catch(error) {
						setTimeout(This.execute, This.timeoutLength);
					}
				} else {
					This.functionToCall.apply(This.functionToCall, This.arguments);
					}
				};
		},
		
		"getElementsByClassName"	:	function(bag) {
				bag = bag || {};
				if(bag.container === undefined) {
          bag.container = document;
          }
				var theContainer = bag.container;
				if (theContainer.getElementsByClassName) {
				// newer browsers have native support for getElementsByClassName
				return theContainer.getElementsByClassName(bag.classname);
				} else {
				var classElements = [];
        			var els = theContainer.getElementsByTagName("*");
        			var elsLen = els.length;
        			var pattern = new RegExp("(^|\\s)"+bag.classname+"(\\s|$)");
        			for (i = 0, j = 0; i < elsLen; i++) {
                		if ( pattern.test(els[i].className) ) {
                        classElements[j] = els[i];
                        j++;
                		}
        			}
        		return classElements;
				}
			},
			
		"doSort"	:	function(bag) {
			bag = bag || {};
      var tags = bag.tagsArr, tagsParent = bag.tagsParent, tagAlphaArr = [], sorted = 0;
			
			for (j=0;j<tags.length;j++) {
				if (tags[j].childNodes.length > 0 && tags[j].value !== undefined) {
					tagAlphaArr.push(tags[j]);
					}
				}
			
			//console.dir(tagAlphaArr);
			
			if (tagAlphaArr[0].childNodes[0].data) {
				sorted = 1;
				tagAlphaArr.sort(function(c, d) {
				//	console.log(c.childNodes[0].data + " | " + d.childNodes[0].data);
  				return c.childNodes[0].data == d.childNodes[0].data? 0: (c.childNodes[0].data > d.childNodes[0].data ? 1 : -1);
				});
			} else if (tagAlphaArr[0].childNodes[0].innerHTML) {
				sorted = 1;
				tagAlphaArr.sort(function(c, d) {
				//	console.log(c.childNodes[0].innerHTML + " | " + d.childNodes[0].innerHTML);
  				return c.childNodes[0].innerHTML == d.childNodes[0].innerHTML? 0: (c.childNodes[0].innerHTML > d.childNodes[0].innerHTML ? 1 : -1);
				});
			}
			
			if (sorted) {			
				for (x = 0; x < tagAlphaArr.length; ++x) {
  					tagsParent.appendChild(tagAlphaArr[x]);
					}
				} else { return false; }
			
			},
		
		"clearOnFocus"	:	function(bag)	{
			// clear any value or innerHTML of an element onFocus
			bag = bag || {};
			var clearThisClass = bag.classname, oriVal = 0, oriInnerHTML = 0;
			elementArr = CCI.util.getElementsByClassName({classname:clearThisClass});
			
			for (i=0;i<elementArr.length;i++) {
				var theEl = elementArr[i];
				if (theEl.value) { 
          oriVal = theEl.value; 
          }
				if (theEl.innerHTML) { 
          oriInnerHTML = theEl.innerHTML; 
          }
				theEl.onfocus = function() {
					This = this;
					if (oriVal) {
            This.value = "";
            }
					if (oriInnerHTML) {
            This.innerHTML = "";
            }
					};
				}
			}		
		};

CCI.articles = {
			
			
		"addSort"	:	function(bag) {
			bag = bag || {};
			var tagListClass = bag.tagListClass;
			var blogTagsArr = CCI.util.getElementsByClassName({classname:tagListClass});
		//	console.dir(blogTagsArr);
			for (i=0;i<blogTagsArr.length;i++) {
			var blogTags = blogTagsArr[i];
			if (blogTags.childNodes.length > 0) {
			var tags = blogTags.childNodes;
			CCI.util.doSort({tagsArr:tags,tagsParent:blogTags});
					}
				}
			}
		};
