/*
* Javascript implementations for WhatAMan 2008 website
* (c) Papercut Media. No reproduction without permission. Feel free to ask.
* Author: Patrick Pittman
* Date: October 2007
* Version: 1.0
* Requires: Prototype.js framework, ufo.js for flash loading, Dreamgirl on the other end for AJAXy JSON communication
*/


var Cookie = {
  set: function(name, value, daysToExpire) {
    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString();
    }
    return (document.cookie = escape(name) + '=' + escape(value || '') + expire);
  },
  get: function(name) {
//	alert(document.cookie.inspect());
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
    return (cookie ? unescape(cookie[2]) : null);
  },
  erase: function(name) {
    var cookie = Cookie.get(name) || true;
    Cookie.set(name, '', -1);
    return cookie;
  },
  accept: function() {
    if (typeof navigator.cookieEnabled == 'boolean') {
      return navigator.cookieEnabled;
    }
    Cookie.set('_test', '1');
    return (Cookie.erase('_test') === '1');
  }
};

function $RC(form, name) { 
        return $(form).getInputs('radio', name).find(function(radio) { 
                if (radio.checked) { 
                        return radio; 
                } 
        }); 
}


var labelFor = new Hash();
var siteBaseRel = '/';
var siteBaseUrl = 'http://www.propel.org.au/';

function $L(element) {
	$$('label').each ( function(label){
		if (label.getAttribute('for') == this.id) {
			labelFor.set(this.id,label); 
		}
	},element);
	return labelFor.get(element.id);
}



function Papercut() {
	this.loaderlock = false;
	this.baseHref = "http://www.propel.org.au/";
	this.ajaxBase = this.baseHref+"js/ajax/";
//	this.ajaxProgress = document.createElement('img');
//	this.ajaxProgress.src = this.baseHref+"images/icons/ajax-loader.gif";
	this.anchors = $H({});
}

Papercut.prototype.init = function(e) {

		Element.extend(document.body);

		fixIEPNG();
		this.setupSubForm();
		

		this.setupListBox();
		this.setupSearchBox();
		
		if (!document.location.href.match('login') && !document.body.hasClassName('editmode')) {

		}
		
	
}

Papercut.prototype.setupListBox = function() {
	
	if ($('MailingList_Email')) {
		var emailwords = "enter your email address";
		if ($('MailingList_Email').value=='') {
			$('MailingList_Email').value = emailwords;
		}
		$('MailingList_Email').observe('focus',function(e){
			if (this.value==emailwords) {
				this.value = '';
			}
		});
		$('MailingList_Email').observe('blur',function(e){
			if (this.value=='') {
				this.value = emailwords;
			}
		});		
	} 
}

Papercut.prototype.setupSearchBox = function() {
	
	if ($('searchKeywords')) {
		var emailwords = "enter keywords";
		if ($('searchKeywords').value=='') {
			$('searchKeywords').value = emailwords;
		}
		$('searchKeywords').observe('focus',function(e){
			if (this.value==emailwords) {
				this.value = '';
			}
		});
		$('searchKeywords').observe('blur',function(e){
			if (this.value=='') {
				this.value = emailwords;
			}
		});		
	} 
}

	
Papercut.prototype.setupSubForm = function() {
	form = $('Members');
	
	if (form) {

		$('Members_Donation').setValue(0);
		if (!$('ajaxContainer')) {
			this.progress = 
		   Builder.node('div',{
							id: 'ajaxContainer',
							display: 'none'
							},
							[
							Builder.node('h3',"Processing Membership"),
							Builder.node('img',{src: this.baseHref+"images/ajax-loader.gif",alt:"Request in Progress"})
							]
			);
			$('wrapper').appendChild(this.progress);
			$('ajaxContainer').hide();		

		}
		if (!$('finalTotal')) {
			var finalTotal = new Element('p', { 'class': 'finalTotal','id' : 'finalTotal' }).update("Total Amount to be charged is <strong>$<span>0</span></strong>");
			finalTotal.setStyle({'fontSize' : '25px',
			'padding' : '0',
			'margin' : '0'});
		
			$('Members_reset').up('div').insert(finalTotal,{'position': 'after'});
		}
		this.updateTotal();

		$('Members_Donation').observe('change',this.updateTotal);
		
		
		$('Members_Organisation').up('div').hide();
		this.setupRateBox('Members[RateID]');
		form.getInputs('radio', 'Members[RateID]').each(function(el) {
			el.observe('click',Papercut.onRateClick);
		});
	
		
		Element.observe(window,'load',function(e) {
			$('content').show();
			$('ajaxContainer').hide();		
		});
		
		Element.observe(window,'unload',function(e) {
			$('content').show();
			$('ajaxContainer').hide();		
		})
		
		
		form.observe('submit',Papercut.submitForm);
		form.observe('reset',Papercut.catchReset);
		$('Members_FirstName').focus();


		
	}

	
}


Papercut.prototype.catchReset = function(e) {
	
	if (confirm("Clear all information from this form?")) {
		new Effect.Highlight('Members');	
		Papercut.setupSubForm();
		$('Members').scrollTo();
	} else {
		Event.stop(e);
	}
}


Papercut.prototype.submitForm = function(e) {
	
	Event.stop(e);
	el = Event.element(e);
		validForm = wFORMS.behaviors['validation'].run($('Members'));
		if (validForm) {	

			rad = $RC('Members','Members[RateID]');

			if (rad) {

					selected = rad.getValue();
					if (selected == 5 || selected == 6 || selected == 7) {
						if (!$('Members_Organisation')) {
							alert("You must specify an organisation name with this membership type.");
							$('Members_Organisation').addClassName('errFld');
							$('Members_Organisation').scrollTo();
							$('Members_Organisation').focus();
							return false;
						}
					}
			}
			
			if (!rad && !$('currentRateForUpgrade')) {
				alert("You have not selected a Membership rate");
				new Effect.Highlight('Members_RateID');
				$('Members_RateID').addClassName('errFld');
				$('Members_RateID').scrollTo();
				return false;
			}
			if (parseInt($('finalTotal').down('span').innerHTML) == 0 && selected != 1) {
				
				alert("No donation or membership selected");
				new Effect.Highlight('Members_RateID');
				$('Members_RateID').addClassName('errFld');
				$('Members_RateID').scrollTo();
				return false;
			}
				checkCC = false;
			if (checkCC) {
				if (!dgValidateCC($('Members'),'Members',checkCC)) {
					return false;
				}
				expMonth= parseInt($F('credit_Members_expiry_month'));
				ExpiryDate = new Date($('credit_Members_expiry_year').getValue(),expMonth,0);
				Now = new Date();
				if (ExpiryDate < Now) {
					alert("That expiry date is in the past");
					
					$('credit_Members_expiry_month').up('div').addClassName('errFld');
					$('credit_Members_expiry_year').scrollTo();
					return false;
				}

			}
			
			
			$('content').hide();
			$('ajaxContainer').show();	
			el.submit();
		} else {
			firstErr = $$('.errFld').first();
			if (firstErr) {
				firstErr.focus();
				firstErr.scrollTo();
			}
		}
		return validForm;
}



function cleanupFP9IELeaks() {
  __flash_unloadHandler = function() {};
  __flash_savedUnloadHandler = function() {};
}

function fixIEPNG() {
	var version = parseFloat(navigator.appVersion.split('MSIE')[1]);

	if ((version >= 5.5) && (document.body.filters)) 
	{
	   for(var i=0; i < document.images.length; i++)
	   {
	      var img = document.images[i]
	      var imgName = img.src.toUpperCase()
	      if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
	      {
	         var imgID = (img.id) ? "id='" + img.id + "' " : ""
	         var imgClass = (img.className) ? "class='" + img.className + "' " : ""
	         var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
	         var imgStyle = "display:inline-block;" + img.style.cssText 
	         if (img.align == "left") imgStyle = "float:left;" + imgStyle
	         if (img.align == "right") imgStyle = "float:right;" + imgStyle
	         if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
	         var strNewHTML = "<span " + imgID + imgClass + imgTitle
	         + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
	         + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
	         + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
	         img.outerHTML = strNewHTML
	         i = i-1
	      }
	   }
	}
}

Papercut.prototype.setupCard = function(state) {
	if (state == 'on') {
		$('cardDetails').show();
		$('credit_Members_cardno').className = 'required';
		$('credit_Members_Name').className = 'required';
		new Effect.Highlight('cardDetails',{endcolor: "#eeeeee"});
	} else {
		$('cardDetails').hide();
		$('credit_Members_cardno').className = '';
		$('credit_Members_Name').className = '';
	}
}


Papercut.prototype.onCCClick = function(e) {
	el = Event.element(e).name;
	if ($RC('Members','Members[PaymentMethod]').value == 'CreditCard') {
		Papercut.setupCard('on');
	} else {
		Papercut.setupCard('off');			
	}

}

Papercut.prototype.updateTotal = function() {
	selRate = $RC('Members','Members[RateID]');
	if (selRate) {
		if (selRate.up('li').down('span')) { 
			rate = parseInt(selRate.up('li').down('span').innerHTML);		
		} else {
			rate = 0;
		}
	} else {
		rate = 0;
	}
	if ($('currentRateForUpgrade')) {
		rate = rate - parseInt($('currentRateForUpgrade').innerHTML);
	} else {
		selRate = $RC('Members','Members[RateID]');
		if (selRate) {
			if (selRate.up('li').down('span')) {
				rate = parseInt(selRate.up('li').down('span').innerHTML);						
			} else {
				rate = 0;
			}
		} else {
			rate = 0;
		}
		
	}
	if (rate < 0) {
		rate = 0;
	}
	donation = parseInt($F('Members_Donation'));
	if (donation) {
		total = rate + donation;
	} else {
		total = rate;
	}
	if (total < 0) {
		total = 0;
	}
	$('finalTotal').down('span').update(total);
	new Effect.Highlight($('finalTotal'));
}

Papercut.prototype.onRateClick = function(e) {
	Papercut.updateTotal();
	Papercut.setupRateBox(Event.element(e).name);
}

Papercut.prototype.setupRateBox = function (name) {
	rad = $RC('Members',name);
	
	if (rad) {
		selected = rad.getValue();
		if (selected == 5 || selected == 6 || selected == 7) {
				$('Members_Organisation').up('div').show();
				label = $L($('Members_Organisation'));
				if (label) {
					if (selected == 6) {
						label.update('Group Name');								
					} else {
						label.update('Organisation Name')
					}
				}
				$('Members_Organisation').addClassName('required');
				$('Members_DOB').up('fieldset').hide();
				new Effect.Highlight($('Members_Organisation').up('div'),{endcolor: "#eeeeee"});
				
		} else {
				$('Members_Organisation').up('div').hide();					
				$('Members_DOB').up('fieldset').show();

				$('Members_Organisation').removeClassName('required');
		}
	}
}

function initPapercut() {
	Papercut.init();
	if (window.setupZoom) {
		setupZoom();		
	}
	if (window.initPapercutGallery) {
		initPapercutGallery();
	}
}
var Papercut = new Papercut();
document.observe('dom:loaded',initPapercut);
