/** * De Form JavaScript functions worden gebruikt door de Form en FormElements PHP * classes. Deze functions geven de formulieren en de elementen hiervoor extra * functionaliteit. * * @author Roel Schut * @version 0.1.6 - 2009.01.26 * @package Form */ if(typeof(Form) == 'undefined') var Form = {}; Form.displayInfo = function($element, $styleClass) { /*if(!$element.toolTip) { // info tooltip en text div var $info = JSX.Element.create('div'); var $body = JSX.Element.create('div', $info); var $div1 = JSX.Element.create('div', $body); var $div2 = JSX.Element.create('div', $body); var $div3 = JSX.Element.create('div', $body); var $text = JSX.Element.create('div', $div3); $div1.className = 'div1'; $div2.className = 'div2'; $div3.className = 'div3'; $element.toolTip = $info; $info.toolTipText = $text; $text.className = 'text'; $info.className = 'mailformToolTip'; $body.className = 'body'; if($styleClass != '') { $body.className += ' '+ $styleClass; } $text.innerHTML = $element.title; $element.title = ''; $info.style.position = 'absolute'; $text.style.cursor = 'default'; JSX.Event.attach($element, 'onmouseout', function() { $info.style.display = 'none'; }); } var $info = $element.toolTip; var $text = $info.toolTipText; $info.style.display = 'block'; var $position = JSX.Element.getPosition($element); var $window = JSX.Browser.getSize(); $position.x += 15; var $w = $text.offsetWidth; var $h = $text.offsetHeight; if(($position.x + $w) > $window.width) $position.x = ($window.width - $w); if(($position.y + $h) > $window.height) $position.y = ($window.height - $h); $info.style.left = $position.x; $info.style.top = $position.y;*/ } /***************************************************************************************** * Verzend een formulier met de aangegeven naam. * * @param string $form De naam van het formulier dat moet worden verzonden * @return void */ Form.buttonSubmit = function($form) { document.forms[$form].submit(); }; /***************************************************************************************** * Deze functie gaat vanaf het element waarvan die wordt uitgevoerd, telkens naar de * parentNode op zoek naar het eerste element met de 'form' tag. Daarna zal op dat * element de submit() actie worden uitgevoerd om het formulier te verzenden. * * @param object $parent Het element waarvan de submit actie wordt uitgevoerd * @return void */ Form.buttonSubmitParent = function($parent) { do { $parent = $parent.parentNode; if($parent.tagName == undefined) break; var $tag = $parent.tagName.toLowerCase(); } while($tag != 'form') if($tag == 'form') $parent.submit(); }; /***************************************************************************************** * Vernieuwd een formulier met de aangegeven naam. * * @param string $form De naam van het formulier dat moet worden vernieuwt * @return void */ Form.buttonReset = function($form) { document.forms[$form].reset(); }; /***************************************************************************************** * Deze functie gaat vanaf het element waarvan die wordt uitgevoerd, telkens naar de * parentNode op zoek naar het eerste element met de 'form' tag. Daarna zal op dat * element de reset() actie worden uitgevoerd om het formulier te vernieuwen. * * @param object $parent Het element waarvan de reset actie wordt uitgevoerd * @return void */ Form.buttonResetParent = function($parent) { do { $parent = $parent.parentNode; if($parent.tagName == undefined) break; var $tag = $parent.tagName.toLowerCase(); } while($tag != 'form') if($tag == 'form') $parent.reset(); }; /***************************************************************************************** * Deze functie wordt toegevoegd met de addSelectInput() functie in de Form PHP class en * zorgt ervoor dat het dropdown select element, wanneer de laatste waarde wordt * geselecteerd, het input tekst element actief maakt. * * @param object $selectField Het select element die reageert op veranderingen * @param string $inputField Het tekst element dat moet worden geactiveerd * @param string $lastValue De waarde waarop het select element reageert * @return bool */ Form.selectInputChange = function($selectField, $inputField, $lastValue) { var $f = document.getElementById($inputField); var $l = ($selectField.options.length - 1); var $d = ($selectField.selectedIndex != $l); $f.disabled = $d; if(!$d) { if($f.value == $lastValue) $f.select(); else $f.focus(); } }; Form.groupInputActivate = function($selectField, $inputField, $lastValue) { var $f = document.getElementById($inputField); var $d = !$selectField.checked; $f.disabled = $d; if(!$d) { if($f.value == $lastValue) $f.select(); else $f.focus(); } }; Form.groupInputDisable = function($inputField) { document.getElementById($inputField).disabled = true; }; Form.selectValue = function($this, $value) { if($this.value == $value) $this.select(); }; Form.maxLength = function($this, $length) { var $value = $this.value; var $length = parseInt($length); if($value.length > $length) $this.value = $value.substr(0, $length); }; // zorgt ervoor dat $d het maximaal aantal dagen (van de // geselecteerde maand $m in jaar $y) als select options in zich krijgt Form.dateChange = function($y, $m, $d, $maxDate, $minDate) { // html elementen var $y = document.getElementById($y); var $m = document.getElementById($m); var $d = document.getElementById($d); var $i = 0; var $l = 31; // geselecteerde waardes var $dpY = $y.value; var $dpM = ($m.value-1); var $dpD = $d.value; var $dp = new Date($dpY, $dpM, $dpD, 0, 0, 0); // max waarde toewijzen if(typeof($maxDate) != 'undefined' && $dp.getTime() > $maxDate.getTime()) { $y.value = $maxDate.getFullYear(); $m.selectedIndex = $maxDate.getMonth(); } // min waarde toewijzen else if(typeof($minDate) != 'undefined' && $dp.getTime() < $minDate.getTime()) { $y.value = $minDate.getFullYear(); $m.selectedIndex = $minDate.getMonth(); } // zoek hoogste laatste dag van de maand do { var $ldm = new Date(); $ldm.setUTCMinutes(0, 0, 0); $ldm.setUTCDate($i); $ldm.setUTCFullYear($dpY, $dpM); $l = $ldm.getDate(); $i--; } while($ldm.getMonth() != $dpM); // huidige dagen lijst legen // en nieuwe dagen lijst maken $d.innerHTML = ''; for($i=1; $i<=$l; $i++) { var $option = document.createElement('option'); $option.setAttribute('value', $i); $option.innerHTML = $i; if($i == $dpD) $option.setAttribute('selected', 'selected'); $d.appendChild($option); } }; Form.openColorPicker = function($target) { if(!$target.colorPicker) { $target.colorPicker = new jsx.ColorPicker($target); } var $pos = JSX.Element.getPosition($target); $target.colorPicker.setPosition($pos.x, ($pos.y + $target.offsetHeight + 2)); $target.colorPicker.open(); };