var popupCfg = {'popup':'width=800,height=580'};

$A(document.getElementsByTagName('a')).each(function(obj){ 
    if (popupCfg[obj.target]) obj.onclick = function() { window.open(this.href, this.target, popupCfg[obj.target], true); }
});

var elementArgs;

function SelectMediaItem(sender, args) 
{
    var pageType = args.PageType;
    
    var match = /^https?:\/\/[^\/]+(\/[^\/]{2}\/[^\/]{2}).+$/.exec(window.location);
    var prefix = (match == null) ? '' : match[1];
        
    var win = window.open(prefix + "/Templates/MediaBrowser.aspx?mediaType="+args.MediaFileType + "&pageType=" + pageType + '&culture=' + args.Culture,null,"height=540,width=630,status=yes,toolbar=no,menubar=no,location=no");
    win.focus();
    this.elementArgs = args;
    return false;
}

function selectedItem(sender, args) {

    if (elementArgs.AllowFlash)
    {
        var isFlash = args.Url.indexOf(".swf") != -1;
        if(isFlash==true) 
        {
            var flashSwf = eval(elementArgs.SwfObjectName);       
            flashSwf.addVariable("flashSrc", args.Url);
            flashSwf.write(this.elementArgs.ContainerId);
        }
        else 
        {
            var container = document.getElementById(this.elementArgs.ContainerId);
            
            var width = parseInt(this.elementArgs.Width),
                height = parseInt(this.elementArgs.Height);
            
            var img = '<img src="'+args.Url+'" ';
            if (!(isNaN(width) || width == 0)) img += 'width="'+width+'" ';
            if (!(isNaN(height) || height == 0)) img += 'height="'+height+'" ';
            img += ' />';
            
            container.innerHTML = img;
        }
    }
    else
    {
        var container = document.getElementById(this.elementArgs.ImageId);
        container.src = args.Url;
    }
    var control = document.getElementById(this.elementArgs.ControlId);
    control.value = args.ContentId;
    
    control = document.getElementById(this.elementArgs.UrlControlId);
    control.value = args.Url;

}

function createChildElement(parentNode, childNode) {
    parentNode.appendChild(childNode);
}

///
//Mimic left and right functions
//for string manipulation
///
function left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

String.prototype.trim = function () {
  return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};

///
//Provide access to the querystring as 
//name-value pairs, Adam Vandenberg
///
function Querystring(qs) {
	this.params = new Object();
	this.get=querystring_get;
	if (qs == null)
		qs=location.search.substring(1,location.search.length);
	if (qs.length == 0) return;
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&');
	for (var i=0;i<args.length;i++) {
		var value;
		var pair = args[i].split('=')
		var name = unescape(pair[0])

		if (pair.length == 2)
			value = unescape(pair[1])
		else
			value = name
		
		this.params[name] = value
	}
}

function querystring_get(key, default_) {
	if (default_ == null) default_ = null;
	var value=this.params[key]
	if (value==null) value=default_;
	
	return value
}

function toggleElementDisplayType(elementID) {
    var element = $(elementID);
    if(element.style.display == "block") {
       element.style.display = "none"; 
    }
    else {
       element.style.display = "block";
    }
}

function ClearDefault(el) {
  if (el.defaultValue==el.value) el.value = "";
}


function openPopUp() {
  window.open("popup.aspx",'PopUp','width=800,height=600,menubar=0,toolbar=0,location=0,directories=0,scrollbars=1,status=0,resizable=0');
}

function createModalOverlay(form) {
    var disableDiv;
    var cancelLink;
    var contentArea;

    contentArea = $('contentArea');
    disableDiv = $('disableDiv');
    cancelLink = $('cancel');
    
    if (!$chk(disableDiv)) {
        disableDiv = new Element('div', {
                'id': 'disableDiv'
            });
    }
    
    if (!$chk(cancelLink)) {
        cancelLink = new Element('a', {
                'id': 'cancel'
            });
        cancelLink.innerText = 'Click here to return to the page you were on';
    }
    else {
        cancelLink.removeEvents('click');
    }

    cancelLink.addEvent('click', function(){return toggleForm(false, form)});

    disableDiv.appendChild(cancelLink);

    var contentAreaSize = contentArea.getSize();
    disableDiv.setStyle('height', contentAreaSize.size.y+'px'); 
    cancelLink.setStyle('height', contentAreaSize.size.y+'px'); 

    return disableDiv;
}

var sideNavWorking = false;

function toggleForm(show, form, pageType) {

    if (sideNavWorking) {
        return false;
    }
    
    var mainDiv;
    var disableDiv;
    var subNav;
    var formMode;
    var flashNav;
    var formAlreadyVisible = false;
    
    formMode = $('formMode');
    mainDiv = $('main');
    subNav = $('subNav');

    if ($chk(mainDiv) && $chk(subNav) && $chk(formMode)) {
        
        if (show && $('formMode').value != '' && $('formMode').value == form) {
            return false;
        }

        disableDiv = createModalOverlay(form);
        
        formAlreadyVisible = $('formMode').value != '' && $('formMode').value != form;

        $('formMode').value = show ? form : '';

        formToToggle = $(form);

        if ($chk(formToToggle)) {
            var startOpacity = 0;
            var endOpacity = 0;
            var startWidth = 24;
            var endWidth = 294;
            
            if (form == 'registrationForm') {
                var iFrame;
                
                if ($(iFrameId) == null) {
                    var frameSrc = '';

                    if (registrationUrl != null && show) {
                        frameSrc = registrationUrl;
                        
                        if (navigator.userAgent.indexOf('Firefox') > -1 && pageType != null && pageType == 'timeline') {
                            frameSrc += '?pgtyp=timeline';
                        }
                    }

                    iFrame = new Element('iframe', {
                            'id': iFrameId,
                            'src': frameSrc,
                            'frameborder': '0'
                        });

                    $('registrationFormMid').appendChild(iFrame);
                    
                    if (navigator.userAgent.indexOf("MSIE") > -1 && !iFrame.getProperty('allowtransparency')) {
                        iFrame.allowTransparency = true;
                    }
                }
                else {
                    iFrame = $(iFrameId);
                }
                
                iFrame.setStyle('visibility', show ? 'visible' : 'hidden');
            }

            if (show) {
                $('contentArea').appendChild(disableDiv);

                endOpacity = 0.88;

                $('loginForm').setStyle('display', form == 'registrationForm' ? 'none' : 'block');
                $('registrationForm').setStyle('display', form != 'registrationForm' ? 'none' : 'block');
                
                var trackingString = form != 'registrationForm' ? '/login/form.flashPage' : '/registration/form.flashPage';
                pageTracker._trackPageview(trackingString);
            }
            else {
                startOpacity = 0.88;
                
                endWidth = startWidth;
                startWidth = subNav.getStyle('width');
                
                window.setTimeout(
                    function() {
                        if ($chk(disableDiv)) disableDiv.remove(); 
                        if ($chk('cancelLink')) $$('cancelLink').remove(); 
                    }, 1250);
            }
            
            if (!formAlreadyVisible) {
                if ($chk(disableDiv)) {
                    var fxModalise = new Fx.Style(disableDiv, 'opacity', {
                            duration: 750, 
                            transition: Fx.Transitions.Quart.easeInOut
                        });
                    fxModalise.start(startOpacity, endOpacity);
                }

                var fxSlide = new Fx.Style(subNav, 'width', {
                        duration: 750, 
                        transition: Fx.Transitions.Quart.easeInOut,
                        onStart: function() {sideNavWorking = true;},
                        onComplete: function() {sideNavWorking = false;}
                    });

                fxSlide.start(startWidth, endWidth);
                
                if (show && !wmode) {
                    setFlashWidth(show, wmode);
                }
                else if (!wmode) {
                    setTimeout(function() {setFlashWidth(show, wmode);}, 750);
                }
            }
                        
            if (show) {
                if (form == 'loginForm') {
                    var txtBoxes = $$('#loginForm input.text');
                    for (var i = 0; i < txtBoxes.length; i++) {
                        if (txtBoxes[i].value) {
                            txtBoxes[i].value = '';
                        }
                    }

                    var errorLabels = $$('#loginForm span.invalidInput');
                    for (var i = 0; i < errorLabels.length; i++) {
                        errorLabels[i].style.display = 'none';
                    }
                                    
                    setTimeout(function() {$(loginFocus).focus();}, 500);
                }
                else {
                    var frameObj;

                    frameObj = window.frames[0];
                    
                    if (frameObj) {
                         setTimeout(function() {frameObj.setFocus()}, 750);
                    }
                }
            }
                        
            return false;
        }
    }
    else {
        return true;
    }
}

function setFlashWidth(show, wmode) {
    if ($chk('flashNav') && $chk('flash')) {
        $('flash').setAttribute('width', show ? '694' : '960');
        $('flashNav').style.width = show ? '694px' : '960px';
    }
}

//Stops Used on Flash nav
function urlRequest(url,target)
{
    try {       
        var popup = window.open( url, target );            
        
        if ( popup == null )
            return false;
    
        if ( window.opera )
            if (!popup.opera)
                return false;
    } 
    catch(err) {
        return false;
    }
    
    return true;
}

function maskInput(e, type) {
    
    var keyCode;

    if(window.event) {
        keyCode = e.keyCode;
    }
    else if (e.which) {
        keyCode = e.which;
    }
    
    if (keyCode == null || keyCode == undefined) {
        return true;
    }

    switch (type) {
        case 1:
            // characters, spaces, backspace
            return (keyCode > 96 && keyCode < 123) || 
                (keyCode > 64 && keyCode < 91) || 
                (keyCode > 126 && keyCode < 152) || 
                (keyCode > 152 && keyCode < 155) || 
                (keyCode > 159 && keyCode < 166) || 
                keyCode == 8 || 
                keyCode == 32;
            break;
        case 2:
            // numbers, spaces, the plus symbol, backspace
            return (keyCode > 47 && keyCode < 58) || keyCode == 8 || keyCode == 32 || keyCode == 43;
            break;
        case 3:
            // characters, numbers, backspace and spaces.
            return (keyCode > 96 && keyCode < 123) || 
                (keyCode > 64 && keyCode < 91) || 
                (keyCode > 126 && keyCode < 152) || 
                (keyCode > 152 && keyCode < 155) || 
                (keyCode > 159 && keyCode < 166) || 
                (keyCode > 47 && keyCode < 58) || 
                keyCode == 8 || 
                keyCode == 32;
            break;
    }
}

function inputRequired(source, args) {
    args.IsValid = args.Value != '';
}

function loginComplete() {
    window.location = window.location;
    return false;
}

function setCookie(name, value, expiry) {
    var cookie = name + '=' + value + (expiry != null ? ';expires=' + expiry : '')
    document.cookie = cookie;
}

function getCookie(name) {
    if (document.cookie.length > 0) {
        var cookieStart = document.cookie.indexOf(name+"=");
        
        if (cookieStart > -1) {
            var cookieEnd = document.cookie.indexOf(";", cookieStart);
            if (cookieEnd == -1) {
                cookieEnd = document.cookie.length;
            }
            
            return document.cookie.substring(cookieStart, cookieEnd);
        }
    }
    
    return null;
}

function deleteCookie(name) {
    var cookie = getCookie(name);
    
    if (cookie != null) {
        var d = new Date();
        
        document.cookie = cookie + ';expires=' + d.toString();
    }
}

function padString(str, len) {
    if (str.length >= len) {
        return str;
    }
    else {
        for (var i = 0; i < len - str.length; i++) {
            str = "0" + str;
        }
        
        return str;
    }
}

/*** Flash JS ***/
var flashFailedTimeout = null;
var _isFlashPage = false;
var _fullWidthFlash = false;
var _flashWidth = "100%";
var _flashVersionRequired = {"major": "9", "minor": "0", "rev": "28"};
var _flashVersionOk = true;
var pageHeight = "100%";

function showFlashSection(deeplink, rootURL, isFlashPage, fullWidthFlash, wmode, navEnabled, isPostback) {
    
    var _flashVersion = deconcept.SWFObjectUtil.getPlayerVersion();
    
    var userFlash = _flashVersion.major.toString() + padString(_flashVersion.minor.toString(), 3) + padString(_flashVersion.rev.toString(), 3);
    var reqFlash = _flashVersionRequired.major.toString() + padString(_flashVersionRequired.minor.toString(), 3) + padString(_flashVersionRequired.rev.toString(), 3);
    
    _flashVersionOk = parseInt(userFlash) >= parseInt(reqFlash);
    _isFlashPage = isFlashPage;
    _fullWidthFlash = fullWidthFlash;
    
    var returnValue = false;
    
    var flashWidth = "100%";
    
    if (!isFlashPage) {
        var pageDiv = $('page');
        if ($chk(pageDiv)) {
            var pageSize = pageDiv.getSize();
            pageHeight = pageSize.size.y + 'px';
        }
    }
    else if (!_fullWidthFlash) {
        if (!wmode && isPostback) {
            flashWidth = "694";
        }
        else {
            flashWidth = "960";
        }

        pageHeight = "500";
    }

    var so = new SWFObject("/assets/flash/site/sunsilkapp.swf", "flash", flashWidth, pageHeight, _flashVersionRequired.major + "." + _flashVersionRequired.minor + "." + _flashVersionRequired.rev, "#000000" );
    
    so.addVariable("rootURL", rootURL);
    so.addVariable("link", deeplink);
    so.addVariable("baseContentURL", baseContentUrl );
    so.addVariable("navEnabled", navEnabled);
    so.useExpressInstall('/assets/flash/expressinstall.swf');
    so.setAttribute('xiRedirectUrl', window.location);

    if (wmode) {
        so.addParam("wmode", "transparent" );
    }
    
    so.addParam("base", "/" );

    flashFailedTimeout = setTimeout(onFlashFailed, 3000);

    var flashLoaded = so.write("flashNav" );

    /* Fixed JS error in IE for Flash that uses ExternalInterface
    /* http://kb.adobe.com/selfservice/viewContent.do?externalId=kb400730&sliceId=1 */
    if (isFlashPage && !window.flash) {
        window.flash = document.forms[0].flash;
    }
    
    if (!flashLoaded) {
        clearTimeout(flashFailedTimeout);
        showHtmlNav(true);
        showHtmlContent(true);
    }
    else
    {
        returnValue = true;
        showHtmlNav(false);
        showHtmlContent(!isFlashPage);
    
        if (isFlashPage)  {
            var contentArea = $('contentArea');
            if ($chk(contentArea)) {
                var pageSize = contentArea.getSize();
                pageHeight = pageSize.size.y + 'px';
            }
        }
    }
    
    if (_flashVersionOk) {
        contractFlash(pageHeight);
    }
    
    return returnValue;
}

function flashUpgradeFinished(status) {
    contractFlash(pageHeight);
}

function onFlashLoaded() {
    clearTimeout(flashFailedTimeout);
    delete flashFailedTimeout;
    document.addEvent('mousemove', updateNavPos);
    showHtmlContent(!_isFlashPage);
    showHtmlNav(false);
}

function onFlashFailed() {
    showHtmlContent(true);
    showHtmlNav(true);
}

function showHtmlContent(show) {
    if ($('main') != null) {
        $('main').style.visibility = (show) ? 'visible' : 'hidden'
        $('main').style.display = (show) ? 'block' : 'none'
    }
}

function showHtmlNav(show) {
    if ($('mainNav') != null) {
        $('mainNav').style.display=(show) ? 'block' : 'none';
    }
}

function expandFlash() {
    var flashMovie = document.getElementById( "flashNav" );
    flashMovie.style.width = _flashWidth;
}

function contractFlash(pageHeight) {
    var flashMovie = document.getElementById( "flashNav" );
    flashMovie.style.width = "24px";
    flashMovie.style.height = pageHeight;
}

function updateNavPos( e ) { 
    var flashMovie = document.getElementById( "flash" );
    if (flashMovie) {
        if (flashMovie.setMouseY) {
        
	        var mouse = getMouseCoordinates(e);
    	    
            flashMovie.setMouseY(mouse.y);
        }
    }
}

function getMouseCoordinates(e) {
    var posx = 0;
    var posy = 0;
    if (!e) var e = window.event;
    if (e.pageX || e.pageY)
    {
	    posx = e.pageX;
	    posy = e.pageY;
    }
    else if (e.clientX || e.clientY)
    {
        var xScroll;
        var yScroll;
        
        if (document.documentElement.scrollLeft >= 0) {
            xScroll = document.documentElement.scrollLeft;
            yScroll = document.documentElement.scrollTop;
        }
        else if (document.body.scrollLeft >= 0) {
            xScroll = document.body.scrollLeft;
            yScroll = document.body.scrollTop;
        }
        else {
            xScroll = window.pageXOffset;
            yScroll = window.pageYOffset;
        }
        
	    posx = e.clientX + xScroll;
	    posy = e.clientY + yScroll;
    }
    
    return {"x": posx, "y": posy};
}
