// detect and flag javascript support
function iCanHazJs() {
	var objBody = document.getElementsByTagName('body')[0];
	YAHOO.util.Dom.addClass(objBody,'js');
}
YAHOO.util.Event.onDOMReady(iCanHazJs);

// Find a clinic YUI
YAHOO.namespace('YAHOO.hmg.findaclinic');
YAHOO.hmg.findaclinic.init = function() {
    YAHOO.hmg.findaclinic.topNode = YAHOO.util.Dom.get('find-a-clinic');
    if (!YAHOO.hmg.findaclinic.topNode) {
    	return;
    }
    YAHOO.hmg.findaclinic.prepareForm();
    YAHOO.hmg.findaclinic.prepareLinks();
};
YAHOO.hmg.findaclinic.prepareForm = function() {
    YAHOO.hmg.findaclinic.form = YAHOO.hmg.findaclinic.topNode.getElementsByTagName('form')[0];
    if (!YAHOO.hmg.findaclinic.form) {
    	return;
    }
    YAHOO.util.Event.addListener(YAHOO.hmg.findaclinic.form, 'submit', YAHOO.hmg.findaclinic.handleSubmit);    
};
YAHOO.hmg.findaclinic.prepareLinks = function() {
    // Get the clinics list
    YAHOO.hmg.findaclinic.clinics = YAHOO.util.Dom.get('clinics');
    if (!YAHOO.hmg.findaclinic.clinics) {
    	return;
    }
    // Get the links
    YAHOO.hmg.findaclinic.links = YAHOO.hmg.findaclinic.clinics.getElementsByTagName("a");
    // Save array of divs containing clinic details
    YAHOO.hmg.findaclinic.clinics.divs = [];
    YAHOO.util.Dom.batch(YAHOO.hmg.findaclinic.links, function(el) {
        var cls = el.getAttribute('class') || el.className;
        var div = YAHOO.util.Dom.get(cls);
        if (!div) {
            return;
        }
        // Save this div
        YAHOO.hmg.findaclinic.clinics.divs.push(div);
        // Get the clinic id
        var regex = /clinic-(\d)/;
        var result = regex.exec(cls);
        var id = result && result[1];
        // If id > 1, then hide the corresponding div
        if (id && id > 1) {
            YAHOO.util.Dom.addClass(div, 'hide');
        }
        // Attach the listener
        YAHOO.util.Event.addListener(el, 'click', YAHOO.hmg.findaclinic.handleClick);
    });
};
YAHOO.hmg.findaclinic.handleClick = function(ev) {
    // Stop the event
    YAHOO.util.Event.stopEvent(ev);
    // Get the target element's class name
    var el = YAHOO.util.Event.getTarget(ev);
    var cls = el.getAttribute('class') || el.className;
    YAHOO.util.Dom.batch(YAHOO.hmg.findaclinic.clinics.divs, function(el) {
        var id = el.getAttribute('id') || el.id;
        if (id == cls) {
            // Show this div
            YAHOO.util.Dom.removeClass(el, 'hide');
        } else {
            // Hide this div
            YAHOO.util.Dom.addClass(el, 'hide');
        }
    });
};
YAHOO.hmg.findaclinic.handleSubmit = function(ev) {
    // Stop the event
    YAHOO.util.Event.stopEvent(ev);
    // Define callbacks
    var successHandler = function(o) {
        YAHOO.hmg.findaclinic.topNode.innerHTML = o.responseText;
        YAHOO.hmg.findaclinic.init();
    };
    var failureHandler = function(o) {
        alert('Sorry, something went wrong, please try again.');
        // [GU] [TO DO] 
        // replace prototype enable() method:
        //YAHOO.hmg.findaclinic.form.enable();
    };
    var callback = {
        success: successHandler,
        failure: failureHandler
    };
    // Prepare the request
    YAHOO.util.Connect.setForm(YAHOO.hmg.findaclinic.form);
    // Do request
    YAHOO.util.Connect.asyncRequest('POST', '/', callback, 'ajax_request=1');
   	// [GU] [TO DO] 
    // replace prototype disable() method:
   	// YAHOO.hmg.findaclinic.form.disable();
};
YAHOO.util.Event.onDOMReady(YAHOO.hmg.findaclinic.init);

function btnHover() {
	var items = YAHOO.util.Dom.getElementsByClassName('btn');
	var length = items.length;
	if( length > 0 ) {
		for ( var i=0; i < length; i++ ) {
		// [GU] [TO DO] Consider putting these functions in a closure.
			items[i].onmouseover = function() {
				YAHOO.util.Dom.addClass(this,'hover');
			};
			items[i].onmouseout = function() {
				YAHOO.util.Dom.removeClass(this,'hover');
			};
		}
	}
}
YAHOO.util.Event.onDOMReady(btnHover);

function homeTabs() {
	var items = YAHOO.util.Dom.getElementsByClassName('home-tab');
	var length = items.length;
	if( length > 0 ) {
		for ( var i=0; i < length; i++ ) {
		// [GU] [TO DO] Consider putting these functions in a closure.
			items[i].onmouseover = function() {
				var previousItem = YAHOO.util.Dom.getElementsByClassName('home-tab-selected')[0];
				YAHOO.util.Dom.removeClass(previousItem,'home-tab-selected');
				YAHOO.util.Dom.addClass(this,'home-tab-selected');
			};
		}
	}
}
YAHOO.util.Event.onDOMReady(homeTabs);