//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//|||||||||||||||||||||||||||AJS CMS JQUERY CODE ||||||||||||||||||||||||||||||||
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//||||||||||||||||||||||||||last modified : 27/09/2011|||||||||||||||||||||||||||
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


//=========global variable inits=================================================
var currentID = "unset";
var mhtml = "unset";
var currentParent = "unset";
var position = "static";
var cmssave = "http://www.standrewsnottm.org.uk/shared/ajscms/ajscmssave.php";
var widest = "";

//===============================================================================

//========validation routines===================================================

// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;
// normal js functions 

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through strings characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}

function ValidateForm(){
	var dt=document.frmSample.txtDate
	if (isDate(dt.value)==false){
		dt.focus()
		return false
	}
    return true
 }


//=======================end of validation routines===========================================
//=======================conversion routines==================================================
//----converts between mysql date format and display date format

  function datePHPJS(cdate,nf)
  {
  
	if(nf == "php")
	{
      olddiv = "/";
      newdiv = "-";	  
	}
  else
    {
     olddiv = "-";
     newdiv = "/";
    }
	
   parts = cdate.split(olddiv);
   return parts[2] + newdiv + parts[1] + newdiv + parts[0];
    
  }
//---------------------------------------------------------------

//---converts checkbox to 0/1-----------------------------------
function cbresult(checkbox)
{
 if($(checkbox).attr("checked") == "checked")
  {
   return '1';
  }
  else
  {
   return '0';
  }
  

}
//---------------------------------------------------------------
//========end of conversion routines==============================


//=======ajax data changing functions ===========================

function Reorder(neworder)
{
    $.ajax({
         type: "POST",
         url: cmssave,
         data: "mode=order&items=" + neworder
    });
     location.reload();
}
//-------------------------------------------------------------------
function UpdateContents( UniqueID, HTML ,dfrom,dto,publish,order)
{
    phpdfrom = datePHPJS(dfrom,"php");
    phpdto   = datePHPJS(dto  ,"php");
    
    $.ajax({
         type: "POST",
         url: cmssave,
         data: "uniqueID=" + UniqueID + "&HTML=" + HTML + "&from=" + phpdfrom + "&to=" + phpdto + "&publish=" + publish + "&order=" + order +"&mode=updatecontent"
    });
     location.reload();
}

//--------------------------------------------------------------------
function AddContents( SectionID, HTML ,dfrom,dto,publish,order)
{
    phpdfrom = datePHPJS(dfrom,"php");
    phpdto   = datePHPJS(dto  ,"php");
    $.ajax({
         type: "POST",
         url: cmssave,
         data: "SectionID=" + SectionID + "&HTML=" + HTML + "&from=" + phpdfrom + "&to=" + phpdto + "&publish=" + publish + "&order=" + order +"&mode=addcontent"
          });
     location.reload();
}
//--------------------------------------------------------------
function DeleteContents(UniqueID)
{
    $.ajax({
         type: "POST",
         url: cmssave,
         data: "mode=delete&uniqueID=" + UniqueID
    });
     location.reload();
}
//====end of ajax data changing functions =============================






$(document).ready(function(){

	$.alerts.okButton = "Yes";
	$.alerts.cancelButton = "No";

//===============================================================================
//================CONTENT FORMATING/HIGHLIGHTING=================================
//===============================================================================
//--------make buttons obvious---------------//

// fake clickables //

$(".ajscms-fb").mouseover(function()
{
$(this).css('cursor','pointer');

}
).mouseout(function()
{
$(this).css('cursor','default');

}
);




//--------------------------------------------//

$(".fdate").datepicker({ dateFormat: 'dd/mm/yy' });
	
        $(".rsection").corner("10px");
        $(".rtitle").corner("4px");
	$(".rd").corner("30px");
	$(".namewrapper").corner("6px");
	$(".fieldbox").corner("10px");
	$(".fbutton").corner("30px");
	$(".namewrapper").click(function()
	{
		 field = "#" + $(this).attr('id') + " .name";
		 $(field).focus();
	}
	);
	
	
	  $(".namewrapper").each(function()
		   {
		   $(this).css("background-color",$(this).children('.fname').css("background-color"));
		   
		   bwidth = $(this).children('.fname').width();
		   
		   $(this).width(bwidth+20);
		   } );
		   
		   $(".label").each(function()
		   {
		     if(widest < $(this).width())
			    {
				widest = $(this).width();
				}
		   });
		   
		   $(".label").each(function()
		   {
		    $(this).width(widest);
		   }
		   );
			
//--------highlighting what can be edited----------------
$(".ajscms-content-group").mouseover(function(){
$(this).css("background-color","#C5C9D9") ;
});


$(".ajscms-content-group").mouseout(function(){
$(this).css("background-color","") ;
});

//--------styling different statuss of content----------

$(".Draft").css("border","1px grey dashed");
$(".Past").css("border","1px green dotted");
$(".Future").css("border","2px blue dotted");

//--------hiding buttons when editing-------------------


function CMSbuttons(vismode)
{

   if(vismode = "hide")
   {
        $(".ajscms-content-add").hide();
        $(".ajscms-content-sort").hide();
 	$(".ajscms-cbutton-edit").hide();
        $(".ajscms-cbutton-delete").hide();
   }
   else
   {
       $(".ajscms-content-add").show();
        $(".ajscms-content-sort").show();
 	$(".ajscms-cbutton-edit").show();
        $(".ajscms-cbutton-delete").show();
  }



}
//===============================================================================
//==================END OF CONTENT FORMATING/HIGHLIGHTING========================
//===============================================================================



//===============================================================================
//========================CMS TOOLBAR SETTINGS===================================
//===============================================================================

	$(".toggle").click(function()
	{
	$title = $(this).attr('title');
	
		if($(this).hasClass('ajscms-button'))
   		{       //show content
  			$(this).addClass('ajscms-bdown').removeClass('ajscms-button');
  			$title = $title.replace("Show","Hide");
  			type = $(this).attr('id');
                        
                        if(type == 'Controls')
                             {
                                                  
                                
                               $("#Draft").click(); 
                             
                               $("#Past").click();
                              
                               $("#Future").click();
                               
                               $("#Current").click();
                               
                               
                               $(".ajscms-section-buttons").show();
                               $(".ajscms-content-buttons").show();
                             
                                
                             }
  			
                        $("[class~="+type+"]").show();
  		}
  		else
   		{
                        //hide content
	  		$(this).addClass('ajscms-button').removeClass('ajscms-bdown');
	  		$title = $title.replace("Hide","Show");
                        type = $(this).attr('id');
                        if(type == 'Controls')
                             {
                          
                               $("#Draft").click(); 
                            
                               $("#Past").click();
                            
                               $("#Future").click();
                               $(".ajscms-section-buttons").hide();
                               $(".ajscms-content-buttons").hide();
                                
                             }
  			
                        $("[class~="+type+"]").hide();
  	  	}
  	 	
  	  $(this).attr('title',$title);

	});
//===============================================================================
//=======================END OF CMS TOOLBAR SETTINGS++===========================
//===============================================================================

//============login box=======================================================

$("#ajscms-login").click(function()
{
     if($("#logstate").val() == "Log in")
     {
     		$("ajscms-loginpanel").remove();
     		$("body").append("<div id='ajscms-loginpanel'><iframe id='ajscms-loginpanel-iframe' ALLOWTRANSPARENCY='true' width='100%' height='600px' src=\'/shared/ajscms/ajscmspoplogin.php'><p>Your browser does not support iframes.</p></iframe></div>");

     		$( "#ajscms-loginpanel" ).dialog({
			width:500,
                        height:400,
			modal: true,
			show: 'slide',
                        resize: function() 
                              {

                              },
                        resizeStop: function(event, ui) 
			{
         
                       $("#ajscms-loginpanel-iframe").css('width','100%');
                       $("#ajscms-loginpanel-iframe").css('height','95%');
                       }
                                


		});
		$("#logstate").val('Log out');
		$("#ajscms-loginpanel-iframe").css('width','100%');
                $("#ajscms-loginpanel-iframe").css('height','95%');
      }
      else
      {
      		document.forms["frmLogin"].submit()
      		
      }
   

});



//================end of login box============================================

//===============================================================================
//===================SECTION BUTTONS=============================================
//==============================================================================
//++++++++++++++++++section sort button==========================================


$(".ajscms-content-sort").click(function()
		{



                $("#dialog").remove();
                $("body").append("<div id='dialog'  title='Content Order'></div>");

                $("#dialog").append("<div class='demo'>Drag and drop to change content order<hr><ul id='sortable'></ul></div>");
	
		$( "#dialog" ).dialog({
			height: 300,
			width:400,
			modal: true,
			show: 'slide'
	
		});
		
		 	
		myparentid = "#" +$(this).parent().parent().parent().attr('id');
		$('#sortable li').remove();
	        
		$(myparentid + " .ajscms-contents").each(function(index)
		  {
		        thisid =($(this).parent().attr('id'));
			litext = $(this).text().substr(0,50);		 
          		if($(this).text().length > 50)
          		{
		  		litext = litext + "...";
          		}		  
		  	li = "<li id='li-" + thisid +"' class='ui-state-default'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span>"+litext+"</li>";
	
		        $('#sortable').append(li);
			
		  }
	        );
	         
		
		$( "#dialog" ).dialog( "option", "buttons", [
    {
        text: "Update",
        click: function() { 
		 
		  var result = $('#sortable').sortable('toArray');
		  Reorder(result.toString());

          
		  
		  $(this).dialog("close");	
		
		
		}
    },{
        text: "Cancel",
        click: function() { 
		 
			$(this).dialog("close"); 
			
			
			}
    }]);
		$( "#sortable" ).sortable();
		$( "#sortable" ).disableSelection();
		
		}
		
		
		);
		
//++++++++++++++++++++end of sort button++++++++++++++++++++++++++++++++

//===section add content button ================================================
$(".ajscms-content-add").click(function(){
	sectionname = $(this).parent().parent().parent().attr('id');
	

	currentID = "div#" + $(this).parent().attr('id');
	

        afrom = "2001-04-24";
        ato = "2080-04-24";
        apublish = "1";
        aorder   = "999";
        
 	thisarea = $("#"+sectionname).append("<textarea id='ha' cols='45' rows='20' ></textarea>");
 	
 	CMSbuttons('hide');
 	position =  $(thisarea).css("position");

	$(thisarea).css({"zIndex":10,"position":"relative"});

	editbox = $("#ha").css({"height":"150"}).htmlbox(
	 {
    		toolbars:[["cut","copy","paste","separator_dots","bold",
    			   "italic","underline","strike","sub","sup","separator_dots",
    			   "undo","redo","blank","blank","blank",  
                       	   {icon:"save.png",tooltip:"Save",command:function()
                       	   	{ 
                       	   	  publish = cbresult("#Cpublish");
                       	   	  AddContents(sectionname,editbox.get_html(),$("#Cfrom").val(),$("#Cto").val(),publish,$("#Corder").val());
                       		}
                       	   },
                       	   {icon:"cancel.png",tooltip:"Close",command:function()
                       	   	{
                       	   	  publish = cbresult("#Cpublish");
                       	   	  jConfirm('<center>Save changes?</center>', 'Confirmation Dialog', function(r) 
                       	   	    {
                       	   	      if (r==true)
                       			{
                       			
                                          AddContents(sectionname,editbox.get_html(),$("#Cfrom").val(),$("#Cto").val(),publish,$("#Corder").val());
                       			
                      			}
                                      
                       		      $(currentID).css({"zIndex":1,"position":position});
                                        $(".ajscms-content-add").show();
        $(".ajscms-content-sort").show();
 	$(".ajscms-cbutton-edit").show();
        $(".ajscms-cbutton-delete").show();
                                      $("#ha").parent().parent().parent().parent().remove();
                       		     
                       		    });
                         	}
                            }
			  ],["separator_dots",
		 	  "left","center","right","justify","separator_dots","ol","ul","indent","outdent","separator_dots","link","unlink","image"],
		 	 ["code","removeformat","striptags","separator_dots","quote","hr","separator_dots",
			 {icon:"new.png",tooltip:"New",command:function(){hb_silk_icon_set_blue.set_text("<p></p>");}}
                                   
			
                         
			 
		  
	]],about:false,
           metadata:"<table><tr><td>Show from:</td><td><input type='text' name='Cfrom' id='Cfrom' class='idate' /></td><td>Show until:</td><td><input type='text' name='Cto' id='Cto' class='idate' /></td><td>Publish</td><td><input type='checkbox' class = 'itick' name='Cpublish' id='Cpublish' value='pub'></td><td>Order</td><td><input type='text' name='Corder' id='Corder' class='ino' /></td></tr></table>",
	icons:"silk",
        header:"<div style='height:28px;padding-left:10px;padding-top:3px;font-weight:bold;background:url(shared/images/tb_bar2.jpg)'>New Content<div style='float:right'><img src='shared/images/application_exit.png'></div></div>",
	skin:"green"
});

 
// populate fields in htmlbox

 if($(apublish).val() == '1')
 {
  $("#Cpublish").attr('checked',true);
 }
else
 {
$("#Cpublish").attr('checked',false);
 
 
 } 
 $("#Cfrom").val(datePHPJS(afrom,"js"));
 $("#Cto").val(datePHPJS(ato,"js"));
 $("#Corder").val(aorder);
 

	

$(".idate").datepicker({ dateFormat: 'dd/mm/yy' });
	

	});
$("#Cfrom").change(function()
 {
  $("#Cto").datepicker( "option", "minDate",$("#Cfrom").val() );
 
 
 });	

//++++++++++++++++++++end of add button++++++++++++++++++++++++++++++++++++++++++

//===============================================================================
//======================END OF SECTION BUTTONS===================================
//===============================================================================

//===========================================================================
//==============CONTENT BUTTONS =============================================
//===========================================================================

//++++++++++++++++++++edit button+++++++++++++++++++++++++++++

$(".ajscms-cbutton-edit").click(function(){
	currentParent = $(this).parent().parent().attr('id');
	
	currentID = "div#" + $(this).parent().parent().attr('id') + " .ajscms-contents";
	mhtml = $(currentID).html();

        afrom = "#" +currentParent + "_from";
        ato = "#" +currentParent + "_to";
        apublish = "#" +currentParent + "_publish";
        aorder   = "#" + currentParent + "_order";
        
 	$(currentID).html("<textarea id='ha' cols='45' rows='20' >"+mhtml+"</textarea>");
CMSbuttons('hide');

 	position =  $(currentID).css("position");

	$(currentID).css({"zIndex":10,"position":"relative"});

	editbox = $("#ha").css({"height":"150"}).htmlbox(
	 {
    		toolbars:[["cut","copy","paste","separator_dots","bold",
    			   "italic","underline","strike","sub","sup","separator_dots",
    			   "undo","redo","blank","blank","blank",  
                       	   {icon:"save.png",tooltip:"Save",command:function()
                       	   	{ 
                       	   	  publish = cbresult("#Cpublish");
                       	   	  UpdateContents(currentParent,editbox.get_html(),$("#Cfrom").val(),$("#Cto").val(),publish,$("#Corder").val());
                       		}
                       	   },
                       	   {icon:"cancel.png",tooltip:"Close",command:function()
                       	   	{
                       	   	  publish = cbresult("#Cpublish");
                       	   	  jConfirm('<center>Save changes?</center>', 'Confirmation Dialog', function(r) 
                       	   	    {
                       	   	      if (r==true)
                       			{
                                          UpdateContents(currentParent,editbox.get_html(),$("#Cfrom").val(),$("#Cto").val(),publish,$("#Corder").val());
                       			 }                      	
                                      
                                        $(".ajscms-content-add").show();
        $(".ajscms-content-sort").show();
 	$(".ajscms-cbutton-edit").show();
        $(".ajscms-cbutton-delete").show();
                                      
                       		      $(currentID).html(mhtml);
                       		      $(currentID).css({"zIndex":1,"position":position});
                       		      
                                        
                       		    });
                         	}
                            }
			  ],["separator_dots",
		 	  "left","center","right","justify","separator_dots","ol","ul","indent","outdent","separator_dots","link","unlink","image"],
		 	 ["code","removeformat","striptags","separator_dots","quote","hr","separator_dots",
			 {icon:"new.png",tooltip:"New",command:function(){hb_silk_icon_set_blue.set_text("<p></p>");}}
                                   
			
                         
			 
		  
	]],about:false,
           metadata:"<table><tr><td>Show from:</td><td><input type='text' name='Cfrom' id='Cfrom' class='ajscms-idate' /></td><td>Show until:</td><td><input type='text' name='Cto' id='Cto' class='ajscms-idate' /></td><td>Publish</td><td><input type='checkbox' class = 'ajscms-itick' name='Cpublish' id='Cpublish' value='pub'></td><td>Order</td><td><input type='text' name='Corder' id='Corder' class='ajscms-ino' /></td></tr></table>",
	icons:"silk",
header:"<div style='height:28px;padding-left:10px;padding-top:3px;font-weight:bold;background:url(shared/images/tb_bar2.jpg)'>Edit Content<div style='float:right'><img src='shared/images/application_exit.png'></div></div>",
	skin:"blue"
});

 
// populate fields in htmlbox

 if($(apublish).val() == '1' || $(apublish).val() == '-1')
 {
  $("#Cpublish").attr('checked',true);
 }
else
 {
$("#Cpublish").attr('checked',false);
 
 
 } 
 $("#Cfrom").val(datePHPJS($(afrom).val(),"js"));
 $("#Cto").val(datePHPJS($(ato).val(),"js"));
 $("#Corder").val($(aorder).val());
 

	

$(".ajscms-idate").datepicker({ dateFormat: 'dd/mm/yy' });
	

	});
$("#Cfrom").change(function()
 {
  $("#Cto").datepicker( "option", "minDate",$("#Cfrom").val() );
 
 
 });	
//==-----------end edit button-------------------------------------====

//++++++++++++++delete button++++++++++++++++++++++++++++++++++++++++++

$(".ajscms-cbutton-delete").click(function(){


contentcode = $(this).parent().parent().attr('id');

snippet = "#" + contentcode+" .ajscms-contents";



litext = $(snippet).text().substr(0,100);
		 
          		if( $(snippet).text().length > 100)
          		{
		  		litext = litext + "...";
          		}		  

jConfirm('<center>You are about to delete.. </center><div style=\'font-style:italic;background:#e4e4e4;padding-top:1em;padding-bottom:1em\'>\''+$.trim(litext)+'\'</div><br><b>WARNING</b>: Content cannot be undeleted - are you sure?', 'AJSCMS - Delete Content', function(r) 
                       	   	    {
                       	   	      if (r==true)
                       			{
                                          DeleteContents(contentcode)
                                         
                                        }
                                    }
                                    );

});









//==-----------end delete button------------------------------------==

//=====================================================================
//=========END CONTENT BUTTONS=========================================
//=====================================================================


});
