// Admin tabs plugin
(function() {
  jQuery.fn.prevWrap = function(){
    var prev = jQuery(this).prev();
    if(prev.length) return prev;
    return jQuery(this).siblings().filter(':last-child');
  };
  jQuery.fn.nextWrap = function(){
    var next = jQuery(this).next();
    if(next.length) return next;
    return jQuery(this).siblings().filter(':first-child');
  };
})();


(function() {
  jQuery.fn.i3Tabs = function(){
      var container = $(this);
      var tabHeaders = container.children('.mainTabs').children('li');
      var tabs = container.find('.MSTabs_container');
      tabs.hide();
      tabHeaders.children('a').click(function(e){
        e.preventDefault();
        tabHeaders.removeClass('active');
        jQuery(this).parent().addClass('active');
        tabs.filter('.active').hide().removeClass('active');
        jQuery(this.hash).addClass('active').show();
      });
      var current = tabHeaders.filter('.active');
      if(current.length)
      {
        jQuery(current).children('a').click();
      } else {
        tabHeaders.filter(':first-child').children('a').click();
      }
      // Add scrolling
      container.children('.mainTabs').wheel(function(e,d){
        if(d>0)
        {
          tabHeaders.filter('.active').prevWrap().children('a').click();
        }
        else
        {
          tabHeaders.filter('.active').nextWrap().children('a').click();
        }
        return false;
      });
  };
    
    
        
    $('a','div.banner').attr('target','_blank'); 
    $('div.banner').click(function(){
        $.post('/pages_actions/cms_banner_click.php',{id: $(this).attr('rel')});  
    });
        
})();             


$(document).ready(function() {

jQuery.fn.cityAutocomplete = function(controller) {
  if (this.autocomplete)
  {
      if (!controller)
        controller = '/pages_actions/system_cities.php';
        
      this.autocomplete(controller, {
        width: 330,
        matchContains: true,
        formatResult: function(item) {
          return item[0];
        }
      });
  }
}
    
jQuery.fn.countyAutocomplete = function(controller) {
  if (this.autocomplete)
  {
      if (!controller)
        controller = '/pages_actions/system_counties.php';
      
      this.autocomplete(controller, {
        width: 330,
        matchContains: true,
        formatResult: function(item) {
          return item[0];
        }
      });
  }
}

jQuery.fn.countryAutocomplete = function(controller) {
  if (this.autocomplete)
  {
      if (!controller)
        controller = '/pages_actions/system_countries.php';
      
      this.autocomplete(controller, {
        width: 330,
        matchContains: true,
        formatResult: function(item) {
          return item[0];
        }
      });
  }
}

    $('.date-pick').datepicker({
        dateFormat:'dd/mm/yy',
        changeMonth: true,
        changeYear: true, 
        yearRange: '-90:+15'
    });
    
    //$(".media_nopad").media({autoplay: true});
    $('.show_media').hide();
    $('.enable_preview').click(function(){    
        $('.show_media').hide(); 
          $('#media-'+$(this).attr('rel')).toggle();
    });
    
    $('.slider').slider(
    {
        min:1,
        max:10,
        steps:10,
        change: function()
        {
            rel = $(this).attr('rel');
            $('#attribute'+rel).val($('#slider'+rel).slider('value'));
        }
    });

    $('#a_toggle').click(function(){$('#CMS-ANNOUNCEMENTS').slideToggle();});                                                     
    $('#a_infoToggle').click(function(){$('#imageInfo').slideToggle();});
    
    $.fn.media.defaults = { 
    preferMeta:    1,         // true if markup metadata takes precedence over options object 
    autoplay:      1,         // normalized cross-player setting 
    bgColor:       '#ffffff', // background color 
    params:        {'wmode':'transparent','allowfullscreen':'true'},        // added to object element as param elements; added to embed element as attrs
    attrs:         {},        // added to object and embed elements as attrs 
    flashvars:     {},        // added to flash content as flashvars param/attr 
    flashVersion:  '8',       // required flash version 
 
    // default flash video and mp3 player 
    // @see: http://jeroenwijering.com/?item=Flash_Media_Player 
    flvPlayer:     '/_ui/flash/mediaplayer.swf', 
    mp3Player:     '/_ui/flash/mediaplayer.swf', 
     
    // Silverlight options 
    // @see http://msdn2.microsoft.com/en-us/library/bb412401.aspx 
    silverlight: { 
        inplaceInstallPrompt: 'true', // display in-place install prompt? 
        isWindowless:         'true', // windowless mode (false for wrapping markup) 
        framerate:            '24',   // maximum framerate 
        version:              '0.9',  // Silverlight version 
        onError:              null,   // onError callback 
        onLoad:               null,   // onLoad callback 
        initParams:           null,   // object init params 
        userContext:          null    // callback arg passed to the load callback 
    } 
    }; 
    
    $("input:text, textarea, input:password").each(function(){
        if(this.value == '')
            this.value = this.title;
    });
    $("input:text, textarea, input:password").click(function(){
        if(this.value == this.title)
            this.value = '';
    });
    $("input:text, textarea, input:password").blur(function(){
        if(this.value == '')
            this.value = this.title;
    });
    
    $("input:image, input:button, button:submit, input[type=submit]").click(function(){
        for (var i=0; i<this.form.elements.length; i++)
        {
            var element = this.form.elements[i];
            if(element.type =='text' || element.type =='textarea' || element.type =='password'){
                if(element.value == element.title && element.title != ''){
                    element.value='';
                }
            }
        };
    });

    $("form").submit(function()
    {
        for (var i=0; i<this.elements.length; i++)
        {
            var element = this.elements[i];
            if(element.type =='text' || element.type =='textarea' || element.type =='password'){
                if(element.value == element.title && element.title != ''){
                    element.value='';
                }
            }
        };
    });
        
    function serialize(s)
    {
        serial = $.SortSerialize(s);
        alert(serial.hash);
    };

    $('.toggleLink').click(function(e){
      e.preventDefault();
      $(this.hash).slideToggle();
    });

    $('.showHidden').toggle(function(){
        $(this.rel).fadeIn('slow');
    }, function(){
        $(this.rel).fadeOut('slow');
    });
    
    $('.select_all').click(function(e){
        e.preventDefault();
        $('input:checkbox').attr('checked',true); 
    }); 
    $('.select_invert').click(function(e){
        e.preventDefault();         
        $('input:checkbox').each(function(){       
            if($(this).attr('checked'))
                $(this).attr('checked',false);
            else
            {
                if(!$(this).attr('disabled'))
                $(this).attr('checked',true); 
            }
        })
    });

    $('.scrollPage').click(function() {
        var elementClicked = $(this).attr("rel");
        var destination = $(elementClicked).offset().top;
        $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination-26}, 850 );
        return false;
    });
    
    $(".showCalendar").click(function(e){
           e.preventDefault(); 
           $("#calendar_container").toggle(); 
        });
    
    window.getCart = function(callback)
    {
        $.get('/pages_actions/ecom_cart.php', {mode: 'view'}, function (cart) {
            callback(cart);
        }, 'json');
    }
    window.repopulateCart = function(callback)
    {                
        getCart(function (cart) {
            var contents = "<a href='/cart/' class='link'>" + cart.products_count + ' Course'+(cart.products_count != 1 ? 's' : '')+'</a> ' + cart.price;
            
            /* it's necessary to put contents into innerHTML of an tag to display pound sign
             - putting it directly into document.title will result in &pound; being displayed */
            
            $('#siteCart').html(contents);
            
            if (String(window.location).indexOf('/cart/')!=-1)
                document.title = 'Your basket contents - ' +  contents;
                
            if (callback)
                callback(cart);
        });
    }

// Image Scroller on labels

        $('#releaseSlides').serialScroll({
            items:'div',
            prev:'.prevSlide',
            next:'.nextSlide',
            axis:'x',
            //offset:-10,//when scrolling to photo, stop 230 before reaching it (from the left)
            start:0, //as we are centering it, start at the 2nd
            duration: 700,
            force:false,
            interval: 0,
            constant: true,
            step: 5,
            exclude: 4,
            stop:true,
            lock:false,
            cycle:false, //don't pull back once you reach the end
            jump: false //click on the images to scroll to them
    });


    // news and press Scroller on Homepage
    var news_loaded_counter = 0;
    var current_news = 1;
    
    $('#moreNewsSlider').serialScroll({
            items:'div.moreNews',
            prev:'.prevSlide',
            next:'.nextSlide',
            axis:'x',
            //offset:-10,//when scrolling to photo, stop 230 before reaching it (from the left)
            start:0, //as we are centering it, start at the 2nd
            duration: 500,
            force:false,
            interval: 0,
            constant: true,
            step: 2,
            stop:true,
            lazy:true,
            lock:false,
            exclude:1,
            cycle:false, //don't pull back once you reach the end
            jump: false //click on the images to scroll to them
    });
    
    $('#loadMoreNews').click(function(){

        if(news_loaded_counter <= current_news - 1)
        {
            window.fetchContent({p:current_news+5,rpp:2,content_type:'CmsPage',sort:'is_featured DESC, published DESC',params:'cms_sections_id=1'}, function(data) {dressMoreNews(data)});
            news_loaded_counter++;
        }
        current_news++;
    }).click();
    
    $('#revertMoreNews').click(function(){
        $('#loadMoreNews').show();
        current_news--;
    });

    /*$('').each(function(){
        $(this).find("*").each(function(){
           $(this).css('border', '1px solid rgb(' + Math.floor(Math.random()*255) + ',' + Math.floor(Math.random()*255) + ',' +Math.floor(Math.random()*255)+')');
        });
    });*/



});

function dressMoreNews(news)
{
    for(i in news)
    {
        var html = '<div class="moreNews left"><ul><li class="thumb"><img src="/resize/?img='+news[i]['image']+'&amp;w=114&amp;h=75"></li><li class="date">'+news[i]['dateFormatted']+'</li><li class="title"><a href="'+news[i]['shortname']+'">'+news[i]['title']+'</a></li><li class="readMore"><a href="'+news[i]['shortname']+'">Read More</a></li></ul></div>';
        $('div#moreNewsList').append(html)
    }
}

window.fetchContent = function(params,decorator)
{
    $.ajax({
         url:'/pages_actions/cms_fetch_content.php',
         type: 'POST',
         dataType: 'json',
         data: params,
         async: false,
         success: function(data)
         {
             if(data.error)
             {
                alert(data.error_message);
             }
             else
             {
                if (data.results)
                {
                    if(decorator)
                    {
                        decorator(data.results);
                    }
                }
             }
         }
    });
}
 
 
  function updateHiddenField(field,theValue){
    $('#'+field).val(theValue).change();
  }
 
    function popUp(URL) 
    {
        day = new Date();
        id = day.getTime();
        eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=800,height=700,left = 440,top = 250');");
    }                  
    function GetValueFromChild(myVal)
    {
        document.getElementById('cms_templates_id').value = myVal;
    }

/* Steps rollover display */
(function() {
  jQuery.fn.stepsRollover = function(){
      var containers = $(this).children();
      
      for (var i=0; i<containers.length; i++)
      {
        if (containers[i].parentNode.offsetHeight < containers[i].offsetHeight - 5)
            $(containers[i]).addClass('more');
            
        $(containers[i]).each(function()
        {
            this.__height = this.parentNode.offsetHeight;
            if (this.parentNode.offsetHeight < this.offsetHeight - 5)
            {
                //$(this.parentNode).addClass('extended');
                //this.parentNode.style.overflow = 'visible';
                //this.parentNode.style.height = 'auto';
                $(this.parentNode).attr("title", "header=[] cssheader=[tooltipHeader] cssbody=[tooltipBody] body=['" + $(this.parentNode).text() + "']");
            }
        });
        
        /*
        $(containers[i]).mouseout(function()
        {
            $(this.parentNode).removeClass('extended');
            //this.parentNode.style.overflow = 'hidden';
            //this.parentNode.style.height = this.__height+'px';
        });
        */
        
      }
  };
})();

function inArray (needle, haystack, argStrict) {
    var key = '', strict = !!argStrict; 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;}
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {                
                return true;
            }
        }
    }
     return false;
}

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj && obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return {x: curleft, y: curtop};
}

function displayQuestions(data, callback)
{
    var container = $('#question');
    if (container.length == 0)
    {
        $(document).find('body').append("<div id='question' style='display: none'></div>");
        container = $('#question');
    }
    
    container.dialog({
        autoOpen: true,
        show: 'drop',
        title: data.title,
        hide: 'explode',
        modal: true,
        width: data.width,
        height: data.height,
        open: data.open,
        beforeclose: function(ev)
        {
            container.dialog('destroy');
            
            if (data.close)
                data.close();                
        },
        buttons: data.buttons
    });
    
    container.html(data.message?data.message:'');

    if (callback)
        callback();
}

function displaySubmit(data, callback)
{
    data.buttons = {'Submit': function() 
    {
        $('#question').dialog('destroy');
        
        if (data.submit)
            data.submit();
    }};

    displayQuestions(data, callback);
}
    
function displaySimpleQuestion(data, callback)
{
    data.buttons = {'Yes': function() 
    { 
        $('#question').dialog('destroy');
        
        if (data.yes) 
            data.yes(); 
            
    }, 'No': function()
    {
        $('#question').dialog('destroy');
        
        if (data.no)
            data.no();
    }};
    displayQuestions(data, callback);
}

function displayOptions(data, callback)
{
    data.message += "<br/><br/><select name='options'>";
    if (data.options)
    for(var i in data.options)
        data.message += "<option value='"+i+"'>"+data.options[i]+"</option>";
    data.message += "</select>";
    
    displaySubmit(data, callback);
}

function tagFile(path, additional)
{
    if (!additional)
        additional = {};
    
    if (!additional.options)
        additional.options = ['describe','categorise','tag']
        
    $.getJSON('/pages_actions/cms_files_get_info.php',{src: path},function(data)
    {                        
        for (var index in additional)
            data[index] = additional[index];

        data.show = additional.options;
        displayDescribeForm(path, data);
    });
}

function displayDescribeForm(file, data)
{
  var tagData = {title: 'Please describe your file', width: 440}
  tagData.message = "<form class='popUpForm'><div id='tagForm'><div class='tabs'>";
  
  for (var i=0; i<data.show.length; i++)
    tagData.message += "<span class='tab' rel='"+data.show[i]+"'><span class='transLightDarkktopLeft'></span><span class='transLightDarkktopRight'></span>"+data.show[i]+"</span>";
  
  tagData.message += "<span class='clearAll'></span></div><div class='content'>";
  
  if (inArray('describe', data.show))
  {
      if(data.provider == '1')
      {
          var provider_checked = "checked='checked'";
          var provider_unchecked = "";
      }
      else
      {
          var provider_checked = "";
          var provider_unchecked = "checked='checked'";
      }
      if(data.subcontractor == '1')
      {
          var subcontractor_checked = "checked='checked'";
          var subcontractor_unchecked = "";
      }
      else
      {
          var subcontractor_checked = "";
          var subcontractor_unchecked = "checked='checked'";
      }
      
      var describe = "<div id='describe' class='hidden'><p><label class='bWidth'>File title: </label><input class='txtF' type='text' name='title' value='"+data.title+"'></p><p><label class='bWidth'>File description: </label><textarea style='height: 200px;' class='txtA' name='description'>"+data.description+"</textarea>For Providers <br />Yes  <input type='radio' name='provider' value='1' "+provider_checked+" />No  <input type='radio' name='provider' value='0' "+provider_unchecked+" /><br />For Sub-Contractors <br />Yes  <input type='radio' name='subcontractor' value='1' "+subcontractor_checked+" />No  <input type='radio' name='subcontractor' value='0' "+subcontractor_unchecked+" /> </p></div>";
      tagData.message += describe;
  }
  
  if (inArray('categorise', data.show))
  {
      var categorise = "<div id='categorise' class='hidden'><p><label class='bWidth'>Category: <br /><small>Hold ctrl+click to select multiple</small></label> <div style='overflow: auto; height: 300px'>"+data.categories+"</div></p></div>";
      tagData.message += categorise;
  }
  
  if (inArray('tag', data.show))
  {
      var tag = "<div id='tag' class='hidden'><p><label class='bWidth'>Tag: </label><textarea name='tags' style='height:200px;' class='txtA'>"+data.tags+"</textarea></div></p>";
      tagData.message += tag;
  }
  
  tagData.message += "</div></div></form>";
  
  tagData.submit = function()
  {
    var title = $('#tagForm').find('[name=title]').val();
    var description = $('#tagForm').find('[name=description]').val();
    var subcontractor = $('#tagForm').find('[name=subcontractor]:checked').val();
    var provider = $('#tagForm').find('[name=provider]:checked').val();
    var tags = $('#tagForm').find('[name=tags]').val();
    var categories = $('#tagForm').find('[name^=categories]').val();
    var category = "";
    
    if (title != data.title || description != data.description || data.changed || subcontractor != data.subcontractor || provider != data.provider)
        updateFileInfo({title: title, description: description, "categories[]": categories, tags: tags,provider: provider, subcontractor: subcontractor}, file, function(){
    
        if (data.submit)
            data.submit();
    });
  };
  
  tagData.close = function()
  {
      if (data.close)
        data.close();
  }      
  
  displaySubmit(tagData);
  
  // actions performed after showing the dialog
  $('#tagForm').find('[name^=categories], [name=tags]').change(function()
  {
      data.changed = true;
  });
  
  $('#tagForm').find('.tab').click(function()
  {
      $('#tagForm').find('.tab.selected').removeClass('selected');
      $(this).addClass('selected');
      
      $('#tagForm .content > div').hide();
      $('#tagForm').find("#"+$(this).attr('rel')).show();
  });
  
  $('#tagForm .tab:first').addClass('selected');
  $('#tagForm .tab.selected').click();
}

function updateFileInfo(data, path, callback)
{
    var args = "";
    for(var index in data)
        if (typeof data[index] != "object")
            args += "&" + index + "=" + escape(data[index]);
        else
            for (var sub in data[index])
                args += "&" + index + "=" + escape(data[index][sub]);
    
    $.ajax({
         url:'/admin/cms/magicfm/',
         type: 'POST',
         dataType: 'json',
         data: 'action=update_file_info&path='+path+args,
         success: function(data)
         {
            if (callback)
                callback(data)
         }});
}

window.confirmPopup = function(e, handler, callback)
{
    try
    {
        if (e && e.preventDefault) 
            e.preventDefault();
        else if(e)
            e.returnValue = false;
            
        $(handler).after('<div class="confirm_dialog" id="DelDialog" style="display:none"><p></p></div>');
        var path = std.def(handler.url,handler.href);
        var dialog = $(handler).siblings('.confirm_dialog');
        dialog.attr('title',handler.title);

        var cancel = $(handler).attr('cancel') ? $(handler).attr('cancel') : 'Cancel';
        var confirm = $(handler).attr('confirm') ? $(handler).attr('confirm') : 'Confirm';
        var question = $(handler).attr('question') ? $(handler).attr('question') : 'Do you want to delete ' + ($(handler).attr('rel') ? $(handler).attr('rel') : '') + '?';

        dialog.children().append(question);

        var buttons = {};
        buttons[confirm] = function () {
            if (callback)
                callback();
            else
            {
                var loc = String(window.location);
                var sub = escape(loc.substring(loc.indexOf('/',7))); // url without http:// and escaped
                var where = path + (path.indexOf('?')==-1?'?':'&') + 'location='+sub;
                window.location = where;
            }
            
            $(this).dialog('close');
            $(this).remove();
            $('.confirm_dialog').remove();
        };

        buttons[cancel] = function () {
            $(this).dialog('close');
            $(this).remove();
            $('.confirm_dialog').remove();
        };

        dialog.dialog({
            autoOpen: true,
            show: 'drop',
            resizable: false,
            minHeight: 140,
            modal: true,
            title: $(handler).attr('title') ? $(handler).attr('title') : 'Please confirm',
            overlay: {
              backgroundColor: '#000',
              opacity: 0.5
            },
            buttons: buttons
        });
        $('.ui-dialog-content').show();
    }
    catch(ex)
    {
        window.alert(ex);
    }
}


window.contextPopup = function(e, handler)
{
    if (e && e.preventDefault) 
        e.preventDefault();
    else if(e)
        e.returnValue = false;
    
    var question = $(handler).attr('question') || "";
    var content = $(handler).attr('content') || "";
    var name = $(handler).attr('name') || "contextForm";
    var variables = $(handler).attr('variables') ? eval($(handler).attr('variables')) : null;
    var href = $(handler).attr('href') ? $(handler).attr('href') : window.location
    
    var vars = "";
    if (variables)
    for (var i=0; i<variables.length; i++)
        for (var index in variables[i])
            vars += "<input type='hidden' name='"+index+"' value='"+variables[i][index]+"'/>";
    
    var data = {title: $(handler).attr('title'), message: "<div>"+question+"</div><form name='contextForm' action='"+href+"' method='post'><textarea name='content'>"+content+"</textarea><input type='hidden' name='"+name+"' value='true'/>"+vars+"</form>", submit: function()
    {
        $("[name=contextForm]").submit();
    }};
    displaySubmit(data);
}

window.publishPopup = function(e, id, action)
{
    if (e && e.preventDefault) 
        e.preventDefault();
    else if(e)
        e.returnValue = false;
    
    var message = "<div>Please put in the date selected "+(id?"page":"pages")+" are to be published, or leave it blank to keep the dates unchanged</div><form id='publishForm'><br/><label>Publish on:</label><input type='text' name='published' class='date-pick'/><label>Unpublish on</label><input type='text' name='unpublished' class='date-pick'/><br class='clearAll'/><label>Never expires:</label><input type='checkbox' name='never_expires'/>"+(id?"<input type='hidden' name='selected[]' value='"+id+"'/>":"")+(action?"<input type='hidden' name='mass_operations' value='"+action+"'/>":"")+"</form>";
            
    displaySubmit({height: 300, width: 350, message: message, submit: function(){ window.formSubmit(document.actions_form, $('#publishForm'));}}, function()
    {
        $('#publishForm .date-pick').datepicker({
            dateFormat:'dd/mm/yy', 
            changeMonth: true,
            changeYear: true, 
            yearRange: '-90:+15'});
    });
}

window.movePopup = function(e, sections)
{
    if (e && e.preventDefault) 
        e.preventDefault();
    else if(e)
        e.returnValue = false;
    
    displayOptions({height: 200, options: sections, message: 'Please select the section:', submit: function(){ window.formSubmit(document.actions_form, $('[name=options]')[0]); }});
}


window.formSubmit = function(form, handler)
{    
    var f = function()
    {
        if (handler)
        {
            if ($(handler)[0].nodeName == 'FORM')
            {
                $(handler).find('input, select').each(function()
                {
                    if ($(this).val() && ($(this).attr('type')=='checkbox' ? $(this).attr('checked') : true))
                        $(form).append("<input type='hidden' name='"+this.name+"' value='"+$(this).val()+"'/>");
                });
            }
            else
            {                
                if ($(form).find('#js_additional').length == 0)
                {
                    if ($(handler).attr('name'))
                        $(form).append("<input id='js_additional' type='hidden' name='"+$(handler).attr('name')+"' value='"+$(handler).val()+"'/>");
                    else
                        $(form).append("<input id='js_additional' type='hidden' name='"+$(handler).val()+"' value='true'/>");
                }
                else
                {
                    if ($(handler).attr('name'))
                        $(form).find('#js_additional').attr('name',$(handler).attr('name')).val($(handler).val());
                    else
                        $(form).find('#js_additional').attr('name',$(handler).val());
                }
            }
        }

        if ($(form).find('submit, button[type=submit]').length > 0)
            $(form).find('submit, button[type=submit]').click();
        else
        {
            $(form).submit();
        }
    }
    
    if (handler)
    {        
        if ($(handler).val() == 'delete_selected' || $(handler).val() == 'delete')
        {
            window.confirmPopup(null, handler, function()
            {
                f();
            });
            
            return;
        }
        else if($(handler).find(':selected').attr('confirm') || $(handler).find(':selected').attr('question'))
        {
            window.confirmPopup(null, $(handler).find(':selected'), function()
            {
                if ($(handler).find(':selected').attr('action'))
                {
                    eval($(handler).find(':selected').attr('action'));
                    return;
                }
                else
                    f();
            });
            
            return;
        }
        else
            if ($(handler).find(':selected').attr('action'))
            {
                eval($(handler).find(':selected').attr('action'));
                return;
            }
    }
    
    f();
}

window.formSelect = function(form, handler)
{
    var value = $(handler).find(':selected').val();
    switch (value)
    {
        case 'All':
            $(form).find('[type=checkbox]').attr('checked','checked');
        break;
        case 'Invert':
            $(form).find('[type=checkbox]').each(function()
            {
                if ($(this).attr('checked'))
                    $(this).removeAttr('checked');
                else
                    $(this).attr('checked','checked');
            });
        break;
        case 'None':
            $(form).find('[type=checkbox]').removeAttr('checked');
        break;
    }
}

window.editImage = function(path)
{
    var container = $('#edit_image');
    if (container.length == 0)
    {
        $(document).find('body').append("<div id='edit_image' style='display: none'></div>");
        container = $('#edit_image');
    }
    
    container.html('<iframe style="width:100%; height:100%; border: 0px" src="/images_editor/?src='+path+'"></iframe>');
    container.dialog({            
    autoOpen: true,               
    width: 1000,     
    height: 720,   
    title: 'MagicFM Images Editor',     
    modal: true,
    close: function(){
        container.remove();
        $(this).dialog('destroy');
    }});
}

window.loadComments = function(container, cms_content, cms_content_id, rpp, p)
{
    $.ajax({
        url: '/pages_actions/cms_content_paginate_comments.php',
        data: {'cms_content': cms_content,
               'cms_content_id': cms_content_id,
               'rpp': rpp,
               'p': p},
        success: function(data)
        {
            container.html(data);
        }        
    })
}

window.unserialize = function(string)
{
    var ret = new Object();
    var vars = string.split('&');
    
    for (var j=0; j<vars.length; j++)
    {
        var array = vars[j].split('=');
        ret[window.trim(array[0])] = window.trim(array[1]);
    }
    
    return ret;
}

window.trim = function(string)
{
    if (string)
    {
        var trimmed = string.replace(/^[\t\n ]/g,'').replace(/[\t\n ]$/g,'');
        return string == trimmed ? string : window.trim(trimmed);
    }
    else return string;
}

window.serialize = function(object)
{
    var string = "";
    for (var index in object)
        string += (string?"&":'')+index+"="+object[index];
        
    return string;
}

window.copy = function(object1, object2)
{
    for (var index in object2)
        object1[index] = object2[index];
}

window.def = function()
{
    for (var i=0; i<arguments.length; i++)
        if (arguments[i] != null && arguments[i]!="")
            return arguments[i];
}

window.toObject = function(string)
{        
    return string ? window.unserialize(string.replace(/[;,]/g,'&').replace(/:/g,'=')) : {};
}

window.alert = function(string, title)
{
    $("<div id='dialog' class='ihouseualert'>"+string+"</div>'").dialog({
        autoOpen: true,
        show: 'drop',
        closeText: 'x',
        hide: 'drop',
        modal: true,
        title: title ? title : 'Alert',
        close: function()
        {
            $('#dialog').dialog('destroy').remove();
        }});
}

window.assignPopup = function(object, params, options)
{
    try
    {
        for (var i=0; i<object.length; i++)
        {
            var url = $(object[i]).attr('href');
            if(!url)
                return;

            if (url.indexOf('?')!=-1)
                object[i].url = url.split('?')[0];
            else
                object[i].url = url;
            
            object[i].data = new Object();
            if (url.indexOf('?')!=-1)
                window.copy(object[i].data,window.unserialize(url.split('?').pop()));
            
            if ($(object[i]).attr('params'))
                window.copy(object[i].data, window.toObject($(object[i]).attr('params').replace(/,/g,';')));

            if (params)
                window.copy(object[i].data, params);
            
            object[i].options = new Object();
            if ($(object[i]).attr('rel'))
            {
                window.copy(object[i].options, window.toObject($(object[i]).attr('rel').replace(/,/g,';')));
            }
                
            if (options)
                window.copy(object[i].options, options);
            
             $(object[i]).attr('href','#').removeAttr('params').removeAttr('rel');//.removeClass('displayPopup');  
            
            $(object[i]).unbind('click').click(function(ev)
            {
                ev.preventDefault();
                window.displayPopup(this.url, this.data, this.options);
            });
        }
    }
    catch(e)
    {
        window.alert(e);
    }
}



window.__popup = {active: false, forms: new Array(), data: {}}
window.displayPopup = function(url, params, options)
{
     if (!params)
        params = new Object();

     if (!options)
        options = new Object();

     if (options.onbeforeopen)
         options.onbeforeopen();
         
     if ($('#dialog').dialog)
        $('#dialog').dialog('close');

     params.popup = true;
     
     window.__popup.active = true;
     window.__popup.forms = new Array();
     
     $.ajax({
         url: url,
         type: 'GET',
         dataType: 'html',
         data: window.serialize(params),
         success: function(response){
             var html = null;
             window.__popup.active = false;
             
             if (response)
                 switch(response)
                 {
                     case 'permission_denied': 
                     case 'session_timeout':
                     default:html = response;
                 }
             else
                html = "No response";
                
             var buffer = document.createElement('span');
             buffer.innerHTML = html;
             
             $(buffer).find('form').each(function()
             {
                window.__popup.forms.push(this);
                
                $(this).append("<input type='hidden' value='true' name='popup'/>");
                $(this).attr('onSubmit','window.ajaxValidate(this, event'+(options.type ? ",'"+options.type+"'":"")+')');

                if (options.onsubmit)
                    this.onaftersubmit = options.onsubmit;
             });
             
             var title = $(buffer).find('h1:first, h2:first')[0];
             if (title)
             {
                var title_val = $(title).html();
                $(title).remove();
             }
             
             html = buffer.innerHTML;
             
            $("<div id='dialog' style='background: #ffffff'>"+html+"</div>'").dialog({
                autoOpen: true,
                show: 'drop',
                closeText: 'x',
                hide: 'drop',
                modal: true,
                title:  options.title == false || options.title == "false" ? null : 
                    window.def(title_val, "Alert"),
                resizable: options.title == false || options.title == "false" ? false : true,
                width:  window.def(options.w, options.width) ? parseInt(window.def(options.w, options.width)) : 'auto',
                height: window.def(options.h, options.height) ? parseInt(window.def(options.h, options.height)) : 'auto',
                beforeclose: function()
                {
                  if (options.onbeforeclose)
                  {
                      if (typeof options.onbeforeclose == 'function')
                        options.onbeforeclose();
                      else
                        eval(options.onbeforeclose);
                  }
                },
                close: function()
                {
                    if ($('#dialog').dialog)
                    {
                        $('#dialog *').remove();
                        $('#dialog').dialog('destroy').remove();

                        if (options.onclose)
                        {
                            if (typeof options.onclose == 'function')
                                options.onclose();
                            else
                                eval(options.onclose);
                        }
                    }
                },
                open: function()
                {
                    // to make sure that the popup is open
                    window.setTimeout(function()
                    {
                        window.assignPopup($("#dialog .displayPopup"));

                        if (options.onopen)
                        {
                            if (typeof options.onopen == 'function')
                                options.onopen();
                            else
                                eval(options.onopen);
                        }
                    },100);
                }
            });
                
             if (options.title == false || options.title == "false")
             {
                 $('#dialog').parent('.ui-dialog').addClass('no-title');
                 $('#dialog').siblings('.ui-dialog-titlebar').css('display','none');
                 $('.ui-widget-overlay').click(function()
                 {
                     $('#dialog').dialog('destroy').remove();
                 });
             }
         }
    });
}

window.ajaxValueCheck = function(obj, data, type)
{
    $(obj).find('input, textarea, select').each(function()
    {
        if ($(this).hasClass('error_red'))
        {
            $(this).removeClass('error_red');
            $(this).next().remove();
        }
    });

	if(data.success)
    {
    	 $(obj).find('input, textarea, select').each(function()
    	 {
    	 	 $(this).val('');
		 });
		 $(obj).children('[name=submit_questionnaire]').hide();
        $(obj).children('.thankyou').show();
        exit;	
	}
	
    if (data.error == 1)
    {
        for (var index in data)
        {
            var msg = new Array();
            var sug = new Array();
            
            for (var error in data[index])
            {
                if (error != '__suggestion') 
                    msg.push(data[index][error]);
                else
                    sug.push(data[index][error]);
            }    
            
            $(obj).find('input[name^='+index+'], textarea[name^='+index+'], select[name^='+index+']').each(function()
            {
                $(this).addClass('error_red').after('<p class="error err">* '+msg.join(", ")+'</p>');
                if (sug.length > 0)
                    $(this).val(sug.join(", "));
            });
        }
        
        $('.tabWorks').each(function()
        {
            if ($(this).find('.error').length)
                $('[href=#'+$(this).attr('id')+']').click();
        });
    }
    else
    {
        $(obj).find("input[name=popup]").remove();
        var submit = $(obj).find("[type=submit]");                
        $(obj).append("<input type='hidden' name='"+submit.attr('name')+"' value='"+submit.val()+"'/>");

        if (type == 'post')
        {
            delete params['popup'];
            
            $.ajax({
                url: url.substring(0, url.indexOf('#') != -1 ? url.indexOf('#') : url.length),
                data: params,
                type: "POST",
                dataType: 'json',
                success: function(data)
                {
                    if (window.__popup.forms.length > 0)
                    {                                
                        for (var i=0; i<window.__popup.forms.length; i++)
                        {
                            window.__popup.forms[i].onaftersubmit(data);
                            window.__popup.forms[i].onaftersubmit = null;
                        }
                        
                        $('#dialog').dialog('close');
                    }
                    else
                        $(obj).submit();
                }
                });
        }
        else
        {
            $(obj).submit();
        }                   
    }
}

window.ajaxValidate = function(obj, ev, type)
{    
    if (ev.preventDefault)
        ev.preventDefault();
    else
        ev.returnValue = false;
    
    if (window.tinyMCE)
        window.tinyMCE.triggerSave();
    
    var params = new Object();    
    $(obj).find("[name]").each(function()
    {
        if (!$(this).attr('disabled') && ($(this).attr('type') == 'checkbox' ? $(this).attr('checked') : true) && ($(this).attr('type') != 'file'))
            params[$(this).attr('name')] = $(this).val();
    });
    
    // tinyMCE bug fix
    $(obj).find("textarea").each(function()
    {
        $(this).val($(this).val());
    });
    
    var url = String($(obj).attr('action') ? $(obj).attr('action') : window.location);
    
    var input = $(obj).find('input:not([type=file]), textarea, select');
    var files = $(obj).find('[type=file]');
    
    // files
    if (files.length > 0)
    {
        var frame = $("<iframe id='__dummy' name='__dummy' style='border: 1px solid #ff0000; width: 600px; height: 600px'></iframe>");
        $(document.body).append(frame);
        var form = $("<form method='post' action='"+url+"' target='__dummy' enctype='multipart/form-data'><input type='hidden' name='output' value='false'/></form>").appendTo(frame);
        
        var length = obj.elements.length;            
        var elements = obj.elements;
        
        for(var i=0; i<length; i++)
        {
            var element = $(elements[i]);
            var clone = $(element).clone(true);
            clone.insertBefore(element);
            var moved = element.remove();
            if ($(moved).attr('type') == 'submit')
                moved = $("<input type='hidden' value='"+$(moved).val()+"' name='"+$(moved).attr('name')+"'/>");

            $(form).append(moved);
        }
        
        var file = $(obj).find('[type=file]');
                
        $(form).submit();
        $(frame).load(function()
        {
            if ($(this).contents().text())
            {
                try
                {
                    var data = eval('('+$(this).contents().text()+')');
                    if (data)
                    {
                        if (data.error == 0 && data.data && data.data.callback)
                            eval(data.data.callback);
                        
                        ajaxValueCheck(obj, data, type);                            
                    }
                }
                catch(e){}
            }
        });
    }
    
    // posted data
    else if (input.length > 0)
    {        
        $.ajax({
            url: url.substring(0, url.indexOf('#') != -1 ? url.indexOf('#') : url.length),
            data: params,
            type: "POST",
            dataType: 'json',
            success: function(data)
            {          
                ajaxValueCheck(obj, data, type);
            }
        });
    }
}

window.ieDropdown = function(object, params, options)
{
    $(object).each(function()
    {
        var self = this;
        var target = $($(this).attr('rel'));
        
        $(this).mouseover(function(ev)
        {
            ev.preventDefault();
            $(this).parent().siblings().removeClass('active');
            
            $(this).parent().addClass('active');
            $(target).css('display','block');
        });
        
        $('body').mousemove(function(e)
        {
            var x = e.pageX;
            var y = e.pageY;
            var pos = window.node.pos(target[0]);
            var tar = e.target;
            
            if ($(target).css('display') == 'block' && !$(tar).parents().hasClass('ieDropdown') && !$(tar).hasClass('ieDropdown'))
            {                
                if (!(x > pos.x && x < pos.x+target[0].offsetWidth && y > pos.y-2 && y < pos.y+target[0].offsetHeight))
                {
                    $(target).css('display','none');
                    $(self).parent().removeClass('active');
                }
            }
                
        });
    });
}
