﻿var Culture_fa=
{
  AbbreviatedDayNames: new Array( 'ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج'),
  AbbreviatedMonthNames: new Array( 'فروردين', 'ارديبهشت', 'خرداد', 'تير', 'مرداد', 'شهريور', 'مهر', 'آبان', 'آذر', 'دي', 'بهمن', 'اسفند'),
  DayNames: new Array( 'شنبه', 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه'),
  MonthNames: new Array( 'فروردين', 'ارديبهشت', 'خرداد', 'تير', 'مرداد', 'شهريور', 'مهر', 'آبان', 'آذر', 'دي', 'بهمن', 'اسفند'),

  DateSeperator: '/',

  FullDateTimePattern: '[W] [d] [M] [y] [t]',
  LongDateTimePattern: '[d] [M] [y] [t]',
  ShortDateTimePattern: '[t] [d][/][m][/][y]',
  LongDatePattern: '[W] [d] [M] [y]',
  ShortDatePattern: '[d][/][m][/][y]',
  TimePattern: '[t]',
  MonthDayPattern: '[d] [M]',
  YearMonthPattern: '[AM] [y]',

  ParsePattern: function( pattern, year, month, day, time)
  {
    var result= Loco.Text.Replace( pattern, '[y]', year);
    result= Loco.Text.Replace( result, '[m]', month);
    result= Loco.Text.Replace( result, '[AM]', this.AbbreviatedMonthNames[ month- 1]);
    result= Loco.Text.Replace( result, '[M]', this.MonthNames[ month- 1]);
    result= Loco.Text.Replace( result, '[d]', day);
    result= Loco.Text.Replace( result, '[w]', this.Calendar.GetDayOfWeek( year, month, day));
    result= Loco.Text.Replace( result, '[AW]', this.AbbreviatedDayNames[ this.Calendar.GetDayOfWeek( year, month, day)- 1]);
    result= Loco.Text.Replace( result, '[W]', this.DayNames[ this.Calendar.GetDayOfWeek( year, month, day)- 1]);
    result= Loco.Text.Replace( result, '[e]', this.Calendar.GetDayEvent( year, month, day));
    result= Loco.Text.Replace( result, '[t]', time);
    result= Loco.Text.Replace( result, '[/]', this.DateSeperator);
    return result;
  },

  Calendar:
  {
    GetDayEvent: function( year, month, day)
    {
      if( year== 1385 && month== 10 && day== 24)
        return 'تولد امیر خان';
      return null;
    },
    GetDayOfWeek: function( year, month, day)
    {
	    var tWeek= 1, tDay= 1, tMonth= 1, tYear= 1383;
      var offset= 0;
      if( year>= tYear)
	      for( var i= tYear; i< year; i++)
		      offset+= this.IsLeapYear( i)? 366: 365;
      else
	      for( var i= tYear; i> year; i--)
		      offset-= this.IsLeapYear( i- 1)? 366: 365;

      for( var i= tMonth; i< month; i++)
        offset+= this.GetDaysInMonth( tYear, i);
      offset+= parseInt( day- tDay);

      return(((( offset+ tWeek- 1)% 7)+ 7)% 7)+ 1;
    },
    GetDaysInMonth: function( year, month)
    {
		  var MonthDays= new Array( 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);
		  if( month== 12 && this.IsLeapYear( year))
		    return MonthDays[ month- 1]+ 1;
		  return MonthDays[ month- 1];
    },
    IsLeapYear: function( year)
    {
		  var BreakYears= new Array( -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178);
      var len= BreakYears.length;
	    var i= 0;
	    while( i< len && year> BreakYears[ i])
	      i++;
	    return(((( year- BreakYears[ i- 1]+ 1)% 33)- 1)% 4== 0);
    }
  }
}
