// main javascript file for gocitykids


// This object is used to control subnav elements and associated events
// All bindings are held in navHandler.items and can be added through navHandler._addItem()
// items are Element / Child pairs that listen for when mouseout on both parent and child exist
var navHandler = {
	items: Array(),
	_addItem: function(parent, child) {
		if(typeof(parent) != 'object') { parent = document.getElementById(parent); }
		if(typeof(child) != 'object') { child = document.getElementById(child); }
		parent.onmouseover = function() { child.style.display = "block"; }
		parent.onmouseout = function() { child.style.display = "none"; }
		navHandler.items[parent] = child;
	},
	init: function() {
		//navHandler._addItem('chooseLoc', 'topCitiesCityList');
		navHandler._addItem('addSomething', 'addSomethingSub');
		navHandler._addItem('placesToGo', 'placesSub');
		navHandler._addItem('familyResources', 'familySub');
	}
}


/* expandables{}
** *************
*/
var expandables = {
	vars: {
		beginCollapsed: true,
		expandableLimitOne: true,
		animate:false,
		headerTag: 'div',
		expandableTag: 'ul',
		objClassName: 'expandable',
		headerClassName: 'expandController',
		expandableClassName: 'expandChild'
	},
	
	init: function() {
		var sandbox = document.getElementsByTagName("*");
		for(var x=0; x<sandbox.length; x++) {
			if(sandbox[x].className != null && sandbox[x].className != "") {
				if(sandbox[x].className.match(expandables.vars.objClassName)) {
					sandboxB = sandbox[x].getElementsByTagName("*");
					var handler = null;
					for(var i=0; i<sandboxB.length; i++) {
						if(sandboxB[i].className.match(expandables.vars.headerClassName)) {
							handler = sandboxB[i];
						}
					}
					if(handler == null) {
						try {
							handler = sandbox[x].getElementsByTagName(expandables.vars.headerTag).item(0);
						} catch(err) {}
					}
					if(handler != null && handler != "") {
						handler.style.cursor = "pointer";
						handler.onmouseover = function() { expandables.highlight(this, true); };
						handler.onmouseout = function() { expandables.highlight(this, false); };
						if(handler.onclick) {
							var oldOnclick = handler.onclick;
							handler.onclick = function() {
								oldOnclick();
								expandables.toggle(this);
							}
						} else {
							handler.onclick = function() { expandables.toggle(this); };
						}
						if(expandables.vars.beginCollapsed == true) {
							sandboxC = handler.parentNode.getElementsByTagName("*");
							for(var j=0; j<sandboxC.length; j++) {
								if(sandboxC[j].className.match(expandables.vars.expandableClassName)) {
									sandboxC[j].style.display = "none";
								}
							}
							try {
								handler.parentNode.getElementsByTagName(expandables.vars.expandableTag).item(0).style.display = "none";
							} catch(err) {}
						}
					}
				}
			}
		}
	},
	
	collapseAll: function() {
		var sandbox = document.getElementsByTagName("*");
		for(var x=0; x<sandbox.length; x++) {
			if(sandbox[x].className != null && sandbox[x].className != "") {
				if(sandbox[x].className.match(expandables.vars.objClassName)) {
					sandboxB = sandbox[x].getElementsByTagName("*");
					var handler = null;
					for(var i=0; i<sandboxB.length; i++) {
						if(sandboxB[i].className.match(expandables.vars.headerClassName)) {
							handler = sandboxB[i];
							handler.className = handler.className.replace(/OnState/, "");
							sandboxC = handler.parentNode.getElementsByTagName("*");
							var handlerB = null;
							for(var j=0; j<sandboxC.length; j++) {
								if(sandboxC[j].className.match(expandables.vars.expandableClassName)) {
									handlerB = sandboxC[j];
									handlerB.style.display = "none";
								}
							}
							if(handlerB == null) {
								handler.parentNode.getElementsByTagName(expandables.vars.expandableTag).item(0).style.display = "none";
							}
						}
					}
					if(handler == null) {
						try {
							handler = sandbox[x].getElementsByTagName(expandables.vars.headerTag).item(0);
							if(handler != null && handler != "") {
								handler.className = handler.className.replace(/OnState/, "");
								handler.parentNode.getElementsByTagName(expandables.vars.expandableTag).item(0).style.display = "none";
							}
						} catch(err) {}
					}
				}
			}
		}
	},
	
	toggle: function(myObj) {
		var handler = null;
		var workingObj = null;
		var oldState;
		var sandbox = myObj.parentNode.getElementsByTagName("*");
		for(var x=0; x<sandbox.length; x++) {
			if(sandbox[x].className.match(expandables.vars.expandableClassName)) {
				workingObj = sandbox[x];
				oldState = workingObj.style.display;
			}
		}
		if(workingObj == null) {
			try {
				workingObj = myObj.parentNode.getElementsByTagName(expandables.vars.expandableTag).item(0);
				oldState = workingObj.style.display;
			} catch(err) {}
		}
		
		if(expandables.vars.expandableLimitOne == true) {
			expandables.collapseAll();
		}
		if(oldState == "none" || oldState == null) {
			workingObj.style.display = "block";
			myObj.className += " OnState";
		} else {
			myObj.className = myObj.className.replace(/OnState/, "");
			workingObj.style.display = "none";
		}
	},
	
	highlight: function(thisObj, highlighted) {
		if(thisObj.className) {
			constructClass = thisObj.className + " Hover";
		} else {
			constructClass = "Hover";
		}
		if(highlighted == true) {
			thisObj.className = constructClass;
		}
		if(highlighted == false) {
			thisObj.className = thisObj.className.replace(/Hover/, "");
		}
	}
}



/* cookieHandler{}
** ***************
** Peter-Paul Koch
** http://www.quirksmode.org
*/
var cookieHandler = {
	create: function(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	},
	
	read: function(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	},
	
	remove: function(name) {
		cookieHandler.create(name,"",-1);
	}
}


/* print_r()
** *********
** Michael White and Ben Bryan
** http://getsprink.com and http://kevin.vanzonneveld.net
*/
function print_r( array, return_val ) {    
    var output = "", pad_char = " ", pad_val = 4;
 
    var formatArray = function (obj, cur_depth, pad_val, pad_char) {
        if (cur_depth > 0) {
            cur_depth++;
        }
 
        var base_pad = repeat_char(pad_val*cur_depth, pad_char);
        var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
        var str = "";
 
        if (obj instanceof Array || obj instanceof Object) {
            str += "Array\n" + base_pad + "(\n";
            for (var key in obj) {
                if (obj[key] instanceof Array) {
                    str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char);
                } else {
                    str += thick_pad + "["+key+"] => " + obj[key] + "\n";
                }
            }
            str += base_pad + ")\n";
        } else if(obj == null || obj == undefined) {
            str = '';
        } else {
            str = obj.toString();
        }
 
        return str;
    };
 
    var repeat_char = function (len, pad_char) {
        var str = "";
        for(var i=0; i < len; i++) { 
            str += pad_char; 
        };
        return str;
    };
    output = formatArray(array, 0, pad_val, pad_char);
 
    if (return_val !== true) {
        document.write("<pre>" + output + "</pre>");
        return true;
    } else {
        return output;
    }
}


/* augment()
** *********
** Andre Lewis
** http://earthcode.com/blog/2006/01/optional_args.html
*/
function augment(oSelf, oOther) {
	if (oSelf == null) {
		oSelf = {};
	}
	for (var i = 1; i < arguments.length; i++) {
		var o = arguments[i];
		if (typeof(o) != 'undefined' && o != null) {
			for (var j in o) {
				oSelf[j] = o[j];
			}
		}
	}
	return oSelf;
}




/* prototyping collection
** **********************
*/

/* Array.exists() */
Array.prototype.exists = function (x) {
    for (var i=0; i<this.length; i++) {
        if (this[i] == x) return true;
    }
    return false;
}

/* String.normalize() */
String.prototype.normalize = function() {
	return this.toLowerCase().replace(/[^a-z]/g, "");
}

/* String.trim() */
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}


///* jQuery based onloader */
//$(document).ready(function() {
//	expandables.init();
//});

/* Preload loading graphic */
pic1 = new Image(16,16);
pic1.src="/images/ajax-loader.gif"; 


$(window).load(function() {

	/* global search functionality */
	$("#top-nav-search #searchterm").focus(function(){
		if($(this).val()=="search"){$(this).val("");}
	});
	$("#top-nav-search #searchterm").blur(function(){
		if($(this).val()==""){$(this).val("search");}
	});
	

})