﻿var directoryXml;
var directoryArray;
var dsDirectories = new Spry.Data.XMLDataSet("CastoData.asmx/GetDirectories", "/listings/listing", { method: "POST", useCache:false, sortOnLoad: "storeName", sortOrderOnLoad: "ascending" });
var curDirectoryFilter = "all";
var curDirectoryFilterElement = null;

var directoryTableObs = { onPostUpdate: function(notifier, data) {  updateSortColumns(); } };

var pvDirectories = new Spry.Data.PagedView(dsDirectories, { pageSize: 25 });
var pvDirectoriesPagedInfo = pvDirectories.getPagingInfo();

var directoryFilter = function(dataSet, row, rowNumber)
{
    if(curDirectoryFilter == "all"){
        return row;
    }else{    
	    if (row["storeName"].charAt(0).toLowerCase() == curDirectoryFilter)
		    return row; // Return the row to keep it in the data set.
		else
	        return null; // Return null to remove the row from the data set.
	}
}

function closeForm(directoryPanel){
    directoryPanel.onTabClick(directoryPanel);
}

function addDirectory(directoryLink, directoryPanel)
{
    //showDetail("EditDirectory.aspx?height=557&width=549");
    
    var curDirectory = document.getElementById("directoryId").value;
    
    if(directoryPanel.isOpen()){
        if(curDirectory != ""){
            directoryPanel.onTabClick(directoryPanel);
        }
    }
    
    document.getElementById("pageTitle").innerHTML = "Add New Directory";
    
    populateDirectoryForm(null);
    
    var curDirectoryPanel = document.getElementById("addFormArea"); 
      
    var referenceLink = directoryLink.parentNode.parentNode.parentNode;
    
    insertAfter(referenceLink.parentNode, curDirectoryPanel.parentNode.parentNode,referenceLink);
        
    
    directoryPanel.onTabClick(directoryPanel);
}

function insertAfter(parent, node, referenceNode) {
    if(referenceNode.nextSibling) {
        parent.insertBefore(node, referenceNode.nextSibling);
    } else {
        parent.appendChild(node);
    }
}

function editDirectory(directoryLink, directoryId, directoryPanel)
{
    var curDirectory = document.getElementById("directoryId").value;
    if(directoryPanel.isOpen()){
        if(curDirectory != directoryId){
            directoryPanel.onTabClick(directoryPanel);
        }
    }
    
    document.getElementById("pageTitle").innerHTML   = "Edit Directory";
    
    populateDirectoryForm(directoryId);
    
    editDirectoryPanel = document.getElementById("addFormArea");       
    
    var referenceLink = directoryLink.parentNode.parentNode.parentNode;
    insertAfter(referenceLink.parentNode, editDirectoryPanel.parentNode.parentNode, referenceLink);              
        
    directoryPanel.onTabClick(directoryPanel);
    
}

function deleteDirectory(directoryLink,directoryId,directoryPanel)
{
    if(confirm("Are you sure you want to delete this directory?")){
        //alert(directoryId);
        var success = Spry.Utils.loadURL("GET", "Admin/DeleteDirectory.aspx?directoryId=" + directoryId, true, onDeleteDirectory, { errorCallback: onErrorCallback });                
    }    
}

function onDeleteDirectory(req){    
    updateDirectoryList(req);
}

function onErrorCallback(req){
    
    updateDirectoryList(req);
}

function populateDirectoryForm(directoryId){
    
    //reset values
    document.getElementById("addEdit").reset();
    document.getElementById("directoryId").value = "";
         
   
    if(directoryId != null){
        var matchingDirectory = dsDirectories.findRowsWithColumnValues({ "@id": directoryId},true);
        
        if(matchingDirectory!= null){
            document.getElementById("storeName").value = matchingDirectory["storeName"];
            document.getElementById("phone").value = matchingDirectory["phone"];
            document.getElementById("hours").value = matchingDirectory["hours"].replace("<br />", "\n");
            document.getElementById("hours").value = document.getElementById("hours").value.replace("<br/>", "\n");
            document.getElementById("hours").value = document.getElementById("hours").value.replace("&lt;br/&gt;", "\n");
            
            if(matchingDirectory["website"] != undefined)
                document.getElementById("tenantWebsite").value = matchingDirectory["website"];
            
            if(matchingDirectory["description"] != undefined)  
                document.getElementById("tenantDescription").value = matchingDirectory["description"];
            
            for(var i=0; i< document.getElementById("category").options.length; i++){
                 
                 if( document.getElementById("category").options[i].value == matchingDirectory["category"]){
                    document.getElementById("category").selectedIndex = i;
                 }
            }            
            document.getElementById("directoryId").value = directoryId;
        }
        
    }
}

function showDetail(href){            
    TB_show("",href);    
} 

function filterDirectories(filter){
    
    if(curDirectoryFilterElement == null){    
        curDirectoryFilterElement = document.getElementById("A1");
    }
    
    if(curDirectoryFilterElement != null)    
        curDirectoryFilterElement.className = "";
    
    curDirectoryFilterElement = filter;
    curDirectoryFilterElement.className = "selectedLink";    
            
    curDirectoryFilter = curDirectoryFilterElement.innerHTML.toLowerCase();
    
    dsDirectories.filter(directoryFilter);     
}

function getDirectorySet(pageNumber){

}

function getDirectoryList(){
    
}

function sortColumn(curLink, columnName, dataset){  
              
    dataset.sort(columnName, "toggle");   
    
}

function updateSortColumns(){

    var curSortOrder = dsDirectories.getSortOrder();
    var curSortColumn = dsDirectories.getSortColumn();
    
    if(curSortColumn == "category"){
        curSortLink = document.getElementById("sortCategory");
    }else{
        curSortLink = document.getElementById("sortName");
    }
    
    if(curSortOrder == "descending"){
        curSortLink.className = "filterLinkDesc";
    }else{
        curSortLink.className = "filterLinkAsc";
    }
    
}


function update(directoryForm){
    if(directoryForm == null)
        directoryForm = document.getElementById("addEditDirectory");
    
    document.getElementById("hours").value = document.getElementById("hours").value.replace(/\n/g, "<br/>");
    
    document.getElementById("hours").value = escapeHTML(document.getElementById("hours").value);
    
    if((document.getElementById("tenantWebsite").value.length > 0)&&(document.getElementById("tenantWebsite").value.indexOf("http://")<0)){
        document.getElementById("tenantWebsite").value = "http://" + document.getElementById("tenantWebsite").value;
    }
        
    var success = Spry.Utils.submitForm(directoryForm, updateDirectoryList, {method:'post', url:'Admin/UpdateDirectory.aspx'});
                    
    return success;


}

function updateDirectoryList(req){
    //alert(req.xhRequest.responseText)
    if(addPanel.isOpen()){
        addPanel.onTabClick(addPanel);
        
    }
    
    //DoDirectoryQuery("CastoShops.asmx/GetDirectories");   
    dsDirectories.loadData();
    //directoryRegionEdit.updateRegion();
    
}

var passwordStrength = function(value, options){

    if(value != "**************"){
        if (value.length < 6)
	        return false;
        
        if (value.match(/[a-z]/g).length < 2)
	        return false;

        
    }
    
    return true;
    
}

function GetXmlHttp()
{
    var x = null;
    try
    {
        x = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
        try
        {
            x = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e)
        {
            x = null;
        }            
    }
    
    if (!x && typeof XMLHttpRequest != "undefined")
    {
        x = new XMLHttpRequest();  
    }
    
    return x;
}
            	
function DoQuery(queryURL)
{
    try{
                     
        url = "";
        
        if(queryURL != null){
            url = queryURL;
        }
        
        //Start by getting the appropriate XMLHTTP object for the browser
        var xmlhttp = GetXmlHttp();
        
        //If we have a valid xmlhttp object
        if (xmlhttp)
        {
            xmlhttp.open("GET", url, true);  // varAsync = true;
            
            //Set the callback.  This function is called when we 
            xmlhttp.onreadystatechange = function()
            {  
                if (xmlhttp.readyState == 4)  //4 is a success
                {
                    //Server code creates javascript "on the fly" for us to
                    //execute using eval()
                    var result = xmlhttp.responseText;    
                    
                    if (window.ActiveXObject)
                    {
                        userXml=new ActiveXObject("Microsoft.XMLDOM");
                        userXml.async="false";
                        userXml.loadXML(result);
                    }
                    // code for Mozilla, Firefox, Opera, etc.
                    else
                    {
                        var parser=new DOMParser();
                        userXml=parser.parseFromString(result,"text/xml");
                        
                    } 
                    
                    alert(result)
                    //dsDirectories.addObserver(userDataObs);
                    
                    dsDirectories.loadDataIntoDataSet(userXml);
                                        
                    dsDirectories.loadData();
                                                                          
                }
            }
            
            xmlhttp.send(null);
        }
    }catch(e){
    
    }
}



function directoryInit(){           
    if(document.getElementById("directoryRegionEdit") != null)         
        Spry.Data.Region.addObserver("directoryRegionEdit", directoryTableObs);
    else
        Spry.Data.Region.addObserver("directoryRegion", directoryTableObs);
    
    dsDirectories = new Spry.Data.XMLDataSet("CastoData.asmx/GetDirectory?siteId=" + document.getElementById("siteId").value, "/listings/listing", { method: "GET", useCache:false, sortOnLoad: "storeName", sortOrderOnLoad: "ascending" });
    
    pvDirectories = new Spry.Data.PagedView(dsDirectories, { pageSize: 25 });
    pvDirectoriesPagedInfo = pvDirectories.getPagingInfo();    
    
    dsDirectories.addObserver({ onPostLoad: function() {
	    var numberOfItemsPerView = 25;
	    var rows = dsDirectories.getData();
	    var numRows = rows.length;

	    // Add some custom columns to our data set.

	    for (var i = 0; i < numRows; i++)
	    {
		    var row = rows[i];

		    // Add a 'viewStartIndex' column that indicates what view this row
		    // belongs to.

		    row.viewNumber = Math.floor(i / numberOfItemsPerView) + 1;
		    row.viewStartIndex = i - (i % numberOfItemsPerView);
		    row.prevStartIndex = row.viewStartIndex - numberOfItemsPerView;
		    row.nextStartIndex = row.viewStartIndex + numberOfItemsPerView;
	    }
    }});
    
    //DoQuery("CastoData.asmx/GetDirectory?siteId=" + document.getElementById("siteId").value);
    
}
