private function putCreativeLayer(BannerSlide $slide)
    {
        $layers = $slide->getLayers();
        if (empty($layers)) {
            return false;
        }
        ?>
				<?php 
        foreach ($layers as $layer) {
            $type = UniteFunctionsBanner::getVal($layer, "type", "text");
            //Set if video full screen
            $isFullWidthVideo = false;
            if ($type == "video") {
                $videoData = UniteFunctionsBanner::getVal($layer, "video_data");
                if (!empty($videoData)) {
                    $videoData = (array) $videoData;
                    $isFullWidthVideo = UniteFunctionsBanner::getVal($videoData, "fullwidth");
                    $isFullWidthVideo = UniteFunctionsBanner::strToBool($isFullWidthVideo);
                } else {
                    $videoData = array();
                }
            }
            $class = UniteFunctionsBanner::getVal($layer, "style");
            $animation = UniteFunctionsBanner::getVal($layer, "animation", "fade");
            //Set output class
            $outputClass = "caption " . trim($class);
            $outputClass = trim($outputClass) . " ";
            $outputClass .= trim($animation);
            $left = UniteFunctionsBanner::getVal($layer, "left", 0);
            $top = UniteFunctionsBanner::getVal($layer, "top", 0);
            $speed = UniteFunctionsBanner::getVal($layer, "speed", 300);
            $time = UniteFunctionsBanner::getVal($layer, "time", 0);
            $easing = UniteFunctionsBanner::getVal($layer, "easing", "easeOutExpo");
            $randomRotate = UniteFunctionsBanner::getVal($layer, "random_rotation", "false");
            $randomRotate = UniteFunctionsBanner::boolToStr($randomRotate);
            $text = UniteFunctionsBanner::getVal($layer, "text");
            $htmlVideoAutoplay = "";
            $htmlVideoNextSlide = "";
            //Set html
            $html = "";
            switch ($type) {
                default:
                case "text":
                    $html = $text;
                    $html = do_shortcode($html);
                    break;
                case "image":
                    $urlImage = UniteFunctionsBanner::getVal($layer, "image_url");
                    $html = '<img src="' . $urlImage . '" alt="' . $text . '">';
                    $imageLink = UniteFunctionsBanner::getVal($layer, "link", "");
                    if (!empty($imageLink)) {
                        $openIn = UniteFunctionsBanner::getVal($layer, "link_open_in", "same");
                        $target = "";
                        if ($openIn == "new") {
                            $target = ' target="_blank"';
                        }
                        $html = '<a href="' . $imageLink . '"' . $target . '>' . $html . '</a>';
                    }
                    break;
                case "video":
                    $videoType = trim(UniteFunctionsBanner::getVal($layer, "video_type"));
                    $videoID = trim(UniteFunctionsBanner::getVal($layer, "video_id"));
                    $videoWidth = trim(UniteFunctionsBanner::getVal($layer, "video_width"));
                    $videoHeight = trim(UniteFunctionsBanner::getVal($layer, "video_height"));
                    $videoArgs = trim(UniteFunctionsBanner::getVal($layer, "video_args"));
                    if ($isFullWidthVideo == true) {
                        $videoWidth = "100%";
                        $videoHeight = "100%";
                    }
                    $setBase = is_ssl() ? "https://" : "http://";
                    switch ($videoType) {
                        case "youtube":
                            if (empty($videoArgs)) {
                                $videoArgs = GlobalsBannerRotator::DEFAULT_YOUTUBE_ARGUMENTS;
                            }
                            $videoArgs .= ';origin=' . $setBase . $_SERVER['SERVER_NAME'] . ';';
                            $html = "<iframe src='http://www.youtube.com/embed/{$videoID}?{$videoArgs}' width='{$videoWidth}' height='{$videoHeight}' style='width:{$videoWidth}px;height:{$videoHeight}px;'></iframe>";
                            break;
                        case "vimeo":
                            if (empty($videoArgs)) {
                                $videoArgs = GlobalsBannerRotator::DEFAULT_VIMEO_ARGUMENTS;
                            }
                            $html = "<iframe src='http://player.vimeo.com/video/{$videoID}?{$videoArgs}' width='{$videoWidth}' height='{$videoHeight}' style='width:{$videoWidth}px;height:{$videoHeight}px;'></iframe>";
                            break;
                        case "html5":
                            $html = $this->getHtml5LayerHtml($videoData);
                            break;
                        default:
                            UniteFunctionsBanner::throwError("wrong video type: {$videoType}");
                            break;
                    }
                    //Set video autoplay, with backward compatability
                    if (array_key_exists("autoplay", $videoData)) {
                        $videoAutoplay = UniteFunctionsBanner::getVal($videoData, "autoplay");
                    } else {
                        //Backward compatability
                        $videoAutoplay = UniteFunctionsBanner::getVal($layer, "video_autoplay");
                    }
                    $videoAutoplay = UniteFunctionsBanner::strToBool($videoAutoplay);
                    if ($videoAutoplay == true) {
                        $htmlVideoAutoplay = ' data-autoplay="true"';
                    }
                    $videoNextSlide = UniteFunctionsBanner::getVal($videoData, "nextslide");
                    $videoNextSlide = UniteFunctionsBanner::strToBool($videoNextSlide);
                    if ($videoNextSlide == true) {
                        $htmlVideoNextSlide = ' data-nextslideatend="true"';
                    }
                    break;
            }
            //Handle end transitions
            $endTime = trim(UniteFunctionsBanner::getVal($layer, "endtime"));
            $htmlEnd = "";
            if (!empty($endTime)) {
                $htmlEnd = "data-end=\"{$endTime}\"";
                $endSpeed = trim(UniteFunctionsBanner::getVal($layer, "endspeed"));
                if (!empty($endSpeed)) {
                    $htmlEnd .= " data-endspeed=\"{$endSpeed}\"";
                }
                $endEasing = trim(UniteFunctionsBanner::getVal($layer, "endeasing"));
                if (!empty($endSpeed) && $endEasing != "nothing") {
                    $htmlEnd .= " data-endeasing=\"{$endEasing}\"";
                }
                //Add animation to class
                $endAnimation = trim(UniteFunctionsBanner::getVal($layer, "endanimation"));
                if (!empty($endAnimation) && $endAnimation != "auto") {
                    $outputClass .= " " . $endAnimation;
                }
            }
            //Slide link
            $htmlLink = "";
            $slideLink = UniteFunctionsBanner::getVal($layer, "link_slide");
            if (!empty($slideLink) && $slideLink != "nothing" && $slideLink != "scroll_under") {
                //Get slide index from id
                if (is_numeric($slideLink)) {
                    $slideLink = UniteFunctionsBanner::getVal($this->slidesNumIndex, $slideLink);
                }
                if (!empty($slideLink)) {
                    $htmlLink = " data-linktoslide=\"{$slideLink}\"";
                }
            }
            //Scroll under the slider
            if ($slideLink == "scroll_under") {
                $outputClass .= " fb-scrollbelowslider";
                $scrollUnderOffset = UniteFunctionsBanner::getVal($layer, "scrollunder_offset");
                if (!empty($scrollUnderOffset)) {
                    $htmlLink .= " data-scrolloffset=\"{$scrollUnderOffset}\"";
                }
            }
            //Hidden under resolution
            $htmlHidden = "";
            $layerHidden = UniteFunctionsBanner::getVal($layer, "hiddenunder");
            if ($layerHidden == "true" || $layerHidden == "1") {
                $htmlHidden = ' data-captionhidden="on"';
            }
            $htmlParams = $htmlEnd . $htmlLink . $htmlVideoAutoplay . $htmlVideoNextSlide . $htmlHidden;
            //Set positioning options
            $alignHor = UniteFunctionsBanner::getVal($layer, "align_hor", "left");
            $alignVert = UniteFunctionsBanner::getVal($layer, "align_vert", "top");
            $htmlPosX = "";
            $htmlPosY = "";
            switch ($alignHor) {
                default:
                case "left":
                    $htmlPosX = "data-x=\"{$left}\" \n";
                    break;
                case "center":
                    $htmlPosX = "data-x=\"center\" data-hoffset=\"{$left}\" \n";
                    break;
                case "right":
                    $left = (int) $left * -1;
                    $htmlPosX = "data-x=\"right\" data-hoffset=\"{$left}\" \n";
                    break;
            }
            switch ($alignVert) {
                default:
                case "top":
                    $htmlPosY = "data-y=\"{$top}\" ";
                    break;
                case "middle":
                    $htmlPosY = "data-y=\"center\" data-voffset=\"{$top}\" ";
                    break;
                case "bottom":
                    $top = (int) $top * -1;
                    $htmlPosY = "data-y=\"bottom\" data-voffset=\"{$top}\" ";
                    break;
            }
            //Set corners
            $htmlCorners = "";
            if ($type == "text") {
                $cornerLeft = UniteFunctionsBanner::getVal($layer, "corner_left");
                $cornerRight = UniteFunctionsBanner::getVal($layer, "corner_right");
                switch ($cornerLeft) {
                    case "curved":
                        $htmlCorners .= "<div class='frontcorner'></div>";
                        break;
                    case "reverced":
                        $htmlCorners .= "<div class='frontcornertop'></div>";
                        break;
                }
                switch ($cornerRight) {
                    case "curved":
                        $htmlCorners .= "<div class='backcorner'></div>";
                        break;
                    case "reverced":
                        $htmlCorners .= "<div class='backcornertop'></div>";
                        break;
                }
                //Add resizeme class
                $resizeme = UniteFunctionsBanner::getVal($layer, "resizeme");
                if ($resizeme == "true" || $resizeme == "1") {
                    $outputClass .= ' fb-resizeme';
                }
            }
            //Make some modifications for the full screen video
            if ($isFullWidthVideo == true) {
                $htmlPosX = "data-x=\"0\"" . "\n";
                $htmlPosY = "data-y=\"0\"" . "\n";
                $outputClass .= " fullscreenvideo";
            }
            ?>
				<div class="<?php 
            echo $outputClass;
            ?>
"
					 <?php 
            echo $htmlPosX;
            ?>
					 <?php 
            echo $htmlPosY;
            ?>
					 data-speed="<?php 
            echo $speed;
            ?>
" 
					 data-start="<?php 
            echo $time;
            ?>
" 
					 data-easing="<?php 
            echo $easing;
            ?>
" <?php 
            echo $htmlParams;
            ?>
 ><?php 
            echo $html;
            ?>
					 <?php 
            echo $htmlCorners;
            ?>
					 </div>
				
				<?php 
        }
    }
 public function loadXMLFile($filepath)
 {
     if (!file_exists($filepath)) {
         UniteFunctionsBanner::throwError("File: '{$filepath}' not exists!!!");
     }
     $obj = simplexml_load_file($filepath);
     if (empty($obj)) {
         UniteFunctionsBanner::throwError("Wrong xml file format: {$filepath}");
     }
     $fieldsets = $obj->fieldset;
     if (!@count($obj->fieldset)) {
         $fieldsets = array($fieldsets);
     }
     $this->addSection("Xml Settings");
     foreach ($fieldsets as $fieldset) {
         //Add Section
         $attribs = $fieldset->attributes();
         $sapName = (string) UniteFunctionsBanner::getVal($attribs, "name");
         $sapLabel = (string) UniteFunctionsBanner::getVal($attribs, "label");
         UniteFunctionsBanner::validateNotEmpty($sapName, "sapName");
         UniteFunctionsBanner::validateNotEmpty($sapLabel, "sapLabel");
         $this->addSap($sapLabel, $sapName);
         //Add fields
         $fieldset = (array) $fieldset;
         $fields = $fieldset["field"];
         if (is_array($fields) == false) {
             $fields = array($fields);
         }
         foreach ($fields as $field) {
             $attribs = $field->attributes();
             $fieldType = (string) UniteFunctionsBanner::getVal($attribs, "type");
             $fieldName = (string) UniteFunctionsBanner::getVal($attribs, "name");
             $fieldLabel = (string) UniteFunctionsBanner::getVal($attribs, "label");
             $fieldDefaultValue = (string) UniteFunctionsBanner::getVal($attribs, "default");
             //All other params will be added to "params array"
             $arrMustParams = array("type", "name", "label", "default");
             $arrParams = array();
             foreach ($attribs as $key => $value) {
                 $key = (string) $key;
                 $value = (string) $value;
                 //Skip must params
                 if (in_array($key, $arrMustParams)) {
                     continue;
                 }
                 $arrParams[$key] = $value;
             }
             $options = $this->getOptionsFromXMLField($field, $fieldName);
             //Validate must fields
             UniteFunctionsBanner::validateNotEmpty($fieldType, "type");
             //Validate name
             if ($fieldType != self::TYPE_HR && $fieldType != self::TYPE_CONTROL && $fieldType != "bulk_control_start" && $fieldType != "bulk_control_end") {
                 UniteFunctionsBanner::validateNotEmpty($fieldName, "name");
             }
             switch ($fieldType) {
                 case self::TYPE_CHECKBOX:
                     $fieldDefaultValue = UniteFunctionsBanner::strToBool($fieldDefaultValue);
                     $this->addCheckbox($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
                     break;
                 case self::TYPE_COLOR:
                     $this->addColorPicker($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
                     break;
                 case self::TYPE_HR:
                     $this->addHr();
                     break;
                 case self::TYPE_TEXT:
                     $this->addTextBox($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
                     break;
                 case self::TYPE_STATIC_TEXT:
                     $this->addStaticText($fieldLabel, $fieldName, $arrParams);
                     break;
                 case self::TYPE_IMAGE:
                     $this->addImage($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
                     break;
                 case self::TYPE_SELECT:
                     $this->addSelect($fieldName, $options, $fieldLabel, $fieldDefaultValue, $arrParams);
                     break;
                 case self::TYPE_CHECKBOX:
                     $this->addChecklist($fieldName, $options, $fieldLabel, $fieldDefaultValue, $arrParams);
                     break;
                 case self::TYPE_RADIO:
                     $this->addRadio($fieldName, $options, $fieldLabel, $fieldDefaultValue, $arrParams);
                     break;
                 case self::TYPE_TEXTAREA:
                     $this->addTextArea($fieldName, $fieldDefaultValue, $fieldLabel, $arrParams);
                     break;
                 case self::TYPE_CUSTOM:
                     $this->add($fieldName, $fieldDefaultValue, $fieldLabel, self::TYPE_CUSTOM, $arrParams);
                     break;
                 case self::TYPE_CONTROL:
                     $parent = UniteFunctionsBanner::getVal($arrParams, "parent");
                     $child = UniteFunctionsBanner::getVal($arrParams, "child");
                     $ctype = UniteFunctionsBanner::getVal($arrParams, "ctype");
                     $value = UniteFunctionsBanner::getVal($arrParams, "value");
                     $this->addControl($parent, $child, $ctype, $value);
                     break;
                 case "bulk_control_start":
                     $parent = UniteFunctionsBanner::getVal($arrParams, "parent");
                     $ctype = UniteFunctionsBanner::getVal($arrParams, "ctype");
                     $value = UniteFunctionsBanner::getVal($arrParams, "value");
                     $this->startBulkControl($parent, $ctype, $value);
                     break;
                 case "bulk_control_end":
                     $this->endBulkControl();
                     break;
                 default:
                     UniteFunctionsBanner::throwError("wrong type: {$fieldType}");
                     break;
             }
         }
     }
 }