Cloud9Charts API

by AntonLapshin

JavaScript

/*
*  Cloud9Charts API
*/
;(function(window){

    String.prototype.f = function() {
        var s = this, i = arguments.length;
        while (i--) { s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]); }
        return s;
    };

	var _url = 'https://www.cloud9charts.com/{0}';
    
	var _iframeTemplate = '<iframe src="{0}" name="c9login" style="border:none;width:100%;height:100%"></iframe>';
    
    var _formTemplate = 
    	'<form target="c9login" action="{0}" method="post">' +
        	'<input type="hidden" name="username" value="{1}" />' +
        	'<input type="hidden" name="password" value="{2}" />' +
    	'</form>';
        
	var _defaultViewOptions = {
		title: false,
        filter: false,
        border: false,
        setting: false,
        resize: false,
        menu: false,
        actions: false,
        drag: false
    };

    function deepExtend(out) {
    	out = out || {};

		for (var i = 1; i < arguments.length; i++) {
			var obj = arguments[i];

			if (!obj)
            	continue;

            for (var key in obj) {
                if (obj.hasOwnProperty(key)) {
                    if (typeof obj[key] === 'object')
                    	out[key] = deepExtend(out[key], obj[key]);
                    else
                    	out[key] = obj[key];
                }
            }
		}

		return out;
    };

	var _accessTypes = {
    	touchdown: {
        	render: function(options){
                var opts = deepExtend(_defaultViewOptions, options.view);
                var items = [];
                for(var name in opts){
                	var value = opts[name];
                    items.push(name + '=' + value);
                }
                var search = items.join('&');
                return _iframeTemplate.f('') + _formTemplate.f(
                    _url.f('touchdown?' + search), 
                    options.username, 
                    options.password
                );
            },
            post:...