// 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.countyAutocomplete = function() {
    $(this).each(function()
    {
        var ref = this;
        $.ajax({url: '/pages_actions/system_counties.php', dataType: 'json', success: function(data)
        {
            data[0] = "N/A";
            
            var options = "";            
            for(var i in data)
                options += "<option"+(data[i] == $(ref).val()?" selected='selected'":"")+">"+data[i]+"</option>";            
            var select = $('<select>'+options+'</select>').insertAfter(ref);            
            
            select.attr('name',$(ref).attr('name')).attr('class', $(ref).attr('class'));
            $(ref).remove();
        }
        });
    });
  /*this.autocomplete('/pages_actions/system_counties.php', {
	width: 330,
	matchContains: true,
	formatResult: function(item) {
	  return item[1];
	}
  });*/
  /*
  this.each(function(){
	var input = $(this);
	$('<a href="#" class="delete_input">delete</a>').click(function(e){
	  e.preventDefault();
	  input.fadeOut('fast',function(){
		$(this).remove();
	  });
	  $(this).remove();
	}).insertAfter(input);
  });
  */   
}

jQuery.fn.countryAutocomplete = function() {
  $(this).each(function()
    {
        var ref = this;
        $.ajax({url: '/pages_actions/system_countries.php', dataType: 'json', success: function(data)
        {
            var options = "";

            if (!$(ref).val())
             $(ref).val("United Kingdom");
            
            for(var i in data)
                options += "<option"+(data[i] == $(ref).val()?" selected='selected'":"")+">"+data[i]+"</option>";
            var select = $('<select>'+options+'</select>').insertAfter(ref);
            
            select.attr('name',$(ref).attr('name')).attr('class', $(ref).attr('class'));
            $(ref).remove();
        }
        });
    });
  /*this.autocomplete('/pages_actions/system_countries.php', {
    width: 330,
    matchContains: true,
    formatResult: function(item) {
      return item[1];
    }
  });*/
}

	$('.date-pick').datepicker({dateFormat:'dd/mm/yy',  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(){
		$(this.form.elements).each(function(){
			if(this.type =='text' || this.type =='textarea' || this.type =='password'){
				if(this.value == this.title && this.title != ''){
					this.value='';
				}
			}
		});
	});                            
	
	function serialize(s)
	{
		serial = $.SortSerialize(s);
		alert(serial.hash);
	};    
	
	$('.toggleLink').click(function(e){
	  e.preventDefault();
	  $(this.hash).slideToggle();
	});
	
	$('.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); 
			}
		})
	}); 
	
	$(".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 = cart.products_count + ' items / &pound;' + cart.overall_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 */
			
			var container = document.createElement('div');
			container.innerHTML = contents;
			
			$('#siteCart').html('( ' + container.innerHTML + ' )');
			
			if (String(window.location).indexOf('/cart/')!=-1)
				document.title = 'Your basket contents - ' +  container.innerHTML;
				
			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
	});

    // Image Scroller on album Picker

        $('#albumPicker').serialScroll({
            items:'ul li',
            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: 2,
            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:'xy',
            //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: 4,
            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:4,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--;
    });


});

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=75&amp;h=75&amp;crop=true"></li><li class="date">Posted on: '+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 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 || "<img src='/_ui/media/ihouseu_media/topheader/logos/ihouseu.gif' class='activeLogo'/>",
        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)
{
    $.getJSON('/pages_actions/cms_files_get_info.php',{src: path},function(data)
    {                        
        for (var index in additional)
            data[index] = additional[index];
            
        displayDescribeForm(path, data);
    });
}

function displayDescribeForm(file, data)
{
  var tagData = {title: 'Please describe your file', height: 400, width: 800}
  tagData.message = "<form class='popUpForm'><div id='tagForm'><div class='tabs'><span class='tab selected' rel='describe'><span class='transLightDarkktopLeft'></span><span class='transLightDarkktopRight'></span>Describe</span><span class='tab' rel='categorise'><span class='transLightDarkktopLeft'></span><span class='transLightDarkktopRight'></span>Categorise</span><span class='tab' rel='tag'><span class='transLightDarkktopLeft'></span><span class='transLightDarkktopRight'></span>Tag</span><span class='clearAll'></span></div><div class='content'>";
  
  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></p></div>";
  tagData.message += describe;
  
  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;
  
  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 tags = $('#tagForm').find('[name=tags]').val();
    var categories = $('#tagForm').find('[name^=categories]').val();
    var category = "";
    
    if (title != data.title || description != data.description || data.changed)
    updateFileInfo({title: title, description: description, "categories[]": categories, tags: tags}, 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.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/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();
            
        $(handler).after('<div class="confirm_dialog" id="DelDialog" style="display:none"><p></p></div>');

        var path = ihouseu.def(handler._href,$(handler).attr('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();
            
            if (path)
            {
                var loc = String(window.location);
                if (loc.indexOf('#') != -1)
                    loc = loc.substring(0, loc.indexOf('#')-1);
                
                var sub = escape(loc.substring(loc.indexOf('/',7))); // url without http:// and escaped
                
                var where = path + (path.indexOf('?')==-1?'?':'&') + 'location='+sub;
                window.location = where;
            }
        };

        buttons[cancel] = function () {
            $(this).dialog('close');
            $(this).remove();
            $('.confirm_dialog').remove();
        };

        dialog.dialog({
            autoOpen: true,
            show: 'drop',
            resizable: false,
            minHeight: 140,
            modal: true,
            title: this.title || "<span class='logoAlert'></span>",
            overlay: {
              backgroundColor: '#000',
              opacity: 0.5
            },
            buttons: buttons
        });
        $('.ui-dialog-content').show();
    }
    catch(ex)
    {
        
    }
}


window.contextPopup = function(e, handler)
{
    if (e) e.preventDefault();
    
    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 vars = "";
    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' method='post'><textarea name='content'>"+content+"</textarea><input type='hidden' name='"+name+"' value='true'/>"+vars+"</form>", submit: function()
    {
        $("[name=contextForm]").submit();
    }};
    displaySubmit(data);
}


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="/account/magic_images/?src='+path+'"></iframe>');
    container.dialog({            
    autoOpen: true,               
    width: 1000,     
    height: 720,   
    title: '<span class="logo"></span><span class="popUpTitle"> | &nbsp;&nbsp;MagicFM Images Editor</span>',
    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);
        }        
    })
}
