/* –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
 * Copyright © 2009 by Chris Holland <topher@topherdigital.com> All Rights Reserved
 * –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
 * 
 * TDX XHTML Dynamic Library System
 * ---------------------------------------------------------------------------------
 * tdxKernel
 *
 * 
 */

var tdxC = {
    bC : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    bTimer : 0,
    scriptNum : 0,
    
    sD : function(objName,objDisplay) {
        obj = document.getElementById(objName);
        if (obj) {
            obj.style.display = objDisplay;
        }
    },
    sDG : function(objID,tagName,objDisplay) { obj = document.getElementById(objID); objGroup = document.getElementsByTagName(tagName); if (objGroup) { for (i=0;i<objGroup.length;i++) { obj = objGroup.item(i); if (obj.id.substr(0,objID.length) == objID) { obj.style.display = objDisplay; } } } },
    tD : function(objID,mode1,mode2) { this.obj = document.getElementById(objID); if (this.obj) { objDisplay = this.obj.style.display; if (objDisplay == mode1) { this.obj.style.display = mode2; } else { this.obj.style.display = mode1; } } },
    tS : function(objID,mode1,mode2) { 
    	this.obj = document.getElementById(objID); 
    	if (this.obj) { 
    		regex = new RegExp('/[^/]+$','i');
    		objSrc = regex.exec(this.obj.src);
    		mode1Src = regex.exec(mode1);
    		mode2Src = regex.exec(mode2);
    		if (objSrc[0] == mode1Src) { 
    			this.obj.src = mode2; 
    		} else { 
    			this.obj.src = mode1;
    		} 
    	} 
    },
    
    tDG : function(objID,tagName,mode1,mode2) { objGroup = document.getElementsByTagName(tagName); masterSet = "_"; if (objGroup) { for (var i=0;i<objGroup.length;i++) { obj = objGroup.item(i); if (obj.id.substr(0,objID.length) == objID) { if (masterSet != '_') { obj.style.display = masterSet; } if (obj.style.display == mode1) { obj.style.display = mode2; } else { obj.style.display = mode1; } } } } },
    
    // Load Animation
    lA : function(placeId,objId,count,imgSrc) { 
    	obj = document.getElementById(objId); 
    	if (obj) { 
    		offset = this.findOffset(obj,count); 
    		div = document.createElement('div'); 
    		div.style.backgroundImage = "url('/img/fade.png')"; 
    		div.style.position = 'absolute'; 
    		div.style.top = (offset.dy - 4) + 'px'; 
    		div.style.left = offset.dx + 'px'; 
    		div.style.width = obj.clientWidth + 'px'; 
    		div.style.height = obj.clientHeight + 'px'; 
    		div.id = 'loading_' + obj.id; 
    		div.innerHTML = '<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=' + obj.clientWidth + ' HEIGHT=' + obj.clientHeight + '><TR><TD ALIGN=CENTER VALIGN=MIDDLE><IMG SRC="' + imgSrc + '"></TD></TR></TABLE>'; 
    		div = document.getElementById(placeId).appendChild(div); 
    	} 
    },
    
    dD : function(objId) { oldScript = document.getElementById(objId); if (oldScript) { oldParent = oldScript.parentNode; oldScript = oldParent.removeChild(oldScript); oldScript = null; } },

    setCenteredDimensions : function(objName,w,h) {
        obj = document.getElementById(objName);
        if (obj) {
            marginH = Math.round(w / 2);
            marginV = Math.round(h / 2);
            obj.style.width = w + "px";
            obj.style.height = h + "px";
            obj.style.marginLeft = "-" + marginH + "px";
            obj.style.marginTop = "-" + marginV + "px";
        }
    },

    getLayout : function(objID) {
    	// Get absolute left, top, width, and height of object
    },
    
    findOffset : function(obj,count) {
    	var offset = { dx : 0, dy : 0, dt : 0 };
    	count--;
        offset.dx += obj.offsetLeft;
        offset.dy += obj.offsetTop;
        offset.dt += "[" + obj.nodeName + "] : " + obj.offsetLeft + "x" + obj.offsetTop + "  " + obj.offsetWidth + "w " + obj.offsetHeight + "h  \n";
        //alert('1:' + obj.id + '  2:' + stopId);
        if (count > 0) {
	        if (obj.offsetParent) {
	            parentOffset = this.findOffset(obj.offsetParent,count);
	            offset.dx += parentOffset.dx;
	            offset.dy += parentOffset.dy;
	            offset.dt += parentOffset.dt;
	        }
        } 
        return offset;
    },
    poS : function() { this.sD('tdxFO','block'); }, 
    poH : function() { this.sD('tdxFO','none'); }, 
    
    ftq : function(fName) { var query = ''; formObj = document.forms[fName]; if (!formObj) { return ''; } for (var i=0;i<formObj.elements.length;i++) { query += formObj.elements[i].name + "=" + encodeURIComponent(formObj.elements[i].value) + "&"; }return query; },
    
    P : function(action,formName,additional) {
    	this.scriptNum++;
        script = document.createElement('script');
        postData = this.ftq(formName) + additional;
        script.setAttribute('src','/tdx.php?tdxCa=' + action + '&tdxCp=' + encodeURIComponent(this.b64E(postData)) );
        script.setAttribute('id','tdxC_'+this.scriptNum);
        script.setAttribute('language','Javascript');
        script.setAttribute('type','text/javascript');
        pageHead = document.getElementsByTagName('head').item(0);
        pageHead.appendChild(script);
        setTimeout("tdxC.dD('tdxC_"+this.scriptNum+"')",60000);
    },

    O : function(objID,uri) {
    	this.scriptNum++;
        script = document.createElement('script');
        script.setAttribute('src','/tdx.php?tdxCn=' + objID + '&tdxCu=' + encodeURIComponent(this.b64E(uri)) );
        script.setAttribute('id','tdxC_'+this.scriptNum);
        script.setAttribute('language','Javascript');
        script.setAttribute('type','text/javascript');
        pageHead = document.getElementsByTagName('head').item(0);
        pageHead.appendChild(script);
        setTimeout("tdxC.dD('tdxC_"+this.scriptNum+"')",60000);
    },
    
    dO : function(objID, uri, delay) { queryCode = "tdxC.O('" + objID + "','" + uri + "')"; setTimeout(queryCode,delay); },
    
    b64E : function(rawdata) {
        var res = ''; var c1,c2,c3,b1,b2,b3,b4; var i = 0;
        while(i<rawdata.length){c1=rawdata.charCodeAt(i++);c2=rawdata.charCodeAt(i++);c3=rawdata.charCodeAt(i++);b1=c1>>2;b2=((c1&3)<<4)|(c2>>4);b3=((c2&15)<<2)|(c3>>6);b4=c3&63;if(isNaN(c2)){b3=b4=64;}else if(isNaN(c3)){b4=64;}res=res+this.bC.charAt(b1)+this.bC.charAt(b2)+this.bC.charAt(b3)+this.bC.charAt(b4);}
        return res;
    },

    b64D : function(b64data) {
        var res = ''; var c1,c2,c3,b1,b2,b3,b4; var i = 0; b64data = b64data.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < b64data.length) { b1=this.bC.indexOf(b64data.charAt(i++)); b2=this.bC.indexOf(b64data.charAt(i++)); b3=this.bC.indexOf(b64data.charAt(i++)); b4=this.bC.indexOf(b64data.charAt(i++)); c1 = (b1<<2)|(b2>>4); c2 = ((b2&15)<<4)|(b3>>2); c3 = ((b3&3)<<6)|b4; res = res + String.fromCharCode(c1); if (b3 != 64) { res = res + String.fromCharCode(c2); } if (b4 != 64) { res = res + String.fromCharCode(c3); } }
        return res;
    }
}



