<?php
// ------------------------------------------------------------------------- //
//                XOOPS - PHP Content Management System                      //
//                       <http://www.xoops.org/>                             //
// ------------------------------------------------------------------------- //
//  This program is free software; you can redistribute it and/or modify     //
//  it under the terms of the GNU General Public License as published by     //
//  the Free Software Foundation; either version 2 of the License, or        //
//  (at your option) any later version.                                      //
//                                                                           //
//  This program 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 General Public License for more details.                             //
//                                                                           //
//  You should have received a copy of the GNU General Public License        //
//  along with this program; if not, write to the Free Software              //
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
// ------------------------------------------------------------------------- //
// Author of File: 							     //
// Kazumi Ono (http://www.mywebaddons.com/ , http://www.myweb.ne.jp/)        //
// ------------------------------------------------------------------------- //
class XoopsFormSelect extends XoopsFormElement {

	// private
	var $options = array();

	// private
	var $multiple = false;

	// private
	var $size;

	// private
	// pre-selected values in array
	var $value = array();

	// public
	function XoopsFormSelect($caption, $name, $value="", $size=1, $multiple=false){
		$this->setCaption($caption);
		$this->setName($name);
		$this->multiple = $multiple;
		$this->size = intval($size);
		if ( $value != "" ) {
			if ( is_array($value) ) {
				foreach ( $value as $v ) {
					$this->value[] = $v;
				}
			} else {
				$this->value[] = $value;
			}
		}
	}

	// public
	function isMultiple(){
		return $this->multiple;
	}

	// public
	function getSize(){
		return $this->size;
	}

	// public
	function getValue(){
		return $this->value;
	}

	// public
	function addOption($value, $name=""){
		if ( $name != "" ) {
			$this->options[$value] = $name;
		} else {
			$this->options[$value] = $value;
		}
	}

	// public
	function addOptionArray($arr){
		if ( is_array($arr) ) {
			foreach ( $arr as $k=>$v ) {
				$this->addOption($k, $v);
			}
		}
	}

	// public
	function getOptions(){
		return $this->options;
	}

	// public
	function render(){
		$ret = "<select  size='".$this->getSize()."'".$this->getExtra()."";
		if ( $this->isMultiple() != false ) {
			$ret .= " name='".$this->getName()."[]' id='".$this->getName()."[]' multiple='multiple'>\n";
		} else {
			$ret .= " name='".$this->getName()."' id='".$this->getName()."'>\n";
		}
		foreach ( $this->getOptions() as $value => $name ) {
			$ret .= "<option value='".htmlspecialchars($value, ENT_QUOTES)."'";
			$count = count($this->getValue());
			if ( $count > 0 && in_array($value, $this->getValue()) ) {
					$ret .= " selected='selected'";
			}
			$ret .= ">".$name."</option>\n";
		}
		$ret .= "</select>";
		return $ret;
	}
}
?>