﻿//define global variable
var xmlHTTP;
//var xDoc;
var isIE = true;
var xmlUrl = "/Registration/GeoChange.ashx?";
var id;
var name; 
var oneNode; 
var doc; 
var dom;
var status;

var control = "country";
var state_id = 0;
var city_id = 0;
var data;
    
// confirm browser supports needed features  and init ActiveXObject
function verifySupport()
{
    if (document.implementation && document.implementation.createDocument)
    {
        // this is the W3C DOM way, supported so far only in NN6+
        xDoc = document.implementation.createDocument("", "", null);
        
        if (window.XMLHttpRequest)
        {
            // Mozilla, Safari,...
            xmlHTTP = new XMLHttpRequest();
            if (xmlHTTP.overrideMimeType)
            {
                xmlHTTP.overrideMimeType('text/xml');
            }
        }
        isIE = false;
    }
    else if (window.ActiveXObject)
    {
        // IE
        try
        {
            xmlHTTP = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {}
         }
         
        //XMLDocument
        xDoc = new ActiveXObject("Msxml.DOMDocument");
    }
    //if (xDoc && typeof xDoc.load != "undefined")
    if (xDoc)
    {
        return true;
    }
    else
    {
        var reply = confirm("Requires a browser with XML support, such as IE5+/Windows or Netscape 6+.\n \nGo back to previous page?");
        if (reply)
        {
            history.back();
        }
    }
    return false;
}

function sentRegistrationData(languageId,fieldName,xml)
{
    var error  = "";
   
    if (verifySupport())
    {
        var url = "/Registration/ValidationCheck.ashx?LanguageId=" + languageId + "&FieldName=" + fieldName;
        xmlHTTP.open("POST",url, false);
        xmlHTTP.setRequestHeader("Content-Type", "text/xml");
        xmlHTTP.send(xml);
        if(xmlHTTP.status == 200 && xmlHTTP.readyState == 4)
	    {
	        error = xmlHTTP.responseText;
	    }
    }
    return error;
}
//transform and return html string.
function getXMLData(t,countrycode,statecode,languageid)
{
    if (verifySupport())
    {
        return transformXml(t,countrycode,statecode,languageid);
    }
}
function transformXml(t,countrycode,statecode,languageid)
{
    xmlUrl2= xmlUrl+"t="+t+"&countrycode="+countrycode+"&statecode="+statecode+"&languageid="+languageid+"&s="+Math.random();
    
    //rcvdXMLContents is the callback function
    xmlHTTP.onreadystatechange = rcvdXMLContents;
    
    xmlHTTP.open("GET",xmlUrl2, true);
    xmlHTTP.send(null);
}

function rcvdXMLContents()
{
  var html;
  if (xmlHTTP.readyState == 4)
  {
     if (xmlHTTP.status == 200)
     {
        //LoadXML for IE & Firefox 
        if(isIE)
        {
            data = xmlHTTP.responseXML.getElementsByTagName("geochange")[0]
            status=data.getElementsByTagName("status")[0].text;
            
            FillControl();
        }
        else
        {
            //html = xmlHTTP.responseText;
            
            //var DOM = new DOMParser();
            //var DOMdoc = DOM.parseFromString(html,"text/xml");
            //data  = DOMdoc.documentElement;
            //status=data.getElementsByTagName("status")[0].textContent;
            
            data = xmlHTTP.responseXML.documentElement;
            status=data.getElementsByTagName("status")[0].textContent;

            FillControl();
        }
     }
     else
     {
        //This messgaetext should come from database
        //alert('error');
     }
  }
}

function FillControl()
{
    if(control == "country")
    {
        var doc1
        doc = document.getElementById(state_id);
        doc.length=0; 
        
        //Clear City Selection
        doc1=document.getElementById(city_id);
        doc1.length=0;  
        document.getElementById("GeoCityDiv").style.display="none";   
        
        
        if(status=="1")
        {
            document.getElementById("GeoStateDiv").style.display="";
            
            var dominsert=data.getElementsByTagName("states")[0];
            InsertOption(doc,dominsert);        
        } 
        else if(status=="0")
        {
            var doc2=document.getElementById(cityid);
            doc2.length=0; 
            var dominsert=data.getElementsByTagName("cities")[0];
            InsertOption(doc2,dominsert);
        }
    }
    else if(control == "state")
    {
        var dominsert=data.getElementsByTagName("cities")[0];
        InsertOption(doc,dominsert);
    }
}

function GeoChangeCountry(countrycode,languageid,stateid,cityid)
{
    control = "country";
    state_id = stateid
    city_id = cityid;
    
    if(status=="1")
    {
        document.getElementById("GeoStateDiv").style.display="";        
    } 
    else if(status=="0")
    {
        document.getElementById("GeoStateDiv").style.display="none";
        document.getElementById("GeoCityDiv").style.display=""; 
    }
    
    getXMLData(1,countrycode,0,languageid);
}

function GeoChangeState(statecode,languageid,countryid,stateid,cityid)
{
    control = "state";
    
    //Clear City Selection 
    var countrycode=document.getElementById(countryid).value;
    var statecode=document.getElementById(stateid).value;
    doc=document.getElementById(cityid);
    doc.length=0;
    if (countrycode > 1 && statecode > 1)
    {
        document.getElementById("GeoCityDiv").style.display="";		
        getXMLData(0,countrycode,statecode,languageid);        
    }
    else
    {
        document.getElementById("GeoCityDiv").style.display="none"; 
    }   
}


// Insert Selection in DropDownList
function InsertOption(doci,docinserti)
{
    //Check browser type
    if(isIE)
    {
        for (i = 0; i < docinserti.childNodes.length; i++)
        {
            oneNode = docinserti.childNodes[i];
            id=oneNode.childNodes[0].text;
            name=oneNode.childNodes[1].text;
            doci.options.add(new Option(name,id));
         }
    }
    else
    {
         for (i = 0; i < docinserti.childNodes.length; i++)
        {
            oneNode = docinserti.childNodes[i];
            id=oneNode.childNodes[0].textContent;
            name=oneNode.childNodes[1].textContent;
            doci.options.add(new Option(name,id));
         }
    }
}

//CheckStateStatus&CheckCityStatus used in postback action to check status
function CheckStateStatus(statecode, div) 
{
    if (document.getElementById(statecode).length > 0) 
        document.getElementById(div).style.display = "";
    else 
        document.getElementById(div).style.display = "none";
}

function CheckCityStatus(statecode, citycode, div)
{
    if (document.getElementById(statecode).length > 0) 
    {
        var statecode = document.getElementById(statecode).value;
        if (statecode > 1) 
        {
            if (document.getElementById(citycode) != null) 
            {
                if (document.getElementById(citycode).length > 0) 
                {
                    document.getElementById(div).style.display = "";
                }
            }
        }
    }
}