/*--------------------------------------------------------------------------*
 *
 *  heightLine JavaScript Library beta4
 *
 *  MIT-style license.
 *
 *  2007 Kazuma Nishihata
 *  http://www.webcreativepark.net
 *
 *--------------------------------------------------------------------------*/
/* ブロックレベル要素の高さを揃える */

function heightLine(){

    this.className="heightLine";
    this.parentClassName="heightLineParent"
    reg = new RegExp(this.className+"-([a-zA-Z0-9-_]+)", "i");
    objCN =new Array();
    var objAll = document.getElementsByTagName ? document.getElementsByTagName("*") : document.all;
    for(var i = 0; i < objAll.length; i++) {
        var eltClass = objAll[i].className.split(/\s+/);
        for(var j = 0; j < eltClass.length; j++) {
            if(eltClass[j] == this.className) {
                if(!objCN["main CN"]) objCN["main CN"] = new Array();
                objCN["main CN"].push(objAll[i]);
                break;
            }else if(eltClass[j] == this.parentClassName){
                if(!objCN["parent CN"]) objCN["parent CN"] = new Array();
                objCN["parent CN"].push(objAll[i]);
                break;
            }else if(eltClass[j].match(reg)){
                var OCN = eltClass[j].match(reg)
                if(!objCN[OCN]) objCN[OCN]=new Array();
                objCN[OCN].push(objAll[i]);
                break;
            }
        }
    }

    //check font size
    var e = document.createElement("div");
    var s = document.createTextNode("S");
    e.appendChild(s);
    e.style.visibility="hidden"
    e.style.position="absolute"
    e.style.top="0"
    document.body.appendChild(e);
    var defHeight = e.offsetHeight;

    changeBoxSize = function(){
        for(var key in objCN){
            if (objCN.hasOwnProperty(key)) {
                //parent type
                if(key == "parent CN"){
                    for(var i=0 ; i<objCN[key].length ; i++){
                        var max_height=0;
                        var CCN = objCN[key][i].childNodes;
                        for(var j=0 ; j<CCN.length ; j++){
                            if(CCN[j] && CCN[j].nodeType == 1){
                                CCN[j].style.height="auto";
                                max_height = max_height>CCN[j].offsetHeight?max_height:CCN[j].offsetHeight;
                            }
                        }
                        for(var j=0 ; j<CCN.length ; j++){
                            if(CCN[j].style){
                                var stylea = CCN[j].currentStyle || document.defaultView.getComputedStyle(CCN[j], '');
                                var newheight = max_height;
                                if(stylea.paddingTop)newheight -= stylea.paddingTop.replace("px","");
                                if(stylea.paddingBottom)newheight -= stylea.paddingBottom.replace("px","");
                                if(stylea.borderTopWidth && stylea.borderTopWidth != "medium")newheight-= stylea.borderTopWidth.replace("px","");
                                if(stylea.borderBottomWidth && stylea.borderBottomWidth != "medium")newheight-= stylea.borderBottomWidth.replace("px","");
                                if (newheight < 0) {
                                    newheight = 0
                                }
                                CCN[j].style.height =newheight+"px";
                            }
                        }
                    }
                }else{
                    var max_height=0;
                    for(var i=0 ; i<objCN[key].length ; i++){
                        objCN[key][i].style.height="auto";
                        max_height = max_height>objCN[key][i].offsetHeight?max_height:objCN[key][i].offsetHeight;
                    }
                    for(var i=0 ; i<objCN[key].length ; i++){
                        if(objCN[key][i].style){
                            var stylea = objCN[key][i].currentStyle || document.defaultView.getComputedStyle(objCN[key][i], '');
                                var newheight = max_height;
                                if(stylea.paddingTop)newheight-= stylea.paddingTop.replace("px","");
                                if(stylea.paddingBottom)newheight-= stylea.paddingBottom.replace("px","");
                                if(stylea.borderTopWidth && stylea.borderTopWidth != "medium")newheight-= stylea.borderTopWidth.replace("px","")
                                if(stylea.borderBottomWidth && stylea.borderBottomWidth != "medium")newheight-= stylea.borderBottomWidth.replace("px","");
                                if (newheight < 0) {
                                    newheight = 0
                                }
                                objCN[key][i].style.height =newheight+"px";
                        }
                    }
                }
            }
        }
    }

    checkBoxSize = function(){
        if(defHeight != e.offsetHeight){
            changeBoxSize();
            defHeight= e.offsetHeight;
        }
    }
    changeBoxSize();
    setInterval(checkBoxSize,1000)
    window.onresize=changeBoxSize;
}


