﻿window.AI = {
    lastHeight: 0,
    frameId: '',
    frameHelper:'',

    init: function() {
        var qParams = AI.getQueryParams(window.location + '');
        if (qParams['frameid'] && qParams['framehelper'] && window.location != window.parent.location){
            AI.frameId = unescape(qParams['frameid']);
            AI.frameHelper = unescape(qParams['framehelper']);
            if (AI.frameHelper.toLowerCase().indexOf('http') != 0) {
                AI.frameHelper = 'http://' + AI.frameHelper;
            }
            setInterval(AI.tryToResizeFrame, 200);
        }
    },

    tryToResizeFrame: function() {
        var curHeight = document.body.scrollHeight;
        if (navigator.userAgent.toLowerCase().indexOf('safari') > -1 && document.documentElement && document.documentElement.scrollHeight) {
            curHeight = document.documentElement.scrollHeight;
        }
        if(curHeight != AI.lastHeight){
            var iframe = document.getElementById('as_resizer');
            if(iframe){
                document.body.removeChild(iframe);
            }
            iframe = document.createElement('iframe');
            iframe.id = 'as_resizer';
            iframe.height = 0;
            iframe.width = 0;
            iframe.frameborder = 0;
            var src = AI.frameHelper;
            src = AI.insertQueryInURL(src, 'height', curHeight);
            src = AI.insertQueryInURL(src, 'frameid', escape(AI.frameId));
            src = AI.insertQueryInURL(src, 'cacheb', escape(Math.random()));
            iframe.style.position = 'absolute';
            iframe.style.top = '-5000px';
            iframe.src = src;
            document.body.appendChild(iframe);
            AI.lastHeight = curHeight;
        }
    },

    insertQueryInURL: function(url, key, val) {
        var args = AI.getQueryParams(url);
        args[key] = val;
        var qindex = url.indexOf('?');
        var hindex = url.indexOf('#');
        var newUrl = url;
        if (qindex > -1) {
            newUrl = url.substring(0, qindex);
        } else if (hindex > -1) {
            newUrl = url.substring(0, hindex);
        }
        newUrl += '?';
        for (var prop in args) {
            newUrl += prop + '=' + args[prop] + '&';
        }
        newUrl = newUrl.substring(0, newUrl.length - 1);
        if (hindex > -1) {
            newUrl += url.substring(hindex);
        }
        return newUrl;
    },

    getQueryParams: function(url) {
        var args = {};
        var qindex = url.indexOf('?');
        var end = url.indexOf('#');
        var query;
        if (qindex > -1) {
            if (end > -1) {
                query = url.substring(qindex + 1, end);
            } else {
                query = url.substring(qindex + 1);
            }
            var pairs = query.split('&');
            for (var i = 0; i < pairs.length; i++) {
                var pos = pairs[i].indexOf("=");
                if (pos > -1) {
                    var argname = pairs[i].substring(0, pos);
                    var value = pairs[i].substring(pos + 1);
                    args[argname] = value;
                }
            }
        }
        return args;
    }
};

function addEvent(obj, type, fn) {
    if (obj.addEventListener)
        obj.addEventListener(type, fn, false);
    else if (obj.attachEvent) {
        obj["e" + type + fn] = fn;
        obj[type + fn] = function() { obj["e" + type + fn](window.event); }
        obj.attachEvent("on" + type, obj[type + fn]);
    }
}
function removeEvent(obj, type, fn) {
    if (obj.removeEventListener)
        obj.removeEventListener(type, fn, false);
    else if (obj.detachEvent) {
        obj.detachEvent("on" + type, obj[type + fn]);
        obj[type + fn] = null;
        obj["e" + type + fn] = null;
    }
}

addEvent(window,'load',AI.init);
