﻿var jobXml;
var jobArray;
var dsJobs = new Spry.Data.XMLDataSet("CastoData.asmx/GetJobs", "/listings/listing", { method: "POST", useCache:false, sortOnLoad: "storeName", sortOrderOnLoad: "ascending" });
var curJobFilter = "all";
var curJobFilterElement = null;

var jobTableObs = { onPostUpdate: function(notifier, data) {  updateSortColumns(); } };

var pvJobs = new Spry.Data.PagedView(dsJobs, { pageSize: 25 });
var pvJobsPagedInfo = pvJobs.getPagingInfo();

var jobFilter = function(dataSet, row, rowNumber)
{
    if(curJobFilter == "all"){
        return row;
    }else{    
	    if (row["storeName"].charAt(0).toLowerCase() == curJobFilter)
		    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(jobPanel){
    jobPanel.onTabClick(jobPanel);
}

function addJob(jobLink, jobPanel)
{
    //showDetail("EditJob.aspx?height=557&width=549");
    
    var curJob = document.getElementById("jobId").value;
    
    if(jobPanel.isOpen()){
        if(curJob != ""){
            jobPanel.onTabClick(jobPanel);
        }
    }
    
    document.getElementById("pageTitle").innerHTML = "Add New Job";
    
    populateJobForm(null);
    
    var curJobPanel = document.getElementById("addFormArea"); 
      
    var referenceLink = jobLink.parentNode.parentNode.parentNode;
    
    insertAfter(referenceLink.parentNode, curJobPanel.parentNode.parentNode,referenceLink);
        
    
    jobPanel.onTabClick(jobPanel);
}

function insertAfter(parent, node, referenceNode) {
    if(referenceNode.nextSibling) {
        parent.insertBefore(node, referenceNode.nextSibling);
    } else {
        parent.appendChild(node);
    }
}

function editJob(jobLink, jobId, jobPanel)
{
    var curJob = document.getElementById("jobId").value;
    if(jobPanel.isOpen()){
        if(curJob != jobId){
            jobPanel.onTabClick(jobPanel);
        }
    }
    
    document.getElementById("pageTitle").innerHTML   = "Edit Job";
    
    populateJobForm(jobId);
    
    editJobPanel = document.getElementById("addFormArea");       
    
    var referenceLink = jobLink.parentNode.parentNode.parentNode;
    insertAfter(referenceLink.parentNode, editJobPanel.parentNode.parentNode, referenceLink);              
        
    jobPanel.onTabClick(jobPanel);
    
}

function deleteJob(jobLink,jobId,jobPanel)
{
    if(confirm("Are you sure you want to delete this job?")){
        //alert(jobId);
        var success = Spry.Utils.loadURL("GET", "Admin/DeleteJob.aspx?jobId=" + jobId, true, onDeleteJob, { errorCallback: onErrorCallback });                
    }    
}

function onDeleteJob(req){    
    updateJobList(req);
}

function onErrorCallback(req){
    
    updateJobList(req);
}

function populateJobForm(jobId){
    
    //reset values
    document.getElementById("addEdit").reset();
    document.getElementById("jobId").value = "";
         
   
    if(jobId != null){
        var matchingJob = dsJobs.findRowsWithColumnValues({ "@id": jobId},true);
        
        if(matchingJob!= null){
            document.getElementById("storeName").value = matchingJob["storeName"];
            document.getElementById("contact").value = matchingJob["contact"];
            document.getElementById("phone").value = matchingJob["phone"];
            document.getElementById("position").value = matchingJob["position"]; 
            document.getElementById("description").value = matchingJob["description"];           
            for(var i=0; i< document.getElementById("category").options.length; i++){
                 
                 if( document.getElementById("category").options[i].value == matchingJob["category"]){
                    document.getElementById("category").selectedIndex = i;
                 }
            }            
            document.getElementById("jobId").value = jobId;
        }
        
    }
}

function showDetail(href){            
    TB_show("",href);    
} 

function filterJobs(filter){
    
    if(curJobFilterElement == null){    
        curJobFilterElement = document.getElementById("A1");
    }
    
    if(curJobFilterElement != null)    
        curJobFilterElement.className = "";
    
    curJobFilterElement = filter
    curJobFilterElement.className = "selectedLink";    
            
    curJobFilter = curJobFilterElement.innerHTML.toLowerCase();
    
    dsJobs.filter(jobFilter);     
}

function getJobSet(pageNumber){

}

function getJobList(){
    
}

function sortColumn(curLink, columnName, dataset){  
              
    dataset.sort(columnName, "toggle");   
    
}

function updateSortColumns(){
    
    var curSortOrder = dsJobs.getSortOrder();
    var curSortColumn = dsJobs.getSortColumn();
    
    if(curSortColumn == "storeName"){
        curSortLink = document.getElementById("sortName");
    }else if(curSortColumn == "position"){
        curSortLink = document.getElementById("sortPosition");
    }else{
        curSortLink = document.getElementById("sortCategory");
    }
    
    if(curSortOrder == "descending"){
        curSortLink.className = "filterLinkDesc";
    }else{
        curSortLink.className = "filterLinkAsc";
    }
    
}


function update(jobForm){
    if(jobForm == null)
        jobForm = document.getElementById("addEditJob");
    
    
    var success = Spry.Utils.submitForm(jobForm, updateJobList, {method:'post', url:'Admin/UpdateJob.aspx'});
                    
    return success;


}

function updateJobList(req){
    //alert(req.xhRequest.responseText)
    if(addPanel.isOpen()){
        addPanel.onTabClick(addPanel);
        
    }
    
    //DoJobQuery("CastoShops.asmx/GetJobs");   
    dsJobs.loadData();
    //jobRegionEdit.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)
                    //dsJobs.addObserver(userDataObs);
                    
                    dsJobs.loadDataIntoDataSet(userXml);
                                        
                    dsJobs.loadData();
                                                                          
                }
            }
            
            xmlhttp.send(null);
        }
    }catch(e){
    
    }
}

function jobInit(){                    
    if(document.getElementById("jobRegionEdit") != null)
        Spry.Data.Region.addObserver("jobRegionEdit", jobTableObs);
    else
        Spry.Data.Region.addObserver("jobRegion", jobTableObs);
        
    dsJobs = new Spry.Data.XMLDataSet("CastoData.asmx/GetJob?siteId=" + document.getElementById("siteId").value, "/listings/listing", { method: "GET", useCache:false, sortOnLoad: "storeName", sortOrderOnLoad: "ascending" });
    
    pvJobs = new Spry.Data.PagedView(dsJobs, { pageSize: 25 });
    pvJobsPagedInfo = pvJobs.getPagingInfo();    
    
    
    dsJobs.addObserver({ onPostLoad: function() {
	    var numberOfItemsPerView = 25;
	    var rows = dsJobs.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/GetJob?siteId=" + document.getElementById("siteId").value);
    
}
