/*
        ÀÛ¼º : ¹é½Â°Ç
        ³¯Â¥ : 2008.09.23
        cmt : ¸±·¹ÀÌ.
        »ç¿ë¹æ¹ý:
                1. ÆûÀÇ ¸±·¹ÀÌ : ·Î±×ÀÎÆäÀÌÁö, È¸¿ø°¡ÀÔÆäÀÌÁö µî, ¼­¹ö·Î º¸³»´Â µ¥ÀÌÅ¸¸¦ ¾ÏÈ£È­¸¦ ¿øÇÏ´Â °æ¿ì
                        ÆûÀÌ ÀÖ´Â ÆäÀÌÁöÀÇ ÇÏ´Ü¿¡
                        <script src='https://login.simplexi.com/builder/relay.js?form=ÆûÀÌ¸§¸®½ºÆ®'></script> ¸¦ »ðÀÔ
                        ÆûÀÌ¸§ ¸®½ºÆ®´Â "," ¸¦ ±¸ºÐÀÚ·Î ÇÑ´Ù.
                        (example)
                        <html>
                        <body>
                        <form name='frm' id='frm' method="post" action='https://host.com/join_ok.php'>
                        ¾ÆÀÌµð: <input type='text' name='id' /><br />
                        ºñ¹Ð¹øÈ£: <input type='password' name='passwd' /><br />
                        <input type='submit' value='·Î±ä' />
                        </form>
                        <script src='https://login.simplexi.com/builder/relay.js?form=frm'></script>
                        </body>
                        </html>
                2. ÆäÀÌÁöÀÇ ¸±·¹ÀÌ : È¸¿øÁ¤º¸¼öÁ¤ÆäÀÌÁö¿Í °°ÀÌ ¼­¹ö·Î ºÎÅÍ °¡Á®¿À´Â Á¤º¸¸¦ ¾ÏÈ£È­ÇÏ±â¸¦ ¿øÇÏ´Â °æ¿ì
                        HTTP_RELAYED ¼­¹ö º¯¼ö°¡ ¾øÀ» °æ¿ì
                        <script src='https://login.simplexi.com/builder/relay.js?page'></script>
                        ¸¸ Ãâ·ÂÇÏ°í ±×·¸Áö ¾ÊÀº ¿ø·¡ÀÇ ÆäÀÌÁö¸¦ Ãâ·ÂÇÑ´Ù.
                        (example)
                        <php
                        session_start();
                        if(!$_SERVER['HTTP_RELAYED'])
                        {
                                echo "<script src='https://login.simplexi.com/builder/relay.js?page'></script>";
                                exit;
                        }
                        php>
                        <html>
                        <body>
                        <form name='frm' id='frm' enctype="multipart/form-data" method="post" action='https://host.com/edit_ok.php'>
                        ¾ÆÀÌµð: <input type='text' name='id' value="<?=$_SESSION['id']?>"><br />
                        ºñ¹Ð¹øÈ£: <input type='password' name='passwd' value="<?=$_SESSION['passwd']?>" /><br />
                        ÀüÈ­¹øÈ£: <input type="text" name="tel" value="123421" /><br />
                        ÀÌ¹ÌÁö: <input type="file" name="img" /><br />
                        <input type='submit' value='¼öÁ¤' />
                        </form>
                        <script src='https://login.simplexi.com/builder/relay.js?form=frm'></script>
                        </body>
                        </html>
*/

function CRelay()
{
        CRelay.RELAY_URI = "https://blogin.simplexi.com/builder/relay.php";
        CRelay.SESSION_COOKIE = "PHPSESSID";
        CRelay.m_instance = this;
        this.m_cookies = '';

        this.init = function()
        {
		this.validateCookie();
                this.processInitialCommand();
        }

        this.relayForm = function(frm)
        {
		if(frm.name == 'com_member_login' || frm.name == 'com_formmail') {
			var cookie = document.cookie;
//                	this.m_cookies = cookie;
			if(cookie == '') {
				this.validateCooike();
			}
			else {
				this.m_cookies = cookie;
			}
		}

                var originURI = this.getFullPath(frm.action);
		var inputObj = document.createElement('input');
		inputObj.id = 'originURI';
                inputObj.name = 'originURI';
                inputObj.type = 'hidden';
                inputObj.value = originURI;
                frm.appendChild(inputObj);
                inputObj = document.createElement('input');
                inputObj.name = 'originCookie';
                inputObj.type = 'hidden';
                inputObj.value = decodeURIComponent(this.m_cookies);
                frm.appendChild(inputObj);
                frm.action = CRelay.RELAY_URI;
        }

	this.gwRelayForm = function(frm)
        {
                if(frm.name == 'gw_login_form') {
                        var cookie = document.cookie;
//                      this.m_cookies = cookie;
                        if(cookie == '') {
                                this.validateCooike();
                        }
                        else {
                                this.m_cookies = cookie;
                        }
                }

                var originURI = this.getFullPath(frm.action);
		var inputObj = document.createElement('input');
                inputObj.name = 'originURI';
                inputObj.type = 'hidden';
                inputObj.value = originURI;
                frm.appendChild(inputObj);
                inputObj = document.createElement('input');
                inputObj.name = 'originCookie';
                inputObj.type = 'hidden';
                inputObj.value = decodeURIComponent(this.m_cookies);
                frm.appendChild(inputObj);
                frm.action = CRelay.RELAY_URI;
        }

        this.relayPage = function(page)
        {
                var src = CRelay.RELAY_URI+"?originURI="+encodeURIComponent(this.getFullPath(page)) +
                                        "&originCookie="+this.m_cookies +
                                        "&originReferer="+encodeURIComponent(document.referrer);
                document.write("<script src='"+src+"'></script>");
        }

        this.validateCookie = function()
        {
		 var query = null;
                for(var i = 0; i < document.getElementsByTagName('script').length; i++)
                {
                        var script = document.getElementsByTagName('script').item(i);
                        if(script.processed) continue;
                        var src = script.src;
                        var file = src.lastIndexOf("/") == -1 ? src : src.substring(src.lastIndexOf("/")+1);
                        if(file.indexOf("relay.js") == 0)
                        {
                                query = file.substring(8);
                                script.processed = true;
                                break;
                        }
                }
                if(!query || query.charAt(0) != "?") return;

                this.query = query.substring(1);
                var queries =this. query.split("&");
                for(var i = 0; i < queries.length; i++)
                {
			var keyNValue = queries[i].split("=");

                        //cookie
                        if(keyNValue[0] == "aCookie" && keyNValue[1]) {
	                    var cookie = keyNValue[1];
        	            this.m_cookies = cookie;
                	    break;
                        }
                }

		if(this.m_cookies == '') {
                    var cookie = document.cookie;
                    this.m_cookies = cookie;
                }

        }

        this.processInitialCommand = function()
        {
                var queries =this.query.split("&");
                for(var i = 0; i < queries.length; i++)
                {
                        var keyNValue = queries[i].split("=");
                        if(keyNValue[0] == "form" && keyNValue[1])
                        {
                                var relayForms = keyNValue[1].split(",");
                                for(var j = 0; j < relayForms.length; j++)
                                {
                                        var relayForm = document.getElementById(relayForms[j]);
                                        if(!relayForm) relayForm = document.getElementsByName(relayForms[j])[0];
                                        if(relayForm) this.relayForm(relayForm);
                                }
                        }
                        else if(keyNValue[0] == "page")
                        {
                                if(keyNValue[1])
                                {
                                        var relayPages = keyNValue[1].split(",");
                                        for(var j = 0; j < relayPages.length; j++)
                                                this.relayPage(relayPages[j]);
                                }
                                else this.relayPage(this.getFullPath(null));
                        }
                }
        }

        this.getFullPath = function(path)
        {
                if(!path) path = document.location.href;
                else if(path.charAt(0) == "/")
                        path = document.location.protocol+"//"+document.location.host+path;
                else if(path.indexOf("http://") != 0 &&
                                path.indexOf("https://") != 0)
                        path = document.location.href.substring(0,document.location.href.lastIndexOf("/")+1)+path;
                return path;
        }
}
gRelay = new CRelay();
gRelay.init();
