<?php
	/**************************************************************************\
	* phpGroupWare API - Select Box                                            *
	* This file written by Marc Logemann <loge@phpgroupware.org>               *
	* Class for creating predefines select boxes                               *
	* Copyright (C) 2000, 2001 Dan Kuykendall                                  *
	* -------------------------------------------------------------------------*
	* This library is part of the phpGroupWare API                             *
	* ------------------------------------------------------------------------ *
	* This library is free software; you can redistribute it and/or modify it  *
	* under the terms of the GNU Lesser General Public License as published by *
	* the Free Software Foundation; either version 2.1 of the License,         *
	* or any later version.                                                    *
	* This library is distributed in the hope that it will be useful, but      *
	* WITHOUT ANY WARRANTY; without even the implied warranty of               *
	* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     *
	* See the GNU Lesser General Public License for more details.              *
	* You should have received a copy of the GNU Lesser General Public License *
	* along with this library; if not, write to the Free Software Foundation,  *
	* Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA            *
	\**************************************************************************/
	/* $Id$ */

	class sbox
	{
		var $monthnames = array(
			'',
			'January',
			'February',
			'March',
			'April',
			'May',
			'June',
			'July',
			'August',
			'September',
			'October',
			'November',
			'December'
		);

		var $country_array = array(
			'AF'=>'AFGHANISTAN',
			'AL'=>'ALBANIA',
			'DZ'=>'ALGERIA', 
			'AS'=>'AMERICAN SAMOA', 
			'AD'=>'ANDORRA',
			'AO'=>'ANGOLA', 
			'AI'=>'ANGUILLA', 
			'AQ'=>'ANTARCTICA', 
			'AG'=>'ANTIGUA AND BARBUDA', 
			'AR'=>'ARGENTINA', 
			'AM'=>'ARMENIA', 
			'AW'=>'ARUBA', 
			'AU'=>'AUSTRALIA', 
			'AT'=>'AUSTRIA', 
			'AZ'=>'AZERBAIJAN', 
			'BS'=>'BAHAMAS', 
			'BH'=>'BAHRAIN', 
			'BD'=>'BANGLADESH', 
			'BB'=>'BARBADOS', 
			'BY'=>'BELARUS', 
			'BE'=>'BELGIUM', 
			'BZ'=>'BELIZE', 
			'BJ'=>'BENIN', 
			'BM'=>'BERMUDA', 
			'BT'=>'BHUTAN', 
			'BO'=>'BOLIVIA', 
			'BA'=>'BOSNIA AND HERZEGOVINA', 
			'BW'=>'BOTSWANA', 
			'BV'=>'BOUVET ISLAND', 
			'BR'=>'BRAZIL', 
			'IO'=>'BRITISH INDIAN OCEAN TERRITORY', 
			'BN'=>'BRUNEI DARUSSALAM', 
			'BG'=>'BULGARIA', 
			'BF'=>'BURKINA FASO', 
			'BI'=>'BURUNDI', 
			'KH'=>'CAMBODIA', 
			'CM'=>'CAMEROON', 
			'CA'=>'CANADA', 
			'CV'=>'CAPE VERDE', 
			'KY'=>'CAYMAN ISLANDS', 
			'CF'=>'CENTRAL AFRICAN REPUBLIC', 
			'TD'=>'CHAD', 
			'CL'=>'CHILE', 
			'CN'=>'CHINA', 
			'CX'=>'CHRISTMAS ISLAND', 
			'CC'=>'COCOS (KEELING) ISLANDS', 
			'CO'=>'COLOMBIA', 
			'KM'=>'COMOROS', 
			'CG'=>'CONGO', 
			'CD'=>'CONGO, THE DEMOCRATIC REPUBLIC OF THE', 
			'CK'=>'COOK ISLANDS', 
			'CR'=>'COSTA RICA', 
			'CI'=>'COTE D IVOIRE', 
			'HR'=>'CROATIA', 
			'CU'=>'CUBA', 
			'CY'=>'CYPRUS', 
			'CZ'=>'CZECH REPUBLIC', 
			'DK'=>'DENMARK', 
			'DJ'=>'DJIBOUTI', 
			'DM'=>'DOMINICA', 
			'DO'=>'DOMINICAN REPUBLIC', 
			'TP'=>'EAST TIMOR', 
			'EC'=>'ECUADOR', 
			'EG'=>'EGYPT', 
			'SV'=>'EL SALVADOR', 
			'GQ'=>'EQUATORIAL GUINEA', 
			'ER'=>'ERITREA', 
			'EE'=>'ESTONIA', 
			'ET'=>'ETHIOPIA', 
			'FK'=>'FALKLAND ISLANDS (MALVINAS)', 
			'FO'=>'FAROE ISLANDS', 
			'FJ'=>'FIJI', 
			'FI'=>'FINLAND', 
			'FR'=>'FRANCE', 
			'GF'=>'FRENCH GUIANA', 
			'PF'=>'FRENCH POLYNESIA', 
			'TF'=>'FRENCH SOUTHERN TERRITORIES', 
			'GA'=>'GABON', 
			'GM'=>'GAMBIA', 
			'GE'=>'GEORGIA', 
			'DE'=>'GERMANY', 
			'GH'=>'GHANA', 
			'GI'=>'GIBRALTAR', 
			'GR'=>'GREECE', 
			'GL'=>'GREENLAND', 
			'GD'=>'GRENADA', 
			'GP'=>'GUADELOUPE', 
			'GU'=>'GUAM', 
			'GT'=>'GUATEMALA', 
			'GN'=>'GUINEA', 
			'GW'=>'GUINEA-BISSAU', 
			'GY'=>'GUYANA', 
			'HT'=>'HAITI', 
			'HM'=>'HEARD ISLAND AND MCDONALD ISLANDS', 
			'VA'=>'HOLY SEE (VATICAN CITY STATE)', 
			'HN'=>'HONDURAS', 
			'HK'=>'HONG KONG', 
			'HU'=>'HUNGARY', 
			'IS'=>'ICELAND', 
			'IN'=>'INDIA', 
			'ID'=>'INDONESIA', 
			'IR'=>'IRAN, ISLAMIC REPUBLIC OF', 
			'IQ'=>'IRAQ', 
			'IE'=>'IRELAND', 
			'IL'=>'ISRAEL', 
			'IT'=>'ITALY', 
			'JM'=>'JAMAICA', 
			'JP'=>'JAPAN', 
			'JO'=>'JORDAN', 
			'KZ'=>'KAZAKSTAN', 
			'KE'=>'KENYA', 
			'KI'=>'KIRIBATI', 
			'KP'=>'KOREA, DEMOCRATIC PEOPLES REPUBLIC OF', 
			'KR'=>'KOREA, REPUBLIC OF', 
			'KW'=>'KUWAIT', 
			'KG'=>'KYRGYZSTAN', 
			'LA'=>'LAO PEOPLES DEMOCRATIC REPUBLIC', 
			'LV'=>'LATVIA', 
			'LB'=>'LEBANON', 
			'LS'=>'LESOTHO', 
			'LR'=>'LIBERIA', 
			'LY'=>'LIBYAN ARAB JAMAHIRIYA', 
			'LI'=>'LIECHTENSTEIN', 
			'LT'=>'LITHUANIA', 
			'LU'=>'LUXEMBOURG', 
			'MO'=>'MACAU', 
			'MK'=>'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF', 
			'MG'=>'MADAGASCAR', 
			'MW'=>'MALAWI', 
			'MY'=>'MALAYSIA', 
			'MV'=>'MALDIVES', 
			'ML'=>'MALI', 
			'MT'=>'MALTA', 
			'MH'=>'MARSHALL ISLANDS', 
			'MQ'=>'MARTINIQUE', 
			'MR'=>'MAURITANIA', 
			'MU'=>'MAURITIUS', 
			'YT'=>'MAYOTTE', 
			'MX'=>'MEXICO', 
			'FM'=>'MICRONESIA, FEDERATED STATES OF', 
			'MD'=>'MOLDOVA, REPUBLIC OF', 
			'MC'=>'MONACO', 
			'MN'=>'MONGOLIA', 
			'MS'=>'MONTSERRAT', 
			'MA'=>'MOROCCO', 
			'MZ'=>'MOZAMBIQUE', 
			'MM'=>'MYANMAR', 
			'NA'=>'NAMIBIA', 
			'NR'=>'NAURU', 
			'NP'=>'NEPAL', 
			'NL'=>'NETHERLANDS', 
			'AN'=>'NETHERLANDS ANTILLES', 
			'NC'=>'NEW CALEDONIA', 
			'NZ'=>'NEW ZEALAND', 
			'NI'=>'NICARAGUA', 
			'NE'=>'NIGER', 
			'NG'=>'NIGERIA', 
			'NU'=>'NIUE', 
			'NF'=>'NORFOLK ISLAND', 
			'MP'=>'NORTHERN MARIANA ISLANDS', 
			'NO'=>'NORWAY', 
			'OM'=>'OMAN', 
			'PK'=>'PAKISTAN', 
			'PW'=>'PALAU', 
			'PS'=>'PALESTINIAN TERRITORY, OCCUPIED', 
			'PA'=>'PANAMA', 
			'PG'=>'PAPUA NEW GUINEA', 
			'PY'=>'PARAGUAY', 
			'PE'=>'PERU', 
			'PH'=>'PHILIPPINES', 
			'PN'=>'PITCAIRN', 
			'PL'=>'POLAND', 
			'PT'=>'PORTUGAL', 
			'PR'=>'PUERTO RICO', 
			'QA'=>'QATAR', 
			'RE'=>'REUNION', 
			'RO'=>'ROMANIA', 
			'RU'=>'RUSSIAN FEDERATION', 
			'RW'=>'RWANDA', 
			'SH'=>'SAINT HELENA', 
			'KN'=>'SAINT KITTS AND NEVIS', 
			'LC'=>'SAINT LUCIA', 
			'PM'=>'SAINT PIERRE AND MIQUELON', 
			'VC'=>'SAINT VINCENT AND THE GRENADINES', 
			'WS'=>'SAMOA', 
			'SM'=>'SAN MARINO', 
			'ST'=>'SAO TOME AND PRINCIPE', 
			'SA'=>'SAUDI ARABIA', 
			'SN'=>'SENEGAL', 
			'SC'=>'SEYCHELLES', 
			'SL'=>'SIERRA LEONE', 
			'SG'=>'SINGAPORE', 
			'SK'=>'SLOVAKIA', 
			'SI'=>'SLOVENIA', 
			'SB'=>'SOLOMON ISLANDS', 
			'SO'=>'SOMALIA', 
			'ZA'=>'SOUTH AFRICA', 
			'GS'=>'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS', 
			'ES'=>'SPAIN', 
			'LK'=>'SRI LANKA', 
			'SD'=>'SUDAN', 
			'SR'=>'SURINAME', 
			'SJ'=>'SVALBARD AND JAN MAYEN', 
			'SZ'=>'SWAZILAND', 
			'SE'=>'SWEDEN', 
			'CH'=>'SWITZERLAND', 
			'SY'=>'SYRIAN ARAB REPUBLIC', 
			'TW'=>'TAIWAN, PROVINCE OF CHINA', 
			'TJ'=>'TAJIKISTAN', 
			'TZ'=>'TANZANIA, UNITED REPUBLIC OF', 
			'TH'=>'THAILAND', 
			'TG'=>'TOGO', 
			'TK'=>'TOKELAU', 
			'TO'=>'TONGA', 
			'TT'=>'TRINIDAD AND TOBAGO', 
			'TN'=>'TUNISIA', 
			'TR'=>'TURKEY', 
			'TM'=>'TURKMENISTAN', 
			'TC'=>'TURKS AND CAICOS ISLANDS', 
			'TV'=>'TUVALU', 
			'UG'=>'UGANDA', 
			'UA'=>'UKRAINE',
			'AE'=>'UNITED ARAB EMIRATES',
			'GB'=>'UNITED KINGDOM',
			'US'=>'UNITED STATES',
			'UM'=>'UNITED STATES MINOR OUTLYING ISLANDS',
			'UY'=>'URUGUAY',
			'UZ'=>'UZBEKISTAN',
			'VU'=>'VANUATU',
			'VE'=>'VENEZUELA',
			'VN'=>'VIET NAM',
			'VG'=>'VIRGIN ISLANDS, BRITISH',
			'VI'=>'VIRGIN ISLANDS, U.S.',
			'WF'=>'WALLIS AND FUTUNA',
			'EH'=>'WESTERN SAHARA',
			'YE'=>'YEMEN',
			'YU'=>'YUGOSLAVIA',
			'ZM'=>'ZAMBIA',
			'ZW'=>'ZIMBABWE'
		);

		var $weekdays = array(
			'',
			'Monday',
			'Tuesday',
			'Wednesday',
			'Thursday',
			'Friday',
			'Saturday',
			'Sunday'
		);

		function sbox()
		{
			foreach ($this->country_array as $key => $name)
			{
				$translated = lang($name);
				if ($translated != $name.'*')
				{
					$this->country_array[$key] = $translated;
				}
			}
			asort($this->country_array);
		}

		function hour_formated_text($name, $selected = 0)
		{
			$s = '<select name="' . $name . '">';
			$t_s[$selected] = ' selected';

			for ($i=0; $i<24; $i++)
			{
				$s .= '<option value="' . $i . '"' . $t_s[$i] . '>'
					. $GLOBALS['phpgw']->common->formattime($i+1,"00") . '</option>' . "\n";
			}
			$s .= "</select>";

			return $s;
		}

		function hour_text($name, $selected = 0)
		{
			$s = '<select name="' . $name . '">';
			$t_s[$selected] = " selected";
			for ($i=1; $i<13; $i++)
			{
				$s .= '<option value="' . $i . '"' . $t_s[$i] . '>'
					. $i . '</option>';
				$s .= "\n";
			}
			$s .= "</select>";

			return $s;
		}

		// I would like to add a increment feature
		function sec_minute_text($name, $selected = 0)
		{
			$s = '<select name="' . $name . '">';
			$t_s[$selected] = " selected";

			for ($i=0; $i<60; $i++)
			{
				$s .= '<option value="' . $i . '"' . $t_s[sprintf("%02d",$i)] . '>' . sprintf("%02d",$i) . '</option>';
				$s .= "\n";
			}
			$s .= "</select>";
			return $s;
		}

		function ap_text($name,$selected)
		{
			$selected = strtolower($selected);
			$t[$selected] = " selected";
			$s = '<select name="' . $name . '">'
				. ' <option value="am"' . $t['am'] . '>am</option>'
				. ' <option value="pm"' . $t['pm'] . '>pm</option>';
			$s .= '</select>';
			return $s;
		}

		function full_time($hour_name,$hour_selected,$min_name,$min_selected,$sec_name,$sec_selected,$ap_name,$ap_selected)
		{
			// This needs to be changed to support there time format preferences
			$s = $this->hour_text($hour_name,$hour_selected)
				. $this->sec_minute_text($min_name,$min_selected)
				. $this->sec_minute_text($sec_name,$sec_selected)
				. $this->ap_text($ap_name,$ap_selected);
			return $s;
		}

		function getWeekdays($name, $selected=0)
		{
			$out = '';
			for($i=0;$i<count($this->weekdays);$i++)
			{
				$out .= '<option value="'.$i.'"'.($selected!=$i?'':' selected').'>'.($this->weekdays[$i]!=''?lang($this->weekdays[$i]):'').'</option>'."\n";
			}
			return '<select name="'.$name.'">'."\n".$out.'</select>'."\n";
		}

		function nr2weekday($selected = 0)
		{
			for($i=0;$i<count($this->weekdays);$i++)
			{
				if ($selected > 0 && $selected == $i)
				{
					return lang($this->weekdays[$i]);
				}
			}
		}

		function getMonthText($name, $selected=0)
		{
			$out = '';
			$c_monthnames = count($this->monthnames);
			for($i=0;$i<$c_monthnames;$i++)
			{
				$out .= '<option value="'.$i.'"'.($selected!=$i?'':' selected').'>'.($this->monthnames[$i]!=''?lang($this->monthnames[$i]):'').'</option>'."\n";
			}
			return '<select name="'.$name.'">'."\n".$out.'</select>'."\n";
		}

		function getDays($name, $selected=0)
		{
			$out = '';

			for($i=0;$i<32;$i++)
			{
				$out .= '<option value="'.($i?$i:'').'"'.($selected!=$i?'':' selected').'>'.($i?$i:'').'</option>'."\n";
			}
			return '<select name="'.$name.'">'."\n".$out.'</select>'."\n";
		}

		function getYears($name, $selected = 0, $startYear = 0, $endyear = 0)
		{
			if (!$startYear)
			{
				$startYear = date('Y') - 5;
			}
			if ($selected && $startYear > $selected) $startYear = $selected;

			if (!$endyear)
			{
				$endyear = date('Y') + 6;
			}
			if ($selected && $endYear < $selected) $endYear = $selected;

			$out = '<select name="'.$name.'">'."\n";

			$out .= '<option value=""';
			if ($selected == 0 OR $selected == '')
			{
				$out .= ' SELECTED';
			}
			$out .= '></option>'."\n";

			// We need to add some good error checking here.
			for ($i=$startYear;$i<$endyear; $i++)
			{
				$out .= '<option value="'.$i.'"';
				if ($selected==$i)
				{
					$out .= ' SELECTED';
				}
				$out .= '>'.$i.'</option>'."\n";
			}
			$out .= '</select>'."\n";

			return $out;
		}

		function getPercentage($name, $selected=0)
		{
			$out = "<select name=\"$name\">\n";

			for($i=0;$i<101;$i=$i+10)
			{
				$out .= "<option value=\"$i\"";
				if($selected==$i)
				{
					$out .= " SELECTED";
				}
				$out .= ">$i%</option>\n";
			}
			$out .= "</select>\n";
			// echo $out;
			return $out;
		}

		function getPriority($name, $selected=2)
		{
			$arr = array('','low','normal','high');
			$out = '<select name="' . $name . '">';

			for($i=1;$i<count($arr);$i++)
			{
				$out .= "<option value=\"";
				$out .= $i;
				$out .= "\"";
				if ($selected==$i)
				{
					$out .= ' SELECTED';
				}
				$out .= ">";
				$out .= lang($arr[$i]);
				$out .= "</option>\n";
			}
			$out .= "</select>\n";
			return $out;
		}

		function getAccessList($name, $selected="private")
		{
			$arr = array(
				"private" => "Private",
				"public" => "Global public",
				"group" => "Group public"
			);

			if (ereg(",", $selected))
			{
				$selected = "group";
			}

			$out = "<select name=\"$name\">\n";

			for(reset($arr);current($arr);next($arr))
			{
				$out .= '<option value="' . key($arr) . '"';
				if($selected==key($arr))
				{
					$out .= " SELECTED";
				}
				$out .= ">" . pos($arr) . "</option>\n";
			}
			$out .= "</select>\n";
			return $out;
		}

		function getGroups($groups, $selected="", $name="n_groups[]")
		{
			$out = '<select name="' . $name . '" multiple>';
			while (list($null,$group) = each($groups))
			{
				$out .= '<option value="' . $group['account_id'] . '"';
				if (strtolower(gettype($selected)) == strtolower("array"))
				{
					for($i=0;$i<count($selected);$i++)
					{
						if ($group['account_id'] == $selected[$i])
						{
							$out .= " SELECTED";
							break;
						}
					}
				}
				elseif (ereg("," . $group['account_id'] . ",", $selected))
				{
					$out .= " SELECTED";
				}
				$out .= ">" . $group['account_name'] . "</option>\n";
			}
			$out .= "</select>\n";

			return $out;
		}

		function list_states($name, $selected = '')
		{
			$states = array(
				''		=> lang('Select one'),
				'--'	=> 'non US',
				'AL'	=>	'Alabama',
				'AK'	=>	'Alaska',
				'AZ'	=>	'Arizona',
				'AR'	=>	'Arkansas',
				'CA'	=>	'California',
				'CO'	=>	'Colorado',
				'CT'	=>	'Connecticut',
				'DE'	=>	'Delaware',
				'DC'	=>	'District of Columbia',
				'FL'	=>	'Florida',
				'GA'	=>	'Georgia',
				'HI'	=>	'Hawaii',
				'ID'	=>	'Idaho',
				'IL'	=>	'Illinois',
				'IN'	=>	'Indiana',
				'IA'	=>	'Iowa',
				'KS'	=>	'Kansas',
				'KY'	=>	'Kentucky',
				'LA'	=>	'Louisiana',
				'ME'	=>	'Maine',
				'MD'	=>	'Maryland',
				'MA'	=>	'Massachusetts',
				'MI'	=>	'Michigan',
				'MN'	=>	'Minnesota',
				'MO'	=>	'Missouri',
				'MS'	=>	'Mississippi',
				'MT'	=>	'Montana',
				'NC'	=>	'North Carolina',
				'ND'	=>	'Noth Dakota',
				'NE'	=>	'Nebraska',
				'NH'	=>	'New Hampshire',
				'NJ'	=>	'New Jersey',
				'NM'	=>	'New Mexico',
				'NV'	=>	'Nevada',
				'NY'	=>	'New York',
				'OH'	=>	'Ohio',
				'OK'	=>	'Oklahoma',
				'OR'	=>	'Oregon',
				'PA'	=>	'Pennsylvania',
				'RI'	=>	'Rhode Island',
				'SC'	=>	'South Carolina',
				'SD'	=>	'South Dakota',
				'TN'	=>	'Tennessee',
				'TX'	=>	'Texas',
				'UT'	=>	'Utah',
				'VA'	=>	'Virginia',
				'VT'	=>	'Vermont',
				'WA'	=>	'Washington',
				'WI'	=>	'Wisconsin',
				'WV'	=>	'West Virginia',
				'WY'	=>	'Wyoming'
			);

			while (list($sn,$ln) = each($states))
			{
				$s .= '<option value="' . $sn . '"';
				if ($selected == $sn)
				{
					$s .= ' selected';
				}
				$s .= '>' . $ln . '</option>';
			}
			return '<select name="' . $name . '">' . $s . '</select>';
		}

		function form_select($selected,$name='')
		{
			if($name=='')
			{
				$name = 'country';
			}
			$str = '<select name="'.$name.'">'."\n"
				. ' <option value="  "'.($selected == '  '?' selected':'').'>Select One</option>'."\n";
			reset($this->country_array);
			while(list($key,$value) = each($this->country_array))
			{
				$str .= ' <option value="'.$key.'"'.($selected == $key?' selected':'') . '>'.lang($value).'</option>'."\n";
			}
			$str .= '</select>'."\n";
			return $str;
		}

		function get_full_name($selected)
		{
			return($this->country_array[$selected]);
		}
	}
?>