if (!PB) var PB = {};

var alertPreferencesForm = Class.create(PB.Form,{
	initialize:function($super,element,options)
	{
    if($(element))
		$super(element,options);
	}
});

var mobileAlertPreferencesForm = Class.create(PB.Form,{
	initialize:function($super,element,options)
	{
    if($(element))
		$super(element,options);
	}
});

var changePasswordForm = Class.create(PB.Form,{
	initialize:function($super,element,options)
	{
    if($(element))
		$super(element,options);
	}
});

var userInfoForm = Class.create(PB.Form,{
	initialize:function($super,element,options)
	{
    if($(element))
		$super(element,options);
	}
});

var userProfileInfoForm = Class.create(PB.Form,{
	initialize:function($super,element,options)
	{
    if($(element))
		$super(element,options);
	}
});
var BusinessHoursForm = Class.create(PB.Form,{
	initialize:function($super,element,options)
	{
    if($(element))
		$super(element,options);
	},
  preSubmit:function()
  {
    error = false; 
    $$('.time').each(function(item)
    {
      if(!this.isValidHourFormat(item.value))
       error = true;
      else
        item.value = this.formatTime(item.value);
    }.bind(this));
    
    if(error)
    {
      window.growler.error('invalid time format ex. 12:00',{header:'Error.'});
      return false;
    }
    
    return true;
  },
  formatTime:function(time)
  {
      switch(time.gsub(':','').length)
			{
				case 1:
					return String(time.gsub(':','')) + ':00';
				break;
				case 2:
					return String(time.gsub(':','')) + ':00';
				break;
				case 3:
					return String(time.gsub(':','')[0]) + ':' + String(time.gsub(':','')[1]) + String(time.gsub(':','')[2]);
				break;
				case 4:
					return String(time.gsub(':','')[0]) + String(time.gsub(':','')[1]) + ':' + String(time.gsub(':','')[2]) + String(time.gsub(':','')[3]);
				break;
				default:
					return '';
			}
	},	  
  isValidHourFormat:function(doo_dad)
  {
    if(doo_dad.gsub(':','').length >4)
      return false;

    if(doo_dad.match(/[^\d:]/g))
      return false;
    
    return true;
  }
  
});
var TabPreferencesForm = Class.create(PB.Form,{
	initialize:function($super,element,options)
	{
    if($(element))
		$super(element,options);
	}
});
var MobileInfoForm = Class.create(PB.Form, {
	initialize: function($super, element, options) {
	    if ($(element)) {
			$super(element,options);
		}
	}
	,preSubmit: function() {
		$('sms_auth_key_area').show();
		return true;
	}
});
var InviterForm = Class.create(PB.Form,{
	initialize:function($super,element,options)
	{
    if($(element))
		$super(element,{onSubmit:this.preSubmit.bind(this)});
	}
});

var MobileAuthForm = Class.create(PB.Form,{
  initialize:function($super,element,options){
    if($(element))
      $super(element,options);
  }
});

var Inviter = Class.create({
	initialize:function()
	{
		$$('.inviter_email_icon').each(function(icon)
		{
			icon.observe('click', this.onEmailSelect.bindAsEventListener(this));
		}.bind(this));
		
		$$('.inviter_social_icon').each(function(icon)
		{
			icon.observe('click', this.onSocialSelect.bindAsEventListener(this));
		}.bind(this));
	},
	onEmailSelect:function(event)
	{
		$('email_step1').show();
		$('email_contact_list').hide();
		$('selected_email_service_image').update(event.element().cloneNode(true).removeClassName('inviter_service_image'));
		$('selected_email_service').value = event.element().readAttribute('id');
	},
	onSocialSelect:function(event)
	{
		$('social_step1').show();
		$('social_contact_list').hide();
		$('selected_social_service_image').update(event.element().cloneNode(true).removeClassName('inviter_service_image'));
		$('selected_social_service').value = event.element().readAttribute('id');
	}
});

function initAccountForms()
{
	PB.Forms.user_info_form = new userInfoForm('user_info_form');
	PB.Forms.change_password_form = new changePasswordForm('change_password_form');
	PB.Forms.mobile_alert_preferences_form = new mobileAlertPreferencesForm('mobile_alert_preferences_form');
	PB.Forms.alert_preferences_form = new alertPreferencesForm('alert_preferences_form');
	PB.Forms.user_profile_info_form = new userProfileInfoForm('user_profile_info_form');
  PB.Forms.business_hours_form = new BusinessHoursForm('business_hours_form');
  PB.Forms.mobile_settings_form = new MobileInfoForm('mobile_settings_form');
  PB.Forms.tab_preferences_form = new TabPreferencesForm('tab_preferences_form');
  PB.Forms.inviter_form = new InviterForm('inviter_form');
  PB.Forms.sms_auth_key_form = new MobileAuthForm('sms_auth_key_form');
	PB.Forms.emailInviterForm = new PB.Form('email_inviter_form');
	PB.Forms.socialInviterForm = new PB.Form('social_inviter_form');
  PB.Forms.emailInviterForm.onSuccess = 
  	function(response)
  	{
  		$('email_step1').hide();
  		$('email_contact_list').update(response.content);
  		$('email_contact_list').show();
  	}
  	
  PB.Forms.socialInviterForm.onSuccess = 
  	function(response)
  	{
  		$('social_contact_list').update(response.content);
  		$('social_step1').hide();
  		$('social_contact_list').show();
  	}
  	
  PB.Inviter = new Inviter();
}

PB.addToDomLoad('initAccountForms', '');

