// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

var site_prefix = '/home';

/* Helper methods to generate ajax request with authenticity token included */
var AJ = {
  encode_authenticity_token:function(token) {
    return encodeURIComponent($(token).value)
  },

  authenticity_token_query_parameter_for_page:function() {
  try {
    return 'authenticity_token=' + AJ.encode_authenticity_token(document.body.select('input[name="authenticity_token"]')[0]);
  } catch (err) {
    var auth_token = document.getElementsByName("authenticity_token")[0];
    return 'authenticity_token=' + AJ.encode_authenticity_token(auth_token);
  }
  },

  ajax_request:function(url, parameters) {
    //new Ajax.Request( site_prefix + url, {asynchronous:true, evalScripts:true, parameters:AJ.authenticity_token_query_parameter_for_page() + "&" + parameters})
    new Ajax.Request( url, {asynchronous:true, evalScripts:true, parameters:AJ.authenticity_token_query_parameter_for_page() + "&" + parameters})
  }
}


function showPleaseWait() {
  $('pleaseWaitDiv').show()
}
function hidePleaseWait() {
  $('pleaseWaitDiv').hide()
}

function setDisplayCurrency(path, currency_code) {
	AJ.ajax_request(path, "display_currency=" + currency_code, {method: 'post'} );
}

/* Check Character Key Input Helper method */
var cki_letters=' ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcçdefghijklmnñopqrstuvwxyzàáÀÁéèÈÉíìÍÌïÏóòÓÒúùÚÙüÜ'
var cki_numbers='1234567890'
var cki_signs=',.:;@-\''
var cki_mathsigns='+-=()*/'
var cki_custom='<>#$%&?¿'

function check_keyinput(e,allow) {
	var k;
	k=document.all?parseInt(e.keyCode): parseInt(e.which);
	return ((allow.indexOf(String.fromCharCode(k))!=-1) || k == 8);
}

function prepareInputsForHints() {
 $$('input,select,textarea').each(function(elem){
    var next = $(elem).next("div.hint");
    if (next != null)
    { 

      $(elem).observe('focus', function(){
      next.style.display = "inline";  
      });
      $(elem).observe('blur', function(){
      next.style.display = "none";  
      });
    } 
  })

}

/* Form Validation Helper methods */
function validate_minlength(field, minlength, alerttxt)
{
  with (field)
  {
    if (value==null||trim(value)=="")
    {
      alert(alerttxt);return false;
    }
	else if (value.length < minlength)
    {
      alert(alerttxt);return false;
    }
    else
    {
      return true;
    }
  }
}

function validate_maxlength(field, maxlength, alerttxt)
{
  with (field)
  {
    if (value.length > maxlength)
    {
      alert(alerttxt);return false;
    }
    else
    {
      return true;
    }
  }
}

function validate_required(field,alerttxt)
{
  with (field)
  {
    if (value==null||trim(value)=="")
    {
      alert(alerttxt);return false;
    }
    else
    {
      return true;
    }
  }
}

function validate_email(field,alerttxt)
{
  with (field)
  {
    apos=value.indexOf("@");
    dotpos=value.lastIndexOf(".");
    if (apos<1||dotpos-apos<2) 
        {alert(alerttxt);return false;}
    else
      {return true;}
  }
}

function validate_number(field,alerttxt, positive)
{
  with (field)
  {
    var trimmed = trim(value);
    if ( isNaN(trimmed)  || trimmed == '')
      {alert(alerttxt);return false;}
    else
    {
      if (positive)
        if (trimmed > 0)
          return true;
        else
          {alert(alerttxt);return false;}
      else
        return true;
    }
    
  }
}

function validate_currency(field,alerttxt, positive)
{
  with (field)
  {
    var trimmed = trim(value);
    var Chars = "0123456789.,$"; 
    for (var i = 0; i < trimmed.length; i++) 
    { 
      if (Chars.indexOf(trimmed.charAt(i)) == -1) 
        {alert(alerttxt);return false;}
    }
    if (positive)
      if (trimmed > 0)
        return true;
      else
        {alert(alerttxt);return false;}
    else
      return true;    
  }
  
  return true;
}
function create_date(date_string)
{
  var d1 = new Date(date_string);
  // d1.setFullYear(date_string.substring(0,4));
  // d1.setMonth(date_string.substring(5,7));
  // d1.setDate(date_string.substring(8,10));
  return d1;  
}

function validate_date_string(field,alerttxt)
{
  with (field)
  {        
    if (create_date(value) == 'Invalid Date')
      {alert(alerttxt);return false;}
    else
      {return true;}
  }
}

function validate_date_range(field1, field2, alerttxt)
{
  //var date1 = new Date(field1.value);
  //var date2 = new Date(field2.value);
  var date1 = create_date(field1.value);
  var date2 = create_date(field2.value);  
  if (date2 < date1)
    {alert(alerttxt);return false;}
  else
    {return true;}
    
}

function validate_credit_card(field, alerttxt)
{
  with (field)
  {
    s = value;
    // remove non-numerics
    var v = "0123456789";
    var w = "";
    for (i=0; i < s.length; i++) {
      x = s.charAt(i);
      if (v.indexOf(x,0) != -1)
      w += x;
    }

    // validate number
    j = w.length / 2;
    if (j < 6.5 || j > 8 || j == 7) {alert(alerttxt);return false;}
    k = Math.floor(j);
    m = Math.ceil(j) - k;
    c = 0;
    for (i=0; i<k; i++) {
      a = w.charAt(i*2+m) * 2;
      c += a > 9 ? Math.floor(a/10 + a%10) : a;
    }
    for (i=0; i<k+m; i++)
      c += w.charAt(i*2+1-m) * 1;
    if (c%10 != 0)
      {alert(alerttxt);return false;}
  }
  return true;
}

function validate_fields_match(field1,field2,alerttxt)
{
	if (field1.value != field2.value )
	{
		alert(alerttxt);return false;
	} else
		return true;

}

function format_currency(amount)
{
  var i = parseFloat(amount);
  if(isNaN(i)) {i = 0.00;}
  var minus = '';
  if(i < 0) {minus = '-';}
  i = Math.abs(i);
  i = parseInt((i + .005) * 100);
  i = i / 100;
  s = new String(i);
  if(s.indexOf('.') < 0) {s += '.00';}
  if(s.indexOf('.') == (s.length - 2)) {s += '0';}
  s = minus + s;
  return s;
}

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}


function get_radio_value(radiogroup)
{
  for (var i=0; i < radiogroup.length; i++)
  {
    if (radiogroup[i].checked)
    {
      return radiogroup[i].value;
    }
  }
}


function toggleSelectedItems(selAllCheckbox, formElement, checkbox_prefix)
{
  if (selAllCheckbox.checked == true) 
  {
    var i;
    for (i=0; i < formElement.elements.length; i++) 
    {
      if ((formElement.elements[i].type == 'checkbox') && 
        (formElement.elements[i].name.indexOf(checkbox_prefix) > -1)) 
      {
        formElement.elements[i].checked = true;
      }
    }
  
  } 
  else 
  {
    var i;
    for (i=0; i < formElement.elements.length; i++) 
    {
      if ( (formElement.elements[i].type == 'checkbox') && 
        (formElement.elements[i].name.indexOf(checkbox_prefix) > -1)) 
      {
        formElement.elements[i].checked = false;
      }
    }

  }
  
}

function calculateNumberDays(date_string1, date_string2, include_weekends, inclusive)
{
	if (include_weekends === undefined)
		include_weekends = false;
	if (inclusive === undefined)
		inclusive = true;

	var msPerDay = 1000 * 60 * 60 * 24;
	var d1 = create_date(date_string1);
	var d2 = create_date(date_string2);
	
	var diff = d2.getTime() - d1.getTime();

	var numberDays = (diff)/msPerDay + 1;


	if (!include_weekends) {
		// Iterate through all days, remove weekends
		var datePointer = d1;
		while (datePointer <= d2) {
			if (datePointer.getDay()==0 || datePointer.getDay()==6)
				numberDays--;
			datePointer.setDate(datePointer.getDate()+1);
		}
	}

	if (!inclusive)
		numberDays--;

	return numberDays;
}

function FBinit(options){
   // FB.init("APIKEY","xd_receiver.htm");
    try {
      FB.init(options['api_key'], options['channel_path'],
        null);
    } catch(err) {
      
    }
}

function validate_tell_friend_email_form(form)
{
	with (form)
	{
		if (validate_required(send_email_to_friends_email_to,"A recipient email is required")==false)
  			{send_email_to_friends_email_to.focus();return false;}
                if (validate_required(send_email_to_friends_recipient_name,"A recipient name is required")==false)
  			{send_email_to_friends_recipient_name.focus();return false;}

		if (validate_email(send_email_to_friends_email_to,"Please enter a valid email address")==false)
			{send_email_to_friends_email_to.focus();return false;}

                if (validate_required(send_email_to_friends_name_from,"A sender name is required")==false)
  			{send_email_to_friends_name_from.focus();return false;}

                if (validate_required(send_email_to_friends_email_from,"A sender email is required")==false)
  			{send_email_to_friends_email_from.focus();return false;}

		if (validate_email(send_email_to_friends_email_from,"Please enter a valid email address")==false)
			{send_email_to_friends_email_from.focus();return false;}


	}

	return true;

}

function toggleHostDescription( )
{
    $('lesshostinfo').toggle();
    $('morehostinfo').toggle()
}









