/* ************************************************************************** */
/* Javascript Utility functions */
/* ************************************************************************** */
function goTo(link) {
    window.location = link;
}

function warnGoTo(link,msg) {
    var answer = confirm(msg);
    if (answer) {
        window.location = link;
    }
}

function submitForm(formName) {
    $("#"+formName).submit();
}

function iframePopup(link,options) {
    var width =  options.width;
    var height =  options.height;

    $.modal("<iframe id='popupIframe' src='"+link+"' style='width:"+width+";height:"+height+";'></iframe>",options);
}
function uuid() {
    var chars = '0123456789abcdef'.split('');

    var uuid = [], rnd = Math.random, r;
    uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
    uuid[14] = '4'; // version 4

    for (var i = 0; i < 36; i++) {
        if (!uuid[i]) {
            r = 0 | rnd()*16;
            uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r & 0xf];
        }
    }
    return uuid.join('');
}

(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function(imgArray) {
    var args_len = imgArray.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = imgArray[i];
      cache.push(cacheImage);
    }
  }
})(jQuery);


(function($) {
   $.subst = function(template,obj,values) {
        function convert(str,s1) {
            return obj[s1];
        }
        function convert2(str,s1) {
            return values[obj[s1]];
        }
        var regEx = /\\?\%([^\%\%}]+)\%/g;
        if(values) {
            return template.replace(regEx, convert2,"gi");
        } else {
            return template.replace(regEx, convert,"gi");
        }        
   };
 })(jQuery);

(function($) {
    $.fn.swap = function(b) {
        b = jQuery(b)[0];
        var a = this[0],
            a2 = a.cloneNode(true),
            b2 = b.cloneNode(true),
            stack = this;
        a.parentNode.replaceChild(b2, a);
        b.parentNode.replaceChild(a2, b);
        stack[0] = a2;
        return this.pushStack( stack );
    };
})(jQuery);

function uploadBanner() {
	var btnUpload=$('#upload');
	var status=$('#status');
	new AjaxUpload(btnUpload, {
		action: base+'/ajax.php?option=com_boa_byggekatalog&posttask=ajaxUpload',
		//Name of the file input box
		name: 'uploadfile',
                data: {"micrositeId":$("#micrositeId").val()},
		onSubmit: function(file, ext){
			if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
                  // check for valid file extension
				status.text('Only JPG, PNG or GIF files are allowed');
				return false;
			}
			status.text('Uploading...');
		},
		onComplete: function(file, response){

                         response = jQuery.parseJSON(response);


			//On completion clear the status
			status.text('');
			//Add uploaded file to list
			if(response["status"] === "success"){
                            $('#fileName').empty();
                            $('#fileName').text(response["filename"]);
                            $('#fileName').append('<img src="'+base+'/images/done.gif" alt="" />');
                            $('#header_img').val(file);
//				$('<li></li>').appendTo('#files').html(file+'<img src="images/done.gif" alt="" />').addClass('success');
//				$('<li></li>').appendTo('#files').html('<img src="./uploads/'+file+'" alt="" /><br />'+file).addClass('success');
			} else{
				$('<li></li>').appendTo('#files').text(file+'<img src="'+base+'/images/delete.gif" alt="" />').addClass('error');
			}
		}
	});
}
function uploadCompanyLogo() {    
	var btnUpload=$('#upload');
	var status=$('#status');
	new AjaxUpload(btnUpload, {
		action: base+'/ajax.php?option=com_boa_byggekatalog&posttask=ajaxUpload&path=companies',
		//Name of the file input box
		name: 'uploadfile',
                data: {},
		onSubmit: function(file, ext){
			if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
                  // check for valid file extension
				status.text('Only JPG, PNG or GIF files are allowed');
				return false;
			}
			status.text('Uploading...');
		},
		onComplete: function(file, response){

                         response = jQuery.parseJSON(response);


			//On completion clear the status
			status.text('');
			//Add uploaded file to list
			if(response["status"] === "success"){
                            $('#fileName').empty();
                            $('#fileName').text(response["filename"]);
                            $('#fileName').append('<img src="'+base+'/images/done.gif" alt="" />');
                            $('#img').val(file);
//				$('<li></li>').appendTo('#files').html(file+'<img src="images/done.gif" alt="" />').addClass('success');
//				$('<li></li>').appendTo('#files').html('<img src="./uploads/'+file+'" alt="" /><br />'+file).addClass('success');
			} else{
				$('<li></li>').appendTo('#files').text(file+'<img src="'+base+'/images/delete.gif" alt="" />').addClass('error');
			}
		}
	});
}


/* ************************************************************************** */
/* Javascript for Reklamer */
/* ************************************************************************** */
var maxCountTop;
var maxCountRight;

function insertAds(ads,pos) {
    var adElements = $('#'+pos+' .reklameSize');
    $.each(ads,function(index,el) {
        adElements[index].innerHTML = el;
    });
}

function rotateAdsRight(count) {
    if(count >= maxCountRight) {
        count = 0;
    }
    var rotationTime = 10000;
    var cells = 4;
    var subArray = imageRotationRight.slice(count+(cells-1)*count,count+(cells-1)*count+cells);
    insertAds(subArray, 'adsRight');

    if(maxCountRight > 1) {
        window.setTimeout("rotateAdsRight("+(count+1)+")",rotationTime);
    }
}

function rotateAdsTop(count) {
    if(count >= maxCountTop) {
        count = 0;
    }
    var rotationTime = 10000;
    var cells = 4;
    var subArray = imageRotationTop.slice(count+(cells-1)*count,count+(cells-1)*count+cells);
    insertAds(subArray, 'adTop');

    if(maxCountTop > 1) {
        window.setTimeout("rotateAdsTop("+(count+1)+")",rotationTime);
    }
}

/* ************************************************************************** */
/* Javascript for Magasiner */
/* ************************************************************************** */

var mod_boa_magasiner = {};
mod_boa_magasiner.preLoadImages = function(images) {
    jQuery.preLoadImages(images);
}
mod_boa_magasiner.setupMagasiner = function(img,aliases) {
    this.img = img;
    this.aliases = aliases;
    this.link = base+'/index.php/udgivelser/category/';
    this.len = this.img.length - 1;
    this.currentIndex = this.len;
    this.el = $("<img id='magasinImage' src='"+this.img[this.len]+"' />").css({'height':'320px','width':'220px'});
    $('#magasiner').empty();
    $('#magasiner').append(this.el);
}

mod_boa_magasiner.nextImage = function() {
    this.currentIndex++;
    $('#magasinNavLeft').show();
    if(this.currentIndex == this.len) {
        $('#magasinNavRight').hide();
    } 
    if(this.currentIndex <= (this.len)  && this.currentIndex >= 0) {
        $('#magasiner').empty();
        $('#magasiner').append(this.el.attr("src",this.img[this.currentIndex]));
        $("#magasinLink").attr("href",this.link+this.aliases[this.currentIndex]);
    }
}

mod_boa_magasiner.prevImage = function() {    
    this.currentIndex--;
    $('#magasinNavRight').show();
    if(this.currentIndex == 0) {
        $('#magasinNavLeft').hide();
    } 
    if(this.currentIndex <= this.len  && this.currentIndex >= 0) {
        $('#magasiner').empty();        
        $('#magasiner').append(this.el.attr("src",this.img[this.currentIndex]));
        $("#magasinLink").attr("href",this.link+this.aliases[this.currentIndex]);
    }
}


/* ************************************************************************** */
/* Microsite */
/* ************************************************************************** */

function saveTab() {
    // Get the raw contents of the currently active editor
    var content = tinyMCE.activeEditor.getContent();
    
    $("#myForm").append("<textarea name='content'>"+content+"</textarea>");
    tinyMCE.execCommand('mceRemoveControl', false, 'editor-1');
    submitForm("myForm");
}

/* ************************************************************************** */
/* Javascript Gallery */
/* ************************************************************************** */

function uploadPictures() {
    var btnUpload=$('#upload');
	var status=$('#status');
	new AjaxUpload(btnUpload, {
		action: base+'/ajax.php?option=com_boa_byggekatalog&posttask=ajaxUpload',
		//Name of the file input box
		name: 'uploadfile',
                data: {"micrositeId":$("#micrositeId").val()},
		onSubmit: function(file, ext){
			if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
                  // check for valid file extension
				status.text('Only JPG, PNG or GIF files are allowed');
				return false;
			}
			status.text('Uploading...');
		},
		onComplete: function(file, response){

                         response = jQuery.parseJSON(response);


			//On completion clear the status
			status.text('');
			//Add uploaded file to list
			if(response["status"] === "success"){
                            var filename = response["filename"];
                            $('#pictureUpload').empty();
                            $("#img").val(filename);
                            $('#pictureUpload').append(filename+'<img src="'+base+'/images/done.gif" alt="" />');
			} else{

			}
		}
	});
}

function saveGalleryRow() {
    var img = $("#img").val();
    var img_caption = $("#img_caption").val();
    var title = $("#title").val();
    var micrositeId = $("#micrositeId").val();
    var data = {option:"com_boa_byggekatalog",
                task:"add",
                entity:"MicrositeItem",
                img:img,
                img_caption:img_caption,
                title:title,
                uuid:uuid(),
                posttask:"gallerySaved",
                gallery_id:$("#gallery_id").val(),
                micrositeId:micrositeId
            };
    $.post("ajax.php",data, function(data){
        if(data.status == "success") {
            addRow(data.id,data.ordering,img,img_caption,micrositeId);
        }
    },"json");
}

function addRow(id,ordering,img,img_caption,micrositeId) {
    if($("#noImg").length) {
        $("#noImg").remove();
    }
    var previewLink = base+"/images/uploads/microsites/"+micrositeId+"/"+img;
    var tags = {'img':0, 'link':1, 'click':2, 'title':3,'blank':4};
    var buttonDefs = [
            ['uparrow.png', 'javascript:', 'upDown('+id+','+ordering+',true)', 'Op',''],
            ['downarrow0.png', 'javascript:', 'upDown('+id+','+ordering+',false)', 'Ned',''],
            ['edit_f2.png', 'javascript:', 'editRow('+id+','+ordering+')', 'Ret',''],
            ['preview_f2.png', previewLink,'', 'Vis','_blank'],
            ['cancel_f2.png', 'javascript:','deleteRow('+id+')', 'Slet','']
    ];
    var content = img+" "+img_caption;
    var buttons = "";
    var i;
    var listTemplate = '<a href="%link%" onclick="%click%" target="%blank%"><img src="images/%img%" height="20px" border="0" vspace="2" alt="%title%" title="%title%" /></a>';
    for(i=0;i<buttonDefs.length;i++) {
        buttons += $.subst(listTemplate,tags,buttonDefs[i]);
    }
    var checkbox = "<input type='checkbox' name='id' ordering='"+ordering+"' value='"+id+"' />";

    var rowCount = $("#listResults").find(".listView").length;
    /* Ads a row */
    $('#listResults').append("<div class='listView numb-"+id+"'><div class='inline-block listNumber'>"+(rowCount+1)+".</div>"+checkbox+content+"<div class='icons'>"+buttons+"</div></div>");
    setImageOrder();
}

function upDown(id,ordering,isUp) {
    var el = $('#listResults div.numb-'+id);
    var elPrev;
    if(isUp) {
        elPrev = el.prev();
    } else {
        elPrev = el.next();
    }    
    var prevId = elPrev.find(":checkbox").val();
    var prevOrdering = elPrev.find(":checkbox").attr("ordering");
    var data = {id:id,ordering:ordering,prevId:prevId,prevOrdering:prevOrdering,option:"com_boa_byggekatalog", posttask:"upDown"};
    $.post(base+"/ajax.php",data, function(data){
        if(data.status == "success") {
            var numb = el.find(".listNumber").text();
            el.find(".listNumber").text(elPrev.find(".listNumber").text());
            elPrev.find(".listNumber").text(numb);
            el.swap(elPrev);
            setImageOrder();
        }
    },"json");
}

function deleteRow(id) {
    var data = {item_id:id, option:"com_boa_byggekatalog", entity:"MicrositeItem", task:"delete",uuid:uuid(),type:"ajax"};
    $.post(base+"/ajax.php",data, function(data){
        if(data.status == "success") {
            $('#listResults').find('.numb-'+id).remove();
        }
    },"json");
}

function setImageOrder() {
    var el = $('#listResults .listView');
    el.find('img[src*=uparrow]').attr('src','images/uparrow.png');
    el.find('img[src*=downarrow]').attr('src','images/downarrow.png');
    if(el.length == 1) {
        el.find('img:first').attr('src','images/uparrow0.png').end().find('img:eq(1)').attr('src','images/downarrow0.png');
    } else {
        $('#listResults').find('.listView:first img:first').attr('src','images/uparrow0.png').end().find('.listView:last img:eq(1)').attr('src','images/downarrow0.png');
    }
}

function insertGallery(tab_id,gallery_id,name) {    
    tinyMCE.activeEditor.selection.setContent('%'+name+'%');
    var data = {option:"com_boa_byggekatalog", entity:"MicrositeGallery", task:"update",type:"ajax", tab_id:tab_id, gallery_id:gallery_id};
    $.post(base+"/ajax.php",data, function(data){
        if(data.status == "success") {
            
        }
    },"json");
}

function addCustomButton() {
    $(document).everyTime(1000,'myTimer', function(i) {
        if(tinyMCE.activeEditor) {
            $(document).stopTime('myTimer');
            var els = $('#galleryInsert').detach()
            /* Inject a button into editor */            
            $('#editor-1_toolbar4 .mceToolbarEnd').before(els.show());
            $('#insertBtn').click(function() {
               insertGallery($("#tab_id").val(),$("#gallerySelect").val(),$("#gallerySelect option:selected").text());
            });
        }
    }, 0);
}

/* ************************************************************************** */
/* Javascript Setup */
/* ************************************************************************** */

function init() {
    if($('#addCompany').length) {
        uploadCompanyLogo();
    }
    if($('#microsite').length) {
        uploadBanner();
    }
    if($("#setup-tabs").length) {
        addCustomButton();
    }
    if($('#gallery').length) {
        uploadPictures();
        setImageOrder();
        $("#saveRow").click(function(event) {
            saveGalleryRow();
        });
    }
}

function setupEvents() {

    if($("#select-layout").length) {
//        setupTinyMCE();
        $("#select-layout").click(function(event) {
            var myEl = $(event.target);
            $("#select-layout").hide();
            $("#layout-"+myEl.attr("layout")).show();
            tinyMCE.execCommand("mceAddControl", true, "editor-"+myEl.attr("layout"));
        });
        if($(".editThis").length) {
            var myEl = $(".editThis");
            myEl.show();
            tinyMCE.execCommand("mceAddControl", true, "editor-"+myEl.attr("numb"));
        }
    }
    if($("#tabBtn").length) {
//        setupTinyMCE();
        $("#tabBtn").click(function(event) {
            saveTab("layout-1");            
        });
    }
    if($("#listResults").length) {
        $("#listResults").mouseover(function(event) {
            var myEl = $(event.target);
            if(myEl.hasClass("listView")) {
                myEl.css({"background-color":"#F7F7F7","border":"1px solid silver"});
            } else {
                var parentEl = myEl.parents(".listView");
                if(parentEl) {
                    parentEl.css({"background-color":"#F7F7F7","border":"1px solid silver"});
                }
            }

        });
        $("#listResults").mouseout(function(event) {
            var myEl = $(event.target);
            if(myEl.hasClass("listView")) {
                myEl.css({"background-color":"white","border":"1px solid white"});
            } else {
                var parentEl = myEl.parents(".listView");
                if(parentEl) {
                    parentEl.css({"background-color":"white","border":"1px solid white"});
                }
            }
        });
    }    
}

$(document).ready(function() {
    setupEvents();
    init();

    /* Start ad rotation */
    if(typeof(imageRotationTop) !== 'undefined') {
        maxCountTop = imageRotationTop.length / 4;
        rotateAdsTop(0);
    }

    if(typeof(imageRotationRight) !== 'undefined') {
        maxCountRight = imageRotationRight.length / 4;
        rotateAdsRight(0);
    }
    
    
    

//    test("http://www.google.com");
//    iframePopup("http://www.google.com",{width:"400px",height:"400px"});
});