/*jslint onevar: false*/
/*global $, window, document, google, IDD */

/**
 * Cuts a string when it is bigger than a certain lenght and replaces the rest by '...'
 * @param str The string to short
 */
function cutAt(str) {
 		if(str.length > 9)
 			return str.substring(0,9)+"...";
 		else
 			return str;
}
var $activeElement;


/**
 * Indicates if a bundle has been selected
 */
var bundleSelected = false;

var idOf = function ($element) {
    return $element.attr('id');
},
iddSuggest,
rearrangeOptionHtml = function () {
	var selectedElements = new Array();
	//Getting the dropdown
    var dropdown = $('#select-category');
    //Getting the place where the bundles will be inserted
    var insertionPlace = $('#category-buttons-container');
    //The column number
    var col = 0;
    /**
     * Adds a new bundle to the list
     * @param text The text to be included
     * @param val The bundle value
     */
    var addOption = function (text, val) {
        // Categories with spaces need to be split,
        // such as 'Premium content'
        var $div;
        var hc = 'category-hover';
        var removeOrange = function ($el) {
            if (! $el.is('.selected')) {
                $el.css({/*For IE rounded-corners*/
                    border: "1px solid #bbb",                            
                    backgroundColor: "fff" 
                });
            }
        };
        /**
         * This function is called every time we click on a bundle, it changes
         * its style and marks it.
         */
        var selectOption = function () {
        	//Global function
        	bundleSelected = true;
            //$('.category.selected').removeClass('selected').each(function () {
            	//if($(this).attr("id") != $div.attr("id"))
            	//	removeOrange($(this));
            //});
        	if($div.is(".selected"))
        		$div.removeClass("selected");
        	else {
        		$div.addClass("selected");
        		selectedElements.push($div.attr("id"));
        		dropdown.val(selectedElements);
        	}
        };
        var hoverOff = function () {
            var $el = $(this);
            if ($el.hasClass(hc)) {
                $el.removeClass(hc);
                removeOrange($el);
            }
        };
        var hoverOn = function () {
            var $el = $(this);
            if (! $el.hasClass(hc)) {
                $el.addClass(hc);
                $el.css({
                    backgroundColor: "d68131" /*For IE rounded-corners*/
                });
            }
        };
        
        var toggleHover = function () {
            if ($div.hasClass(hc)) {
                $div.each(hoverOff);
            } else {
                $div.each(hoverOn);
            }
        };
        var clearAllHover = function () {
            $(".category-hover").each(hoverOff);
        };
        
        $div = $('<div class="category" id="'+val+'"/>')
            .append(cutAt(text).replace(/\s/g,"&nbsp;"))
            .addClass("cat-col-" + col)
            .appendTo(insertionPlace)
            .hover(toggleHover, clearAllHover)
            .click(selectOption);
        col = col + 1;
        if (col > 2) {
            col = 0;
        }
    };
    $('option', dropdown).each(function (idx) {
        var $el = $(this);
        addOption($el.text(), $el.val());
    });
    dropdown.hide();
};
var linksInNewWindow = function () {
    $('a[target=_blank]').click(function () {
        var url, href = $(this).attr('href');
        if (/http:/.exec(href)) {
            url = href;
        } else {
            url = window.location.protocol + "//" + window.location.host + href; 
        }
        window.open(url);
        return false;                  
    });
};
var cancelBookmarkletLink = function () {
    $('a.bookmarklet-link').click(function () {
        return false;
    });
};
var ieBookmarkletLink = function () {
    if ($.browser.msie) {        
        var $link = $('a.bookmarklet-link');
        var ieTitle = $('#drag-this-ie-title').text();
        $link.attr('alt', ieTitle);
        $('img', $link).attr('title', ieTitle);
        $('#drag-this-text').show();
    }
};
var ellipsisForFirefox = function () {
    $('.ellipsis').ellipsis();
};
var addCloseButton = function () {
    var close = function () {
        try { 
            window.close();
        } catch (e) {}
        try { 
            self.close();
        } catch (e) {}
    };
    $('<div id="close-button"></div>').click(close).appendTo('#close-button-container');
    $(document).keyup(function (e) {
        if (e.keyCode == 13) {
            close();
        }
    });
};
var enterTriggers = function () {
    $(document).keyup(function (e) {
        if (e.keyCode == 13) {
            $('.enter-triggers').click();
        }
    });
    
};
var ieBorderRadius = function () {
	
};
var $inputAndPasswordsInForm = function ($form) {
    return $('input[type="text"], input[type="password"]', $form);
};
var addHelpTexts = function (formSelector) {
    var addToForm = function () {
        var $form = $(this);
        var submitCleanups = [];
        var $elements = $inputAndPasswordsInForm($form);
        var addHintToInput = function () {
            var $el = $(this);
            var id = idOf($el);
            if (!id) {
                return;
            }
            var helpText = $('label[for=' + id + ']').attr('title') || "";
            var relatedToClass = "related-to-" + id;
            
            var $help  = $('<div/>')
                .text(helpText)
                .addClass('textfield-hint')
                .addClass(relatedToClass)
                .hide().click(function () {
                    $(this).hide();
                    $el.focus();
                })
                ;
            $el.wrap('<div/>')
                .parent()
                .addClass('textfield-hint-wrap')
                .addClass(relatedToClass)
                .append($help);
            
            $help.css($el.position());
            
            var maybeShowHint = function () {
                $el.removeClass("focus");                
                if ($el.val() === "") {
                    $help.show();
                }
            };
            var hideHint = function (eventObj) {
                $help.hide();
                $el.addClass("focus");
            };
            var pwdFix = function () {
                if ($el.val() === "" && !$el.hasClass("focus")) {
                    $help.show();
                } else {
                    $help.hide();
                }
            };
            var lookAtPasswordField = function () {
                var $pwd = $('input[type="password"]');
                $pwd.trigger('pwdFixEvent');
            };
            
            maybeShowHint();
            $el.blur(maybeShowHint).focus(hideHint).keyup(lookAtPasswordField).bind('pwdFixEvent', pwdFix);
        };
        $elements.each(addHintToInput);
    };
    $(formSelector).each(addToForm);
};

var setupSignUpFormLogic = function () {
    var $form = $('form'),
    $fields = $inputAndPasswordsInForm($form),
    good = 'value-good',
    bad = 'value-bad',
    pending = 'value-pending',
    $downloadButton = $('#download-button'),
    $captchaField = $('#captcha'),
    $img = $('.sign-up-captcha'),
    locateCheckbox = function ($inputEl) {
        return $inputEl.closest('.textfield-hint-wrap').find('.validation-checkbox');
    },
    clearRed = function ($inputEl) {
        locateCheckbox($inputEl).removeClass(bad);
    },
    clearGreen = function ($inputEl) {
        locateCheckbox($inputEl).removeClass(good);
    },
    clearGrey = function ($inputEl) {
        locateCheckbox($inputEl).removeClass(pending);
    },
    clearAll = function ($inputEl) {
        return locateCheckbox($inputEl)
            .removeClass(bad)
            .removeClass(good)
            .removeClass(pending);
    },
    setGreen = function ($inputEl) {
        clearAll($inputEl).addClass(good);                
    },
    setRed = function ($inputEl) {
        clearAll($inputEl).addClass(bad);        
    },
    setGrey = function ($inputEl) {
        clearAll($inputEl).addClass(pending);
    },
    isFieldState = function ($inputEl, valueClass) {
        return locateCheckbox($inputEl).hasClass(valueClass);
    },
    areAllFieldsValid = function () {
        var wanted = $fields.size();
        var green = $('.validation-checkbox.' + good).size();
        return green === wanted;
    },
    areAllRequiredFieldsValid = function () {
    	if($("#name").val())
    		if($("#name").val().length < 1)
    			return false;
        var wanted = $('.required').size();
        var green = $('.validation-checkbox.required.' + good).size();
        return green === wanted;
    },
    firstNonGoodField = function () {
        return $fields.not('.' + good).eq(0);
    },
    refreshDownloadButton = function () {
        $downloadButton.toggleClass('inactive', !areAllRequiredFieldsValid());
    },
    makeValidationResult = function (result) {
        return {result: result};
    },
    tellNoResult = function () {
        return {noResult: true};
    },
    tellSoon = function () {
        return {soon: true};
    },
    tellSkip = function () {
        return {skip: true};
    },
    tellSkipAndClear = function () {
        return {skip: true, clearAll: true};
    },    
    tellAjaxValidate = function () {
        return {ajaxValidate: true};
    },
    trueLength = function (val) {
        return val ? $.trim(val).length : 0;
    },
    setCaptchaValid = function () {
        if (! isFieldState($captchaField, good)) {
            setGreen($captchaField);
            $captchaField.attr('disabled', "disabled");
            $captchaField.val("You are human");
            $img.hide();
            if (areAllFieldsValid()) {
                $downloadButton.focus();
            } else {
                firstNonGoodField().focus();
            }
        }
    },
    refreshCaptcha = function () {
    	$img = $("img[name=generatedImage]");
        var imgUrl = $img.attr("src"),
        hasQs = imgUrl.indexOf("?") > -1;
        if (!hasQs) {
            imgUrl = imgUrl + "?dummy=1";
        }
        imgUrl = imgUrl + "&a=1"; //We add one more of these every time
        $img.attr('src', imgUrl); //trigger load of new image
        $captchaField.fadeOut('slow', function () {
            $captchaField.fadeIn('slow').val("");
        });
    },
    animationLock, animationEndMsg, errMsgId,
    pendingErrorMessages = {},
    displayErrorMessage = function (msg, idOfErrorElement, infoMessage) {
        var $errMsgAnimation = $('#err-msg-animation'),
        $top = $('#top'),
        $fieldError = $('#field-error'),
        speed = 300,
        $wrap, $left, $right,
        findFirstError = function () {
            var exit;
            //Iterate in top-down order, display first we find
            $fields.each(function () {
                var id = idOf($(this));
                var pm = pendingErrorMessages[id]; 
                if (pm) {
                    exit = {msg: pm, id: id};
                    return false; //break out of loop
                }
                return true;
            });
            if (infoMessage) {
                var id = idOfErrorElement;
                var pm = pendingErrorMessages[id];
                if (pm) {
                    exit = {msg: pm, id: id, html: true};
                }
            }
            return exit;
        },
        removeErrorDisplay = function () {
            $errMsgAnimation.remove();
            $top.removeClass('error-area');
            $fieldError.text("");
             errMsgId = null;
        },
        reDisplay = function () {
            var toDisplay = findFirstError();
            if (toDisplay) {                
                if (toDisplay.html) {
                    $fieldError.html(toDisplay.msg);
                } else {
                    $fieldError.text(toDisplay.msg);
                }

                //Weird IE6 fix for weird IE6 bug
                $fieldError.css({display: "none"});
                window.setTimeout(function () {
                    $fieldError.css({display: "block"});
                }, 50);
            } else {
                removeErrorDisplay();
            }
        },
        animateAndDisplay = function () {
            animationLock = true;
            $top.addClass('error-area');
            $wrap = $('<div id="err-msg-animation" class="bubble"></div');
            $('#top').prepend($wrap);
            $wrap.fadeIn();
        },
        ensureDisplayed = function () {
            if (! findFirstError()) {
                removeErrorDisplay();
                return;
            }
            if (animationLock) {
                return;
            } else {
                if ($errMsgAnimation.size() > 0) {
                    reDisplay();
                } else {
                    animateAndDisplay();
                }
            }
        };        
        pendingErrorMessages[idOfErrorElement] = msg === "" ? null: msg;
        $fieldError.empty();
        $fieldError.append(msg);
        ensureDisplayed();        
    },
    clearErrorMessageFor = function (id) {
        displayErrorMessage("", id);
    },
    translateIdToAjaxErrorKey = function (id) {
        return {
            name: "fullName",
            phone: "msisdn",
            email: "email",
            password: "pinCode",
            captcha: "captchaCode"
        }[id];
    },
    ajaxValidate = function (id) {
        var qs = $('form').serialize() + "&ajaxValidate=true",
        url = "/landingpage/signup.action";
        
        $.ajax({
        		url: url,
        		data: qs,
        		type: "GET",
        		success:function (res) {
        			res = $.parseJSON(res);
            if (res.captchaValid) {
		            	$captchaField.addClass(good);
                setCaptchaValid();
            }
            
            var key = translateIdToAjaxErrorKey(id);
            var val = res[key];
            var $el = $('#' + id);

            if (id === "phone") {
                if (!val || (val === "")) {
                    setGreen($('#phone'));
                    clearErrorMessageFor(id);
                } else {
                    if (res.countryCodeError) {
                        //setGrey($el);
                        //clearErrorMessageFor(id);                        
                    } else {
                        setRed($el);
                        displayErrorMessage(val, id);
                    }
                }
            } else {
                if (id === "captcha" && val) {
                    // We only send captcha errors if we have a real error. 
                    refreshCaptcha();
                } 
                if (val) {
                    if (id === "email" && trueLength($('#email').val()) === 0) {
                        clearErrorMessageFor(id);
                        clearAll($('#email'));
                    } else {
                        displayErrorMessage(val, id);
                        setRed($el);
                    }
                } else {
                    clearErrorMessageFor(id);
                    setGreen($el);
                }
            }
		            if(key != "captchaCode")
		            	displayValidationResult($activeElement, validationResult);
            refreshDownloadButton();
		        }
        });
    },
    pendingCaptcha,
    preValidators = {
        name: tellSkip,
        phone: function (val) {
            return trueLength(val) > 2 ? tellAjaxValidate(): tellSkipAndClear();   
        },
        email: function (val) {
            return trueLength(val) >= 1 ? tellSkip(): tellSkipAndClear();
        },
        password: function (val) {
            var res = tellNoResult(),
            $hint = $('.validation-mini-hint'),
            len = trueLength(val),
            minLength = 6,
            maxLength = 12;
            
            if (len > 0 && len < minLength) {
                $hint.show();
            } else {
                $hint.hide();
                if (len > 0) {
                    res = makeValidationResult(len >= minLength && len <= maxLength);
                } else {
                    res = tellSkipAndClear();
                }
            }
            return res;
        },
        captcha : function (val, id) {
            if (pendingCaptcha) {
                window.clearTimeout(pendingCaptcha);
                pendingCaptcha = null;
            }
            if (trueLength(val) < 5) {
                return tellNoResult();
            } else {
                pendingCaptcha = window.setTimeout(function () {
                    ajaxValidate(id);
                }, 2000);
                return tellSoon();
            }
        }
    },
    focusValidators = {
        name: function (val) {
            return trueLength(val) > 0 ? makeValidationResult(true): tellSkipAndClear();
        },
        email: tellAjaxValidate,
        captcha: tellSkip
    },
    displayValidationResult = function ($element, validationResult) {
        if (validationResult.skip) {
            return;
        }
        if (validationResult.noResult) {
            clearAll($element);
            clearErrorMessageFor(idOf($element));
        } else if (validationResult.result) {
            setGreen($element);
        } else if (validationResult.soon) {
            setGrey($element);
        }
        else {
            clearGreen($element);
            setRed($element);
        }
    },
    validateElement = function ($element, keyup) {
        var focusChange = !keyup,
        id = idOf($element),
        value = $element.val(),
        pre = preValidators[id](value, id),
        cleanup = function () {
            clearAll($element);
            clearErrorMessageFor(idOf($element));            
        },
        result = pre,
        validator;
        if (focusChange) {
            validator = focusValidators[id];
            if (validator) {
                result = validator(value);
            }
            if (result.ajaxValidate) {
                ajaxValidate(id);
                return tellSkip();
            }
        } else  {
            if (pre.skip) {
                return tellSkip();
            }            
            if (pre.ajaxValidate) {
                ajaxValidate(id);
                return tellSkip();
            }
        }
        if (result.clearAll) {
            cleanup();
        }
        return result;
    },
    validateOnKeyUp = function () {
        $activeElement = $(this),
        validationResult = validateElement($activeElement, true);
    },
    validateOnFocusChange = function ($el) {
        displayValidationResult($el, validateElement($el));
        refreshDownloadButton();
    },
    previousWithFocus = null,
    onFocus = function (evt) {
        if (previousWithFocus) {
            if (previousWithFocus !== this) {
                validateOnFocusChange($(previousWithFocus));
            }
        }
        previousWithFocus = this;
    },
    addCheckbox = function () {
        $('<div/>')
            .addClass('validation-checkbox required')
            .appendTo($(this).closest('.textfield-hint-wrap'));
    },
    addTooShortHint = function () {
        $('<div>Too short</div>')
            .addClass('validation-mini-hint')
            .hide()
            .appendTo($('#password').closest('.textfield-hint-wrap'));
    },
    clearRememberedFormValuesOnLoad = function () {
        //Some browsers remember values like the captcha,
        //we can't let them do that
        $captchaField.val("").removeAttr('disabled');
    },
    validateOnLoad = function () {
        //If the browser remembers values, some may be good/bad already on load
        $fields.each(function () {
            if (trueLength($(this).val()) > 0) {
                validateOnFocusChange($(this));
            }
        });
    },
    maybeIDDSuggest = function () {
        if (iddSuggest && $.trim($('#phone').val()) === "") {
            $('#phone').val("+" + iddSuggest);            
        }
    },
    cancelEnterButtonSubmits = function (evt) {
        if ($downloadButton.is('.inactive')) {
            evt.preventDefault();            
        }
    };

    $fields.each(addCheckbox);
    locateCheckbox($('#name')).removeClass('required');    
    
    $fields.focus(onFocus);
    $fields.keyup(validateOnKeyUp);
    $('#phone').focus(maybeIDDSuggest);
    
    clearRememberedFormValuesOnLoad();
    addTooShortHint();
    validateOnLoad();
    refreshDownloadButton();
    

    $form.submit(cancelEnterButtonSubmits);
    
    $('#read-more').click(function () {
        var h = $('#page-description').html();
        var loading = $('<img src="http://hosted.squace.com/webcontent/systemsviews/devel/images/ajax-loader.gif">');
        var url = $($('#page-description').find("a")[0]).attr("href");
        if(url.indexOf("dcs1") == -1 && url.indexOf("dcs2") == -1) { 
	        $('#read-more').append(loading);
	        $.ajax({
	        	url: "/proxy.jsp?url="+url,
	        	dataType: "script",
	        	success: function(data) {
	        		if(data.indexOf("squaceml") == -1) {
	        			displayErrorMessage(h,'read-more', true);
	        		}
	        		loading.hide();
	        	}
	        });
        }
    });

},
switchSubmitButtonToSignedInLink = function (submitBtn, signedInSection, signedInLink) {
    submitBtn.hide();
    signedInSection.show();
    $('.signed-in-button', signedInSection).click(function () {
        submitBtn.click();
        return false;
    });    
},
fixLogOutButton = function () {
    switchSubmitButtonToSignedInLink($('#logout-submit'), $('#signed-in-section'));
},
/*
pendingResize,
getResizeDim = function () {
    var minW = ($('div.container').width() || 445) + 35;
    var $foot = $('#footer');
    var minH = 720;
    try {
        minH = $foot.offset().top + $foot.height() + 40;        
    } catch (e) {}
    var $w = $(window);
    var wCurr = $w.width();
    var hCurr = $w.height();
    var w, h;
    if (wCurr < minW) {
        w = minW;
    }
    if (hCurr < minH) {
        h = minH;
    }
    if (w || h) {
        return {
            width: w || wCurr, 
            height: h || hCurr
        };
    }
},
adjustToMinSize = function () {
    $('.container').wrap('<div id="resize-calc-wrap"></div>');
    $('#resize-calc-wrap').css({position: 'absolute', top:0, left:0});
    var contentW = $('#resize-calc-wrap').width();
    var contentH = $('#resize-calc-wrap').height();
    var noScrollbarsGutter = 200;
    
    window.resizeTo(contentW + noScrollbarsGutter, contentH + noScrollbarsGutter);
    var actualH = $(window).height();
    var actualW = $(window).width();
    var trueYAdd = contentH + noScrollbarsGutter - actualH;
    var trueXAdd = contentW + noScrollbarsGutter - actualW;
    
    var magicXAdd = 120;
    var magicYAdd = 30;
    $('#resize-calc-wrap').removeAttr('style'); //We don't need to remove the wrapper    
    window.resizeTo(contentW + trueXAdd + magicXAdd, contentH + trueYAdd + magicYAdd);
    
    $(window).focus();
},*/
addBrowserInfo = function () {
    /*There is a small difference in rendering between
     Firefox 3.5 and 3.6. Lets add a class that discriminates between them.
     Given a 3.5, we could do add all these dynamically: le6 le7 and eq5 gt4 gt3
     but we don't need that precision now.
     instead we add the classes ua-firefox and major-le3 and minor-le5 to the body tag. 
     */
        
    var x = /Firefox\/([0-9])\.([0-9])/.exec(window.navigator.userAgent);
    if (x && x.length === 3) {
        var mi = "", ma = "",
        major = parseInt(x[1], 10),
        minor = parseInt(x[2], 10);
        if (minor <= 5) {
            mi = "minor-le5"; 
        }
        if (minor <= 1) {
            mi = mi + " minor-le1"; 
        }
        if (major <= 3) {
            ma = "major-le3";
        }
        $('body').addClass('ua-firefox').addClass(mi).addClass(ma);
    }
},
geoSuggestIDD = function () {
    var getCountry = function () {
        if (window.google) {
            if (google.loader.ClientLocation) {
                var country = google.loader.ClientLocation.address &&
                     google.loader.ClientLocation.address.country_code;
                if (!country && window.location.host === "localhost:8080") {
                    country = "SE"; //For debugging
                }
                if (country && window.IDD) {
                    iddSuggest = IDD[country];
                }
            }
        }
    };
    window.loadSomething = function () {
        //google.load("maps", "2", {"callback" : getCountry});
        getCountry();
    };
    function initLoader() {
        var script = document.createElement("script");
        script.src = "http://www.google.com/jsapi?key=ABQIAAAAdHTiJLoxQ7n6qDw1jrbuBhSWs3v45_RXLJW-2j4isfKUnGC-qBRUtqDKCPUFW_WEILDSEe0IcLLrGQ&callback=loadSomething";
        script.type = "text/javascript";
        document.getElementsByTagName("head")[0].appendChild(script);
    }
    if (window.IDD) {
        initLoader();
    }
},
fixDescription = function () {
    $('#page-description').hide();
}
// Two entry point functions to be called at document ready from respective page
commonPages = function () {
    //really common
    addBrowserInfo();    
    linksInNewWindow();
    ellipsisForFirefox();
    //common for bookmarklet-enabled pages
    cancelBookmarkletLink();
    ieBookmarkletLink();
    //adjustToMinSize();
    ieBorderRadius();
},
thanksPage = function () {
    fixLogOutButton();
    addCloseButton();    
    commonPages();
},
justSignedUp = thanksPage,
bookmarkPage = function () {
    fixLogOutButton();
    rearrangeOptionHtml();
    commonPages();
    enterTriggers();
},
addPage = commonPages,
landingPage = function () {
	fixDescription(); 
	setupSignUpFormLogic();
    fixLogOutButton();
    rearrangeOptionHtml();
    addHelpTexts('form');
    commonPages();
    enterTriggers();
},
loginPage = function () {
	fixDescription();
    //fixLogOutButton();
	setupSignUpFormLogic();
	if($.browser.msie)
		$("#drag-this").css("margin-top","70px");
    commonPages();
},

panel = null,

createClientSelection = function() {
	var content  = '<div class="devices-landing-page"><a href="http://labs.squace.com/android" target="_blank" class="android-link"></a> <a href="http://labs.squace.com/blackberry" target="_blank" class="blackberry-link"></a> <a href="http://labs.squace.com/iphone" target="_blank" class="iphone-link"></a> <a href="http://labs.squace.com/java" target="_blank" class="java-link"></a></div>'+
	'<p>Check out <a href="http://labs.squace.com" target="_blank">Squace Labs</a> for news.</p>';
	if(!panel)
		panel = new ConfirmationPopUp({TYPE: "OK", message: $(content), title: "Do you have any of those?", okAction: function() { $("#download-button").unbind("click"); $("#download-button").click(); panel.hide(); }, labels: {ok: "Or continue with the download", no: "Cancel"}});
	panel.show();
};

overrideSaveFunction = function() {
	var downloadButton = $("#download-button");
	downloadButton.click(function(event) {
		event.stopPropagation();
		if(!downloadButton.is(".inactive"))
			createClientSelection();
	});
},

landingPageNoAuth = function () {
    fixDescription();        
    //switchSubmitButtonToSignedInLink($('#landingpage-no-auth-log-in-submit'), $('#sign-in-landingpage-no-auth'));    
    fixLogOutButton();
    addHelpTexts('form');
    setupSignUpFormLogic();
    geoSuggestIDD();
    commonPages();
    $("#sign-in-landingpage-no-auth").show();
    //overrideSaveFunction();
};

/**
 * Implements the buttons and controls to manage the bundles from the landing page
 * @author José Fernández Alameda
 */
function BundlesControls() {
	var bundles = new Bundles(null,null);
	$("#bundles-buttons").append(bundles.newBundleButton.getHtml());
	bundles.bundleAddedAction = function(data) {
		
		bundles.bundleCreationPanel.enableButtons();
		$(bundles.bundlePopUpContent.find("#ajax-loader")).hide();
		
		var collection = $.parseJSON(data).output.new_collection;
		$("#select-category").prepend('<option value="'+collection.id+'">'+collection.name+'</option>');
		bundles.bundleCreationPanel.hide();
		$("#category-buttons-container").empty();
		rearrangeOptionHtml();
	};
}

function StyleButtons() {
	var button = $("#add-button");
	var dropDown = new Dropdown({label: 'Save', dropdown: false, callback: function() { 
		button.click();
	}});
	button.hide();
	dropDown.getHtml().addClass("right");
	button.after(dropDown.getHtml());
}

function resizeScrollBox() {
	var box = $("#scroll-box");
	box.css("height",$(window).height()+"px");
	box.css("width",$(window).width()+"px");
}

$(document).ready(function () {
	if(!$.browser.msie) {
	$(window).bind("resize", resizeScrollBox);
	resizeScrollBox();
	}
	else
		$("#scroll-box").attr("style","");
    var id = idOf($('body')),
    jmpTbl = {
        'thanks-page': thanksPage,
        'bookmark-page': bookmarkPage,
        'add-page': addPage,
        'landing-page-no-auth': landingPageNoAuth,
        'landing-page': landingPage,
        'landing-page-just-signed-up': justSignedUp,
        'login-page': loginPage
    };
    if (id) {
        jmpTbl[id]();
    }
    StyleButtons();
    BundlesControls();
    //Horrible, to make it work on IE
    $("input[type=text]").css("border","#bbb 1px solid");
    $("input[type=text]").css("background-color","white");
    if($.browser.msie && $.browser.version == "7.0")
    	$("#drag-this IMG").css("margin-left","340px");
});
//eof




