

vipsTools = {

    init: function() {
        //Setup the check for new messages process
        setTimeout('vipsTools.UpdateMessageStatus()', 120000);
    },
    UpdateMessageStatus: function() {
        var cboAction = $('cboaction');
        if (CboUpdate.XmlHttp.readyState == 4 || CboUpdate.XmlHttp.readyState == 0) {

            if (cboAction) {
                cboAction.value = 'updatemessagestatus';
            } else {
                cboAction = new Element('input', { name: 'cboaction', id: 'cboaction', value: 'updatemessagestatus' });
                cboAction.inject($('form1'));
            }
            CboUpdate.DoCallBack('', '');
        } else {
            setTimeout('vipsTools.UpdateMessageStatus()', 60000);
        }
    },
    CboUpdate_Complete: function(responseText, responseXML) {
        if (responseText != "") {
            var messages = $(document).getElement('div[id$=MessageStatus]');
            messages.innerHTML = responseText;
        }
        $('cboaction').value = '';

        var inboxMessages = $('inbox1_MessageStatus1_MessageStatus');
        if (inboxMessages) {
            var allLinks = inboxMessages.getElementsByTagName('a');
            if (allLinks) {
                for (var i = 0; i < allLinks.length; i++) {
                    $(allLinks[i]).addEvent('click', function(e) {
                        if (e && e.target) { linkC = e.target; }
                        if (window.event && window.event.srcElement) { linkC = window.event.srcElement }
                        if (!linkC) { return; }
                        if (linkC.tagName == 'IMG') { linkC = linkC.parentNode; }
                        var hrefArr = linkC.href.split("=");
                        if (linkC.href.indexOf('?filter') >= 1) { ApplyFilter(hrefArr[1]); }
                    });
                    $(allLinks[i]).addEvent('click', function(event) {
                        event.stop();
                    });
                }
            }
        }
        setTimeout('vipsTools.UpdateMessageStatus()', 60000);
    },
    CboUpdate_Error: function(status, statusText, responseText) {
        //alert('CboUpdate_Error:' + responseText);
    },
    autofitIframe: function(id) {
        var oFrame = document.getElementById(id);

        var myIFrame = new IFrame(id);
        if (myIFrame) {
            if ($(myIFrame.contentWindow)) {
                myIFrame.setStyle('height', $(myIFrame.contentWindow.document.body).getScrollSize().y);
                myIFrame.setStyle('width', $(myIFrame.contentWindow.document.body).getScrollSize().x);
                //once a second check the size of the iframe
                setTimeout("vipsTools.autofitIframe('" + id + "')", 1000);
            }
        }
    },
    trim: function(str, chars) {
        return vipsTools.ltrim(vipsTools.rtrim(str, chars), chars);
    },
    ltrim: function(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
    },
    rtrim: function(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
    },
    checkForFlash: function() {
        // Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
        var hasProductInstall = DetectFlashVer(6, 0, 65);

        // Version check based upon the values defined in globals
        var hasReqestedVersion = DetectFlashVer(9, 0, 0);
        //alert("hasProductInstall: " + hasProductInstall + " hasReqestedVersion: " + hasReqestedVersion);

        var fw = $("flashwarning");
        // Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
        if (hasProductInstall && !hasReqestedVersion) {
            fw.removeClass('hidden');
        } else if (hasReqestedVersion) {
            // if we've detected an acceptable version
            // embed the Flash Content SWF when all tests are passed
            fw.addClass('hidden');
        } else {  // flash is too old or we can't detect the plugin
            fw.removeClass('hidden');
        }
    }
};
// onLoad, do this!
CboUpdate = new CallBackObject();
CboUpdate.OnComplete = vipsTools.CboUpdate_Complete;
CboUpdate.OnError = vipsTools.CboUpdate_Error;
vipsTools.is = {
    init: function(navigator) {
        var platforms = this.platforms,
			ln = platforms.length,
			i, platform;

        navigator = navigator || window.navigator;

        for (i = 0; i < ln; i++) {
            platform = platforms[i];
            this[platform.identity] = platform.regex.test(navigator[platform.property]);
        }


        this.Desktop = this.Mac || this.Windows || (this.Linux && !this.Android);
        this.Tablet = this.iPad;
        this.Phone = !this.Desktop && !this.Tablet;
        this.iOS = this.iPhone || this.iPad || this.iPod;
        this.Standalone = !!window.navigator.standalone;
    },
    platforms: [{
        property: 'platform',
        regex: /iPhone/i,
        identity: 'iPhone'
    }, {
        property: 'platform',
        regex: /iPod/i,
        identity: 'iPod'
    }, {
        property: 'userAgent',
        regex: /iPad/i,
        identity: 'iPad'
    }, {
        property: 'userAgent',
        regex: /Blackberry/i,
        identity: 'Blackberry'
    }, {
        property: 'userAgent',
        regex: /Android/i,
        identity: 'Android'
    }, {
        property: 'platform',
        regex: /Mac/i,
        identity: 'Mac'
    }, {
        property: 'platform',
        regex: /Win/i,
        identity: 'Windows'
    }, {
        property: 'platform',
        regex: /Linux/i,
        identity: 'Linux'
}]
    };
    vipsTools.is.init();

    vipsTools.supports = {
        init: function() {
            var doc = document,
			div = doc.createElement('div'),
			tests = vipsTools.supports.tests,
			ln = tests.length,
			i, test;

            div.innerHTML = [
			'<div style="height:30px;width:50px;">',
				'<div style="height:20px;width:20px;"></div>',
			'</div>',
			'<div style="float:left; background-color:transparent;"></div>'
		].join('');

            doc.body.appendChild(div);

            for (i = 0; i < ln; i++) {
                test = tests[i];
                vipsTools.supports[test.identity] = test.fn.call(this, doc, div);
            }

            doc.body.removeChild(div);
        },
        OrientationChange: ((typeof window.orientation != 'undefined') && ('onorientationchange' in window)),
        DeviceMotion: ('ondevicemotion' in window),
        Touch: ('ontouchstart' in window) && (!vipsTools.is.Desktop),
        tests: [{
            identity: 'Transitions',
            fn: function(doc, div) {
                var prefix = [
						'webkit',
						'Moz',
						'o',
						'ms',
						'khtml'
					],
					TE = 'TransitionEnd',
					transitionEndName = [
						prefix[0] + TE,
						'transitionend', //Moz bucks the prefixing convention
						prefix[2] + TE,
						prefix[3] + TE,
						prefix[4] + TE
					],
					ln = prefix.length,
					i = 0,
					out = false;
                div = $(div);
                for (; i < ln; i++) {
                    if (div.getStyle(prefix[i] + "TransitionProperty")) {
                        vipsTools.supports.CSS3Prefix = prefix[i];
                        vipsTools.supports.CSS3TransitionEnd = transitionEndName[i];
                        out = true;
                        break;
                    }
                }
                return out;
            }
        }, {
            identity: 'RightMargin',
            fn: function(doc, div, view) {
                view = doc.defaultView;
                return !(view && view.getComputedStyle(div.firstChild.firstChild, null).marginRight != '0px');
            }
        }, {
            identity: 'TransparentColor',
            fn: function(doc, div, view) {
                view = doc.defaultView;
                return !(view && view.getComputedStyle(div.lastChild, null).backgroundColor != 'transparent');
            }
        }, {
            identity: 'SVG',
            fn: function(doc) {
                return !!doc.createElementNS && !!doc.createElementNS("http:/" + "/www.w3.org/2000/svg", "svg").createSVGRect;
            }
        }, {
            identity: 'Canvas',
            fn: function(doc) {
                return !!doc.createElement('canvas').getContext;
            }
        }, {
            identity: 'VML',
            fn: function(doc) {
                var d = doc.createElement("div");
                d.innerHTML = "";
                return (d.childNodes.length == 2);
            }
        }, {
            identity: 'Float',
            fn: function(doc, div) {
                return !!div.lastChild.style.cssFloat;
            }
        }, {
            identity: 'AudioTag',
            fn: function(doc) {
                return !!doc.createElement('audio').canPlayType;
            }
        }, {
            identity: 'History',
            fn: function() {
                return !!(window.history && history.pushState);

            }
        }, {
            identity: 'CSS3DTransform',
            fn: function() {
                return (typeof WebKitCSSMatrix != 'undefined' && new WebKitCSSMatrix().hasOwnProperty('m41'));
            }
        }, {
            identity: 'CSS3LinearGradient',
            fn: function(doc, div) {
                var property = 'background-image:',
					webkit = '-webkit-gradient(linear, left top, right bottom, from(black), to(white))',
					w3c = 'linear-gradient(left top, black, white)',
					moz = '-moz-' + w3c,
					options = [property + webkit, property + w3c, property + moz];

                div.style.cssText = options.join(';');

                return ("" + div.style.backgroundImage).indexOf('gradient') !== -1;
            }
        }, {
            identity: 'CSS3BorderRadius',
            fn: function(doc, div) {
                var domPrefixes = ['borderRadius', 'BorderRadius', 'MozBorderRadius', 'WebkitBorderRadius', 'OBorderRadius', 'KhtmlBorderRadius'],
					pass = false,
					i;

                for (i = 0; i < domPrefixes.length; i++) {
                    if (document.body.style[domPrefixes[i]] !== undefined) {
                        return pass = true;
                    }
                }

                return pass;
            }
        }, {
            identity: 'GeoLocation',
            fn: function() {
                return (typeof navigator != 'undefined' && typeof navigator.geolocation != 'undefined') || (typeof google != 'undefined' && typeof google.gears != 'undefined');
            }
}]
        };


        // onLoad, do this!
        $(window).addEvent('load', vipsTools.init);
        $(window).addEvent('load', vipsTools.supports.init);
