/**
 * @author Jeff Lowder
 * ph: 0419 350 760
 */
var BP = function(){
    // private variables
    
    return {
				//make content a minimum height of 910px, and if the right column is longer than the content area then make the content area the same height as the right column + 100px
        minHeight: function(){
					if($('content').getHeight() < 910){
						$('content').style.height = '910px';
					}
					if($('right_col_content')){
						if($('right_col_content').getHeight() > $('content').getHeight()){
							$('content').style.height = ($('right_col_content').getHeight() + 50) + 'px';
						}
					}
				//console.log("height adjusted to" + $('content').style.height );
        },
        
        toggle: function(id){
            var open = ($(id).getStyle('display') == 'block') ? true : false;
            if(open == true){
                $(id).setStyle({
					display: 'none'
				});
            }
            else {
                $(id).setStyle({
					display: 'block'
				});
            }
        },
        
        toggleExtensible: function(id, link){
            var open = ($(id).getStyle('display') == 'block') ? true : false;
            if(open == true){
                $(id).setStyle({
					display: 'none'
				});
                $(link).removeClassName('open');
            }
            else {
                $(id).setStyle({
					display: 'block'
				});
                $(link).addClassName('open');
            }
        },
        
        toggleMoreInfo: function(link, id){
            var open = ($(id).getStyle('display') == 'block') ? true : false;
            if(open == true){
                $(id).setStyle({
					display: 'none'
				});
				$(link).innerHTML = 'more info';
				$(link).addClassName('closed');
            }
            else {
                $(id).setStyle({
					display: 'block'
				});
				$(link).removeClassName('closed');
				$(link).innerHTML = 'close info';
            }
        },
		
		doCheckAvailSelection: function(selection){
			this.cable = $('bb_type_cable');
			this.adsl = $('bb_type_adsl');
			this.wireless = $('bb_type_wireless');
			// show details fieldset
			if(this.cable.checked || this.adsl.checked){
				$('details').setStyle({
					display: 'block'
				});
				$('details_pc_only').setStyle({
					display: 'none'
				});
			}
			// show postcode only fieldset
			else if(this.wireless.checked && (this.cable.checked == false || this.adsl.checked == false)) {
				$('details_pc_only').setStyle({
					display: 'block'
				});
				$('details').setStyle({
					display: 'none'
				});
			}
			// hide both fieldsets
			else {
				$('details_pc_only').setStyle({
					display: 'none'
				});
				$('details').setStyle({
					display: 'none'
				});
			}
			if(selection.checked){
				// add the selection's value as a classname to #bb_types
				if($('bb_types').hasClassName(selection.value) == false){
					$('bb_types').addClassName(selection.value);
				}
			} else {
				// remove the selection's value/classname from #bb_types
				$('bb_types').removeClassName(selection.value);
			}
		},
		
		checkAvailFormValid: function(){
			this.valid = true;
			
			//reset all the form error classes
			$$('#ca_form .error').each(function(item){
				item.removeClassName('error');
			});
			// hide each of the error messages
			$('errors').setStyle({display: 'none'});
			$('err_txt_postcode').setStyle({position: 'absolute'});
			$('err_txt_postcode').setStyle({left: '-10000px'});
			$('err_txt_street_no').setStyle({position: 'absolute'});
			$('err_txt_street_no').setStyle({left: '-10000px'});
			$('err_txt_street_name').setStyle({position: 'absolute'});
			$('err_txt_street_name').setStyle({left: '-10000px'});
			$('err_street_type').setStyle({position: 'absolute'});
			$('err_street_type').setStyle({left: '-10000px'});
			$('err_txt_suburb').setStyle({position: 'absolute'});
			$('err_txt_suburb').setStyle({left: '-10000px'});
			
			if($('bb_type_cable').checked || $('bb_type_adsl').checked){
				// see if they're empty - if they are 
				if($F('txt_street_no') == ''){
					this.valid = false;
					$('err_txt_street_no').setStyle({position: 'relative'});
					$('err_txt_street_no').setStyle({left: '0'});
					$('txt_street_no_label').addClassName('error');
					$('txt_street_no').addClassName('error');
				}
				if($F('txt_street_name') == ''){
					this.valid = false;
					$('err_txt_street_name').setStyle({position: 'relative'});
					$('err_txt_street_name').setStyle({left: '0'});
					$('txt_street_name_label').addClassName('error');
					$('txt_street_name').addClassName('error');
				}
				if($F('street_type') == ''){
					this.valid = false;
					$('err_street_type').setStyle({position: 'relative'});
					$('err_street_type').setStyle({left: '0'});
					$('street_type_label').addClassName('error');
					$('street_type').addClassName('error');
				}
				if($F('txt_suburb') == ''){
					this.valid = false;
					$('err_txt_suburb').setStyle({position: 'relative'});
					$('err_txt_suburb').setStyle({left: '0'});
					$('txt_suburb_label').addClassName('error');
					$('txt_suburb').addClassName('error');
				}
			}
			// wireless form only needs to check postcode
			if($F('txt_postcode') == '' || BP.isDigits($F('txt_postcode')) == false){
				this.valid = false;
				$('err_txt_postcode').setStyle({position: 'relative'});
				$('err_txt_postcode').setStyle({left: '0'});
				$('txt_postcode_label').addClassName('error');
				$('txt_postcode').addClassName('error');
			}
			
			// show the error box message
			if(!this.valid){
				$('errors').setStyle({display: 'block'});
			}
			
			return this.valid;
		},
		
		isDigits: function(string){
			this.onlyDigits = true;
			this.re4digit = /^\d{4}$/;
			if(string.search(this.re4digit)==-1){
				this.onlyDigits = false;
			}
			return this.onlyDigits;
		},
		
		doCheckAvail: function(){
			if(BP.checkAvailFormValid()){
				//this.url = '/ajax_results.php';
				this.url = '/Bigpond/SecondLevel/ajax_results.php';	
				this.target = $('results');
				this.pars = $('ca_form').serialize();
				$('ajax-loading').removeClassName('hide');
				new Ajax.Updater(this.target, this.url, {
					method: 'get',
					parameters: this.pars,
					onComplete: function(){
						$('availability_results').setStyle({display: 'block'});
						$('content').style.height = 'auto';
						$('ajax-loading').addClassName('hide');
					}
				});
			}
		}
    }
}();

document.observe("dom:loaded", function() {
    BP.minHeight();
});

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};