/********************************************************
For more info & download: http://www.ibegin.com/labs/ibox/
Created for iBegin.com - local search done right
MIT Licensed Style
*
* Modified by mrrena.com
*********************************************************/
var indicatorImgPath = '/images/indicator.gif',
    indicatorImgHTML = '<img name="ibox_indicator" src="' + indicatorImgPath + '" alt="Loading..." style="width:128px;height:128px" />',
    defaultHeight = '400',
    defaultWidth = '500',
    contentDivLength = '',
    ua = navigator.userAgent,
    isMSIE = (ua.indexOf('MSIE ') !== -1);

function getElementsByClassName(node, classname) {
    if (node.getElementsByClassName) { // use native implementation if available
        return node.getElementsByClassName(classname);
    }
    else {
        return (function getElementsByClass(searchClass,node) {
            if (!node) {
                node = document;
            }
            var classElements = [],
                elms = node.getElementsByTagName('*'),
                elmsLength = elms.length,
                pattern = new RegExp('(^|\\s)' + searchClass + '(\\s|$)'), i, j;

            for (i = 0, j = 0; i < elmsLength; i++) {
                if (pattern.test(elms[i].className)) {
                    classElements[j] = elms[i];
                    j++;
                }
            }
            return classElements;
        })(classname, node);
    }
}

function initIbox() {
    contentDivLength = 0;
    var divs = document.getElementsByTagName('div');
    for (var g = 0, tl = divs.length - 1; g < tl; g++) {
        if (divs[g].getAttribute('class') == 'tdiv' || divs[g].getAttribute('className') == 'tdiv') {
            divs[g].id = 't' + contentDivLength;
            contentDivLength++;
        }
    }
    var rel = 'rel',
        elmWrapper = 'ibox';
    createIbox(document.getElementsByTagName('body')[0]);
    var testimonies = getElementsByClassName($('main'), 'testimony'),
        anchorEl = null,
        gg = 0,
        finalLength = testimonies.length,
        t = 'ibox';
    for (var i = 0; i < finalLength; i++) {
        anchorEl = testimonies[i].getElementsByTagName('a')[0];
        anchorEl.href = '#t' + gg;
        anchorEl.id = 'c' + gg;
        gg++;
        anchorEl.onclick = function() { //rather assign an onclick event
            params = parseQuery(t.substr(5));
            var url = this.href;
            if (this.target != '') {
                url = this.target;
            }
            var caption = this.title;
            showBG();
            showIbox(url, caption, params); // show ibox
            window.onscroll = maintPos;
            window.onresize = maintPos;
            return false;
        };
    }
}

showBG = function() {
    var boxW = $('ibox_w'),
        opacity_level = 9;
    boxW.style.opacity = 0;
    boxW.style.filter = 'alpha(opacity=0)';
    setBGOpacity = setOpacity;
    for (var i = 0; i <= opacity_level; i++) {
        setTimeout('setIboxOpacity("ibox_w",' + i + ')', 90 * i);
    } // from quirksmode.org
    boxW.style.display = 'block';
    var pagesize = new getPageSize(),
        scrollPos = new getScrollPos(),
        ua = navigator.userAgent;
    if (isMSIE) {
        boxW.style.width = pagesize.width + 'px';
    }
    else {
        boxW.style.width = pagesize.width - 20 + 'px';
    }
    boxW.style.height = pagesize.height + scrollPos.scrollY + 'px';
    selectVisibility('hidden');
};

/* Scrollbar hiding by Heidi http://liquidlead-art.com/ */
selectVisibility = function(v) {
    var selectElems = document.getElementsByTagName('select');
    for (var i = 0; i < selectElems.length; ++i) {
        selectElems[i].style.visibility = v;
    }
};

hideBG = function() {
    var boxW = $('ibox_w');
    boxW.style.display = 'none';
    selectVisibility('visible');
};
var loadCancelled = false;

showIndicator = function() {
    var ibox_p = $('ibox_progress');
    ibox_p.style.display = '';
    posToCenter(ibox_p);
    ibox_p.onclick = function() {
        hideIbox();
        hideIndicator();
        loadCancelled = true;
    };
};

hideIndicator = function() {
    var ibox_p = $('ibox_progress');
    ibox_p.style.display = 'none';
    ibox_p.onclick = null;
};

createIbox = function(elm) {
    var strHTML = '<div id="ibox_w" style="display:none"></div>';
    strHTML += '<div id="ibox_progress" style="display:none">';
    strHTML += indicatorImgHTML;
    strHTML += '</div>';
    strHTML += '<div id="ibox_wrapper" style="display:none">';
    strHTML += '<div id="ibox_footer_wrapper">';
    strHTML += '<div  style="float:right;clear:right;_margin-right:-5px"><a id="ibox_close_a" href="javascript:void(0)"></a></div>';
    strHTML += '<div id="ibox_footer" style="float:left;clear:left">&nbsp;</div><div style="clear:both"></div></div>';
    strHTML += '<div id="ibox_content"></div>';
    strHTML += '<div id="prev_next"><b><a id="prev" style="float:left;clear:left" href="javascript:void(0)"></a><a id="next" style="float:right;clear:right" href="javascript:void(0)"></a></b></div></div>\
    </div></div>';
    var docBody = document.getElementsByTagName('body')[0],
        ibox = document.createElement('div');
    ibox.setAttribute('id', 'ibox');
    ibox.style.display = '';
    ibox.innerHTML = strHTML;
    elm.appendChild(ibox);
};
var iboxWHeight = 0;

showIbox = function(url, caption, params) {
    var ibox = $('ibox_wrapper');
    var iboxType = 0;
    var iboxFooter = $('ibox_footer');
    if (caption != '') {
        iboxFooter.innerHTML = caption;
    }
    else {
        iboxFooter.innerHTML = '&nbsp;';
    }
    url = url.toLowerCase();
    // file checking code borrowed from thickbox
    var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt/g;
    var urlType = url.match(urlString);
    var newHeight = (isMSIE) ? (defaultHeight * 1 + 20) : defaultHeight;
    var newWidth = (isMSIE) ? (defaultWidth * 1 + 20) : defaultWidth;
    if (urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif') {
        iboxType = 0;
        showIndicator();
        var imgPreloader = new Image();
        imgPreloader.onload = function() {
            imgPreloader = resizeImageToScreen(imgPreloader);
            hideIndicator();
            $('ibox_content').style.overflow = 'hidden';
            var strHTML = '<a href="javascript:void(null)"><img name="ibox_img" src="' + url + '" style="width:' + imgPreloader.width + 'px;height:' + imgPreloader.height + 'px;border:0"/></a>';
            if (loadCancelled == false) {
                ibox.style.height = imgPreloader.height + 'px';
                ibox.style.width = imgPreloader.width + 'px';
                ibox.style.display = '';
                ibox.style.visibility = 'hidden';
                posToCenter(ibox);
                ibox.style.visibility = 'visible';
                setIBoxContent(strHTML);
            }
        };
        loadCancelled = false;
        imgPreloader.src = url;
    }
    else if (url.indexOf('#') !== -1) {
        var strHTML = '';
        iboxType = 1;
        ibox.style.height = (params['height']) ? params['height'] + 'px' : newHeight + 'px';
        ibox.style.width = (params['width']) ? params['width'] + 'px' :  + newWidth + 'px';
        ibox.style.display = '';
        ibox.style.visibility = 'hidden';
        posToCenter(ibox);
        ibox.style.visibility = 'visible';
        var elmSrcId = url.substr(url.search(/#/) + 1);
        var elemSrc = $(elmSrcId);
        if (elemSrc) {
            strHTML = elemSrc.innerHTML;
        }
        setIBoxContent(strHTML);
    }
    else if (urlType == '.htm' || urlType == '.html' || urlType == '.php' || urlType == '.asp' || urlType == '.aspx' || urlType == '.jsp' || urlType == '.jst' || urlType == '.rb' || urlType == '.txt' || urlType == '.cfm') {
        iboxType = 2;
        showIndicator();
        http.open('get', url, true);
        http.onreadystatechange = function() {
            if (http.readyState == 4) {
                hideIndicator();
                ibox.style.height = (params['height']) ? params['height'] + 'px' : newHeight + 'px';
                ibox.style.width = (params['width']) ? params['width'] + 'px' : newWidth + 'px';
                ibox.style.display = '';
                ibox.style.visibility = 'hidden';
                posToCenter(ibox);
                ibox.style.visibility = 'visible';
                var response = http.responseText;
                setIBoxContent(response);
            }
        };
        http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        http.send(null);
    }
    var wrap = $('ibox_wrapper');
    var prev = $('prev');
    var next = $('next');
    var preID = parseInt(elmSrcId.substr(elmSrcId.search(/t/) + 1));
    var prevId = preID - 1;
    var nextId = preID + 1;
    var prevTitle = (prevId >= 0) ? $('c' + prevId).title : '';
    var nextTitle = (nextId < contentDivLength) ? $('c' + nextId).title : '';
    prev.onclick = (prevId >= 0) ? function() { showIbox('#t' + prevId, prevTitle, '');} : '';
    prev.innerHTML = (prevId >= 0) ? '&#171; Prev' : '';
    next.onclick = (nextId < contentDivLength) ? function() {showIbox('#t' + nextId, nextTitle, '');} : '';
    next.innerHTML = (nextId < contentDivLength) ? 'Next &#187;' : '';
    if (!(document.compatMode && typeof XMLHttpRequest == 'undefined')) {
        wrap.style.paddingBottom = (prevId || nextId) ? '50px' : '30px';
    }
    ibox.style.opacity = 0;
    ibox.style.filter = 'alpha(opacity=0)';
    var ibox_op_level = 10;
    setIboxOpacity = setOpacity;
    for (var i = 0; i <= ibox_op_level; i++) {
        setTimeout('setIboxOpacity("ibox_wrapper",' + i + ')', 30 * i);
    }
    if (iboxType == 1 || iboxType == 2) {
        ibox.onclick = null;
        $('ibox_close_a').onclick = function() {
            hideIbox();
        };
        $('ibox_w').onclick = function() {
            hideIbox();
        };
    }
    else {
        ibox.onclick = hideIbox;
        $('ibox_close_a').onclick = null;
    }
};

setOpacity = function(elmId, value) {
    var element = $(elmId);
    element.style.opacity = value / 10;
    element.style.filter = 'alpha(opacity=' + value * 10 + ')';
    //~ for(i=0;i<document.getElementsByTagName('div').length;i++){
    //~ if (document.getElementsByTagName('div').item(i).className=='flash'){
    //~ document.getElementsByTagName('div').item(i).style.display='none'}
    //~ }
};

resizeImageToScreen = function(objImg) {
    var pagesize = new getPageSize();
    var x = pagesize.width - 100;
    var y = pagesize.height - 100;
    if (objImg.width > x) {
        objImg.height = objImg.height * (x / objImg.width);
        objImg.width = x;
        if (objImg.height > y) {
            objImg.width = objImg.width * (y / objImg.height);
            objImg.height = y;
        }
    }
    else if (objImg.height > y) {
        objImg.width = objImg.width * (y / objImg.height);
        objImg.height = y;
        if (objImg.width > x) {
            objImg.height = objImg.height * (x / objImg.width);
            objImg.width = x;
        }
    }
    return objImg;
};

maintPos = function() {
    var ibox = $('ibox_wrapper');
    var boxW = $('ibox_w');
    var pagesize = new getPageSize();
    if (ua.indexOf('MSIE ') != -1) {
        boxW.style.width = pagesize.width + 'px';
    }
    else {
        boxW.style.width = pagesize.width - 20 + 'px';
    }
    if (ua.indexOf('Opera/9') != -1) {
        boxW.style.height = document.body.scrollHeight + 'px';
    }
    else {
        boxW.style.height = document.body.scrollHeight + 50 + 'px';
    }
    posToCenter(ibox);
};

hideIbox = function() {
    hideBG();
    var ibox = $('ibox_wrapper');
    ibox.style.display = 'none';
    clearIboxContent();
    window.onscroll = null;
    //~ for(i=0;i<document.getElementsByTagName('div').length;i++){
    //~ if(document.getElementsByTagName('div').item(i).className=='flash'){
    //~ document.getElementsByTagName('div').item(i).style.display='block';
    //~ }
    //~ }
};

posToCenter = function(elm) {
    var scrollPos = new getScrollPos();
    var pageSize = new getPageSize();
    var elmSize = new getElementSize(elm);
    var x = Math.round(pageSize.width / 2) - (elmSize.width / 2) + scrollPos.scrollX;
    var y = Math.round(pageSize.height / 2) - (elmSize.height / 2) + scrollPos.scrollY;
    elm.style.left = x + 'px';
    elm.style.top = y + 'px';
};

getScrollPos = function() {
    var docElm = document.documentElement;
    this.scrollX = self.pageXOffset || (docElm && docElm.scrollLeft) || document.body.scrollLeft;
    this.scrollY = self.pageYOffset || (docElm && docElm.scrollTop) || document.body.scrollTop;
};

getPageSize = function() {
    var docElm = document.documentElement;
    this.width = self.innerWidth || (docElm && docElm.clientWidth) || document.body.clientWidth;
    this.height = self.innerHeight || (docElm && docElm.clientHeight) || document.body.clientHeight;
};

getElementSize = function(elm) {
    this.width = elm.offsetWidth || elm.style.pixelWidth;
    this.height = elm.offsetHeight || elm.style.pixelHeight;
};

setIBoxContent = function(str) {
    clearIboxContent();
    var element = $('ibox_content');
    element.innerHTML = str;
    element.style.overflow = 'auto';
    if (ua.indexOf('MSIE 6') !== -1 || ua.indexOf('MSIE 5') !== -1) {
        if (params['height']) {
            element.style.height = params['height'] + 'px';
        }
        else {
            element.style.height = '400px';
        }
        if (params['width']) {
            element.style.width = params['width'] + 'px';
        }
        else {
            element.style.width = '500px';
        }
    }
};
clearIboxContent = function() {
    var element = $('ibox_content');
    element.innerHTML = '';
    element.style.overflow = 'hidden';
};

$ = function(id) {
    return document.getElementById(id);
};

// parseQuery code borrowed from thickbox, Thanks Cody!
parseQuery = function(query) {
    var params = {};
    if (!query) return params;
    var pairs = query.split(/[;&]/);
    for (var i = 0; i < pairs.length; i++) {
        var keyVal = pairs[i].split('=');
        if (!keyVal || keyVal.length != 2) continue;
        var key = unescape(keyVal[0]);
        var val = unescape(keyVal[1]);
        val = val.replace(/\+/g, ' ');
        params[key] = val;
    }
    return params;
};

/********************************************************
 Make this IE7 Compatible ;)
 http://ajaxian.com/archives/ajax-on-ie-7-check-native-first
*********************************************************/
createRequestObject = function() {
    if (typeof XMLHttpRequest == 'undefined') {
        XMLHttpRequest = function () {
            try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); }
                catch (e) {}
            try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); }
                catch (e) {}
            try { return new ActiveXObject('Microsoft.XMLHTTP'); }
                catch (e) {}
            //Microsoft.XMLHTTP points to Msxml2.XMLHTTP and is redundant
            throw new Error('This browser does not support XMLHttpRequest.');
        };
        XMLHttpRequest();
    }
};
var http = createRequestObject();

function addEvent(obj, evType, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(evType, fn, false);
        return true;
    }
    else if (obj.attachEvent) {
        var r = obj.attachEvent('on' + evType, fn);
        return r;
    }
    else {
        return false;
    }
}
addEvent(window, 'load', initIbox);

