/**
  * Append type-specific form elements to the base form
  *
  * @param object form
  * @param integer bannerId
  */
 function buildForm(&$form, &$bannerRow)
 {
     parent::buildForm($form, $bannerRow);
     $selectableCompanions = $this->getPossibleCompanions($bannerRow);
     // for some bizarre reason $bannerid is all the fields
     $bannerRow = $this->getExtendedBannerInfo($bannerRow);
     $isNewBanner = false;
     if (!isset($bannerRow['banner_vast_element_id'])) {
         $isNewBanner = true;
     }
     $header = $form->createElement('header', 'header_txt', "Create an Inline Video Ad (pre/mid/post-roll)");
     $header->setAttribute('icon', 'icon-banner-text.gif');
     $form->addElement($header);
     $form->addElement('hidden', 'ext_bannertype', $this->getComponentIdentifier());
     $this->addIntroductionInlineHelp($form);
     $this->addVastHardcodedDimensionsToForm($form, $bannerRow, VAST_INLINE_DIMENSIONS);
     $isVideoUploadSupported = false;
     if ($isVideoUploadSupported) {
         addUploadGroup($form, $row, array('uploadName' => 'uploadalt', 'radioName' => 'replacealtimage', 'imageName' => $altImageName, 'fileSize' => $altSize, 'fileName' => $row['alt_filename'], 'newLabel' => "select incomming video file", 'updateLabel' => "select replacement video file", 'handleSWF' => false));
     }
     $this->addVastParametersToForm($form, $bannerRow, $isNewBanner);
     $this->setElementIsRequired('vast_video_delivery', 'ext_bannertype', $this->getComponentIdentifier());
     $this->setElementIsRequired('vast_video_filename', 'ext_bannertype', $this->getComponentIdentifier());
     $this->setElementIsRequired('vast_video_type', 'ext_bannertype', $this->getComponentIdentifier());
     $this->setElementIsRequired('vast_video_duration', 'ext_bannertype', $this->getComponentIdentifier());
     $this->addThirdPartyImpressionTracking($form);
     $this->addVastCompanionsToForm($form, $selectableCompanions);
 }
 function addVastFileUploadGroup($form, $aBanner, $allowSwfFiles, $fileFieldName)
 {
     $imageName = null;
     $size = null;
     $filename = null;
     if ($fileFieldName == $aBanner['vast_overlay_format'] . '_upload') {
         $imageName = _getContentTypeIconImageName($aBanner['vast_creative_type']);
         $size = _getBannerSizeText($type, $aBanner['filename']);
         $filename = $aBanner['filename'];
     }
     if (!empty($aBanner['vast_overlay_width']) && !empty($aBanner['vast_overlay_height'])) {
         $form->addElement('hidden', 'vast_overlay_width', $aBanner['vast_overlay_width']);
         $form->addElement('hidden', 'vast_overlay_height', $aBanner['vast_overlay_height']);
     }
     addUploadGroup($form, $aBanner, array('uploadName' => $fileFieldName, 'radioName' => 'replaceimage', 'imageName' => $imageName, 'fileName' => $filename, 'fileSize' => $size, 'newLabel' => $GLOBALS['strNewBannerFile'], 'updateLabel' => $GLOBALS['strUploadOrKeep'], 'handleSWF' => $allowSwfFiles));
 }
function buildBannerForm($type, $aBanner, &$oComponent = null, $formDisabled = false)
{
    //-- Build forms
    $form = new OA_Admin_UI_Component_Form("bannerForm", "POST", $_SERVER['SCRIPT_NAME'], null, array("enctype" => "multipart/form-data"));
    $form->forceClientValidation(true);
    $form->addElement('hidden', 'clientid', $aBanner['clientid']);
    $form->addElement('hidden', 'campaignid', $aBanner['campaignid']);
    $form->addElement('hidden', 'bannerid', $aBanner['bannerid']);
    $form->addElement('hidden', 'type', $type);
    $form->addElement('hidden', 'status', $aBanner['status']);
    if ($type == 'sql' || $type == 'web') {
        $form->addElement('custom', 'banner-iab-note', null, null);
    }
    if ($aBanner['contenttype'] == 'swf' && empty($aBanner['alt_contenttype']) && empty($aBanner['alt_imageurl'])) {
        $form->addElement('custom', 'banner-backup-note', null, null);
    }
    $form->addElement('header', 'header_basic', $GLOBALS['strBasicInformation']);
    if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
        $form->addElement('text', 'description', $GLOBALS['strName']);
    } else {
        $form->addElement('static', 'description', $GLOBALS['strName'], $aBanner['description']);
    }
    //local banners
    if ($type == 'sql' || $type == 'web') {
        if ($type == 'sql') {
            $header = $form->createElement('header', 'header_sql', $GLOBALS['strMySQLBanner'] . " -  banner creative");
        } else {
            $header = $form->createElement('header', 'header_sql', $GLOBALS['strWebBanner'] . " -  banner creative");
        }
        $header->setAttribute('icon', 'icon-banner-stored.gif');
        $form->addElement($header);
        $imageName = _getContentTypeIconImageName($aBanner['contenttype']);
        $size = _getBannerSizeText($type, $aBanner['filename']);
        addUploadGroup($form, $aBanner, array('uploadName' => 'upload', 'radioName' => 'replaceimage', 'imageName' => $imageName, 'fileName' => $aBanner['filename'], 'fileSize' => $size, 'newLabel' => $GLOBALS['strNewBannerFile'], 'updateLabel' => $GLOBALS['strUploadOrKeep'], 'handleSWF' => true));
        $altImageName = null;
        $altSize = null;
        if ($aBanner['contenttype'] == 'swf') {
            $altImageName = _getContentTypeIconImageName($aBanner['alt_contenttype']);
            $altSize = _getBannerSizeText($type, $aBanner['alt_filename']);
        }
        $aUploadParams = array('uploadName' => 'uploadalt', 'radioName' => 'replacealtimage', 'imageName' => $altImageName, 'fileSize' => $altSize, 'fileName' => $aBanner['alt_filename'], 'newLabel' => $GLOBALS['strNewBannerFileAlt'], 'updateLabel' => $GLOBALS['strUploadOrKeep'], 'handleSWF' => false);
        if ($aBanner['contenttype'] != 'swf') {
            $aUploadParams = array_merge($aUploadParams, array('decorateId' => 'swfAlternative'));
        }
        addUploadGroup($form, $aBanner, $aUploadParams);
        $form->addElement('header', 'header_b_links', "Banner link");
        if (count($aBanner['hardcoded_links']) == 0) {
            $form->addElement('text', 'url', $GLOBALS['strURL']);
            $targetElem = $form->createElement('text', 'target', $GLOBALS['strTarget']);
            $targetElem->setAttribute('maxlength', '16');
            $form->addElement($targetElem);
        } else {
            foreach ($aBanner['hardcoded_links'] as $key => $val) {
                $link['text'] = $form->createElement('text', "alink[" . $key . "]", null);
                $link['text']->setAttribute("style", "width:330px");
                $link['radio'] = $form->createElement('radio', "alink_chosen", null, null, $key);
                $form->addGroup($link, 'url_group', $GLOBALS['strURL'], "", false);
                if (isset($aBanner['hardcoded_targets'][$key])) {
                    $targetElem = $form->createElement('text', "atar[" . $key . "]", $GLOBALS['strTarget']);
                    $targetElem->setAttribute('maxlength', '16');
                    $form->addElement($targetElem);
                }
                if (count($aBanner['hardcoded_links']) > 1) {
                    $form->addElement('text', "asource[" . $key . "]", $GLOBALS['strOverwriteSource']);
                }
            }
            $form->addElement('hidden', 'url', $aBanner['url']);
        }
        $form->addElement('header', 'header_b_display', 'Banner display');
        $form->addElement('text', 'alt', $GLOBALS['strAlt']);
        $form->addElement('text', 'statustext', $GLOBALS['strStatusText']);
        $form->addElement('text', 'bannertext', $GLOBALS['strTextBelow']);
        if (!empty($aBanner['bannerid'])) {
            $sizeG['width'] = $form->createElement('text', 'width', $GLOBALS['strWidth'] . ":");
            $sizeG['width']->setAttribute('onChange', 'oa_sizeChangeUpdateMessage("warning_change_banner_size");');
            $sizeG['width']->setSize(5);
            $sizeG['height'] = $form->createElement('text', 'height', $GLOBALS['strHeight'] . ":");
            $sizeG['height']->setAttribute('onChange', 'oa_sizeChangeUpdateMessage("warning_change_banner_size");');
            $sizeG['height']->setSize(5);
            $form->addGroup($sizeG, 'size', $GLOBALS['strSize'], " ", false);
            //validation rules
            $translation = new OX_Translation();
            $widthRequiredRule = array($translation->translate($GLOBALS['strXRequiredField'], array($GLOBALS['strWidth'])), 'required');
            $widthPositiveRule = array($translation->translate($GLOBALS['strXGreaterThanZeroField'], array($GLOBALS['strWidth'])), 'min', 1);
            $heightRequiredRule = array($translation->translate($GLOBALS['strXRequiredField'], array($GLOBALS['strHeight'])), 'required');
            $heightPositiveRule = array($translation->translate($GLOBALS['strXGreaterThanZeroField'], array($GLOBALS['strHeight'])), 'min', 1);
            $numericRule = array($GLOBALS['strNumericField'], 'numeric');
            $form->addGroupRule('size', array('width' => array($widthRequiredRule, $numericRule, $widthPositiveRule), 'height' => array($heightRequiredRule, $numericRule, $heightPositiveRule)));
        }
        if (!isset($aBanner['contenttype']) || $aBanner['contenttype'] == 'swf') {
            $form->addElement('checkbox', 'transparent', $GLOBALS['strSwfTransparency'], $GLOBALS['strSwfTransparency']);
        }
        //TODO $form->addRule("size", 'Please enter a number', 'numeric'); //this should make all fields in group size are numeric
    }
    //external banners
    if ($type == "url") {
        $header = $form->createElement('header', 'header_txt', $GLOBALS['strURLBanner']);
        $header->setAttribute('icon', 'icon-banner-url.gif');
        $form->addElement($header);
        $form->addElement('text', 'imageurl', $GLOBALS['strNewBannerURL']);
        if ($aBanner['contenttype'] == 'swf') {
            $altImageName = _getContentTypeIconImageName($aBanner['alt_contenttype']);
            $altSize = _getBannerSizeText($type, $aBanner['alt_filename']);
            $form->addElement('text', 'alt_imageurl', $GLOBALS['strNewBannerFileAlt']);
        }
        $form->addElement('header', 'header_b_links', "Banner link");
        $form->addElement('text', 'url', $GLOBALS['strURL']);
        $targetElem = $form->createElement('text', 'target', $GLOBALS['strTarget']);
        $targetElem->setAttribute('maxlength', '16');
        $form->addElement($targetElem);
        $form->addElement('header', 'header_b_display', 'Banner display');
        $form->addElement('text', 'alt', $GLOBALS['strAlt']);
        $form->addElement('text', 'statustext', $GLOBALS['strStatusText']);
        $form->addElement('text', 'bannertext', $GLOBALS['strTextBelow']);
        $sizeG['width'] = $form->createElement('text', 'width', $GLOBALS['strWidth'] . ":");
        $sizeG['width']->setAttribute('onChange', 'oa_sizeChangeUpdateMessage("warning_change_banner_size");');
        $sizeG['width']->setSize(5);
        $sizeG['height'] = $form->createElement('text', 'height', $GLOBALS['strHeight'] . ":");
        $sizeG['height']->setAttribute('onChange', 'oa_sizeChangeUpdateMessage("warning_change_banner_size");');
        $sizeG['height']->setSize(5);
        $form->addGroup($sizeG, 'size', $GLOBALS['strSize'], " ", false);
        if (!isset($aBanner['contenttype']) || $aBanner['contenttype'] == 'swf') {
            $form->addElement('checkbox', 'transparent', $GLOBALS['strSwfTransparency'], $GLOBALS['strSwfTransparency']);
        }
        //validation rules
        $translation = new OX_Translation();
        $widthRequiredRule = array($translation->translate($GLOBALS['strXRequiredField'], array($GLOBALS['strWidth'])), 'required');
        $widthPositiveRule = array($translation->translate($GLOBALS['strXGreaterThanZeroField'], array($GLOBALS['strWidth'])), 'min', 1);
        $heightRequiredRule = array($translation->translate($GLOBALS['strXRequiredField'], array($GLOBALS['strHeight'])), 'required');
        $heightPositiveRule = array($translation->translate($GLOBALS['strXGreaterThanZeroField'], array($GLOBALS['strHeight'])), 'min', 1);
        $numericRule = array($GLOBALS['strNumericField'], 'numeric');
        $form->addGroupRule('size', array('width' => array($widthRequiredRule, $numericRule, $widthPositiveRule), 'height' => array($heightRequiredRule, $numericRule, $heightPositiveRule)));
    }
    //html & text banners
    if ($oComponent) {
        $oComponent->buildForm($form, $aBanner);
    }
    $translation = new OX_Translation();
    //common for all banners
    if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
        $form->addElement('header', 'header_additional', "Additional data");
        $form->addElement('text', 'keyword', $GLOBALS['strKeyword']);
        $weightElem = $form->createElement('text', 'weight', $GLOBALS['strWeight']);
        $weightElem->setSize(6);
        $form->addElement($weightElem);
        $form->addElement('textarea', 'comments', $GLOBALS['strComments']);
        $weightPositiveRule = $translation->translate($GLOBALS['strXPositiveWholeNumberField'], array($GLOBALS['strWeight']));
        $form->addRule('weight', $weightPositiveRule, 'numeric');
    }
    //we want submit to be the last element in its own separate section
    $form->addElement('controls', 'form-controls');
    $form->addElement('submit', 'submit', 'Save changes');
    //validation rules
    if (OA_Permission::isAccount(OA_ACCOUNT_ADMIN) || OA_Permission::isAccount(OA_ACCOUNT_MANAGER)) {
        $urlRequiredMsg = $translation->translate($GLOBALS['strXRequiredField'], array($GLOBALS['strName']));
        $form->addRule('description', $urlRequiredMsg, 'required');
    }
    //set banner values
    $form->setDefaults($aBanner);
    foreach ($aBanner['hardcoded_links'] as $key => $val) {
        $swfLinks["alink[" . $key . "]"] = phpAds_htmlQuotes($val);
        if ($val == $aBanner['url']) {
            $swfLinks['alink_chosen'] = $key;
        }
        if (isset($aBanner['hardcoded_targets'][$key])) {
            $swfLinks["atar[" . $key . "]"] = phpAds_htmlQuotes($aBanner['hardcoded_targets'][$key]);
        }
        if (count($aBanner['hardcoded_links']) > 1) {
            $swfLinks["asource[" . $key . "]"] = phpAds_htmlQuotes($aBanner['hardcoded_sources'][$key]);
        }
    }
    $form->setDefaults($swfLinks);
    if ($formDisabled) {
        $form->freeze();
    }
    return $form;
}