var common_ajax_url = REL_PATH+'/js/js.ajax.php';

//TO SEPARATE STRINGS RETURNING FROM AJAX
//SET ALSO ON THE PHP SIDE IN FN.MAIN.PHP
var STRING_DELIMETER = "@|@";

//STRING FUNCTIONS
/*sanitizeInAjax
**
*BECAUSE PARAMETERS PASSED TO AJAX ARE NOT ENCLOSED IN QUOTES,
*THIS FUNCTION CONVERTS CHARACTER THAT CAUSE PROBLEMS
*IT MUST BE SANITIZED ON THE OTHER SIDE OF JAVASCRIPT VIA PHP SANITIZEIN
**
*/
function sanitizeInAjax(string){
    string = string.replace(/&/g,'andamp;');
    return string;
}

/*sanitizeOutAjax
*ONLY TO BE USED TO STRIP WHITESPACE FROM ID'S BEING RETURNED FROM AJAX
*/
function sanitizeOutAjax(string){
    string = string.replace(/\s/gi,'');
    return string;    
}

function convertChars(string){
    string = string.replace(/'/gi,"&#039;");
    string = string.replace(/"/gi,"&quot;");
    return string;
}
function addSlashes(string) {
	string = string.replace(/'/,"\'");
    string = string.replace(/"/,'\"');
    return string;
}

function empty(string){
    string = string.replace(/\s/ig,'');
	string = string.replace(/\n/ig,'');
    if(string == ''){
        return true;
    }else{
        return false;    
    }
}



function submitForm(formID,confirm_text,fieldID,field_value,confirm_text_vars){

    var form = document.getElementById(formID);
    if(form){
        if(confirm_text && confirm_text != 'undefined'){
            if(confirm_text_vars && confirm_text_vars != 'undefined'){
                var ctvar = confirm_text_vars.split(",");
                for(var v=0; v<ctvar.length; v+=1){
                    var rep = "@var"+((v*1)+1);
                    confirm_text = confirm_text.replace(rep,ctvar[v]);   
                }
            }
            var conf = confirm(confirm_text);  
        }
        
        if((!confirm_text || confirm_text == 'undefined') || conf){
                if(fieldID && fieldID != 'undefined'){
                    $('#'+fieldID).val(field_value);
                }
                form.submit();
        }   
    }
}

function confirmBackendAction(confirm_text,confirm_text_vars,cbfn){
    if(cbfn && cbfn != 'undefined'){
        if(confirm_text && confirm_text != 'undefined'){
            if(confirm_text_vars && confirm_text_vars != 'undefined'){
                var ctvar = confirm_text_vars.split(",");
                for(var v=0; v<ctvar.length; v+=1){
                    var rep = "@var"+((v*1)+1);
                    confirm_text = confirm_text.replace(rep,ctvar[v]);   
                }
            }
            var conf = confirm(confirm_text);  //Dialog.display('Please Confirm',confirm_text,{"OK":function(){$(this).dialog('close'); return true;},"CANCEL":function(){$(this).dialog('close');}});//
        }
        if((!confirm_text || confirm_text == 'undefined') || conf){
            cbfn();    
        }
    }
}

var EditField = {
    
    init:function(type,fieldID,table,column,where_clause,allow_empty,cbfn,delete_type,delete_cbfn,disable_check_empty){

        var field       = document.getElementById(fieldID);
        var field_inner = document.getElementById('field_'+fieldID);

        if(field && (!field_inner || field_inner == 'undefined') && (!EditField.forceclosed || EditField.forceclosed == 'undefined')){
 
            EditField.close();
            
            EditField.fieldID             = fieldID;
            EditField.table               = table;
            EditField.column              = column;
            EditField.where_clause        = where_clause;
            EditField.allow_empty         = allow_empty;
            EditField.cbfn                = cbfn;
            EditField.delete_cbfn         = delete_cbfn;
            EditField.trigger_delete_fn   = false;
            EditField.disable_check_empty = disable_check_empty;
            
            $(field).removeClass('editable');
            $(field).addClass('editable_active');
            
            
            var field_html       = $(field).html();
            if(field_html.indexOf("<input") != -1){
                field_html = '';    
            }
            
            if(type == 'area'){
                field_html = field_html.replace(/<br>/gi,'\n');    
            }
            
            EditField.field_html = field_html;
            
            var font_size        = $(field).css('font-size');
            var font_weight      = $(field).css('font-weight');

            //alert(font_size);

            var  escaped_html = convertChars(field_html);
            
            
            
            var btns       = "<input type='button' class='btn_positive' id='edit_field_save' value='Save' style='font-size:"+font_size+"; ' />&nbsp;<input type='button' class='btn_negative' id='edit_field_cancel' value='Cancel' style='font-size:"+font_size+"; ' />";
            if(delete_type && delete_type != 'undefined'){
                EditField.delete_type = delete_type;
                btns += "&nbsp;&nbsp;<input type='button' class='btn_negative' id='edit_field_delete' value='Delete' style='font-size:"+font_size+"; ' />";    
            }
            
            var edit_form  = type == 'area' ? "<textarea id='field_"+fieldID+"' style='font-size:"+font_size+"; font-weight:"+font_weight+"; '>"+escaped_html+"</textarea>" : "<input type='text' id='field_"+fieldID+"' style='font-size:"+font_size+"; font-weight:"+font_weight+"; ' value='"+escaped_html+"'>";
                edit_form += type == 'area' ? "<div>"+btns+"</div>" : "&nbsp;"+btns;   
    
            $(field).html(edit_form);
            
            $('#edit_field_save').click(function(){
                EditField.save();
                EditField.forceclosed = true;
            });
            
            $('#edit_field_cancel').click(function(){
                EditField.close(field_html);
                EditField.forceclosed = true;
            });
            
            $('#edit_field_delete').click(function(){
                EditField.remove();  
                EditField.forceclosed = true;
            });
            
            if(type != 'area'){
                $('#field_'+fieldID).keyup(function(event){
                    onKeyEvent(event,'enter',EditField.save);
                });
            }
   
            $('#field_'+fieldID).focus();
            
        }else{
            EditField.forceclosed = false;    
        }
            
    },
    
    save:function(){
       
        var allow_empty = EditField.allow_empty;
        
        var field_value = sanitizeInAjax($('#field_'+EditField.fieldID).val());
        
      
        if(empty(field_value) && (!allow_empty || allow_empty == 'undefined')){
            EditField.close(EditField.field_html);
            alert("This field's value cannot be left blank. Please try again.");
            
        }else{
            var params = "EditField_save=1&value="+field_value+"&table="+EditField.table+"&column="+EditField.column+"&where_clause="+EditField.where_clause;
            ajax.request(params,common_ajax_url,function(){
                    EditField.close();
            });

            
        }
        
        
        
    },
    
    remove:function(){

        var params = "EditField_delete=1&type="+EditField.delete_type+"&table="+EditField.table+"&column="+EditField.column+"&where_clause="+EditField.where_clause;
        
        ajax.handler(params,common_ajax_url,function(){
                EditField.trigger_delete_fn = true;
                EditField.close();    
            
        });

        
    },
    
    close:function(field_value){
        var fieldID = $('.editable_active').attr('id');
        if(fieldID && fieldID != 'undefined'){
            $('#'+fieldID).removeClass('editable_active');
            $('#'+fieldID).addClass('editable');
            
            if(!field_value || field_value == 'undefined'){
                var field_value = $('#field_'+fieldID).val();
            }
            field_value = field_value.replace(/\n/gi,'<br>');
            $('#'+fieldID).html(field_value);
            
            
            if(EditField.cbfn && EditField.cbfn != 'undefined'){

                EditField.cbfn();    
            }
            
            //alert(EditField.delete_cbfn+" - "+EditField.trigger_delete_fn);
            if((EditField.delete_cbfn && EditField.delete_cbfn != 'undefined') && EditField.trigger_delete_fn){
                //alert('f');
                EditField.delete_cbfn();    
            }
            
            if(!EditField.disable_check_empty || EditField.disable_check_empty == 'undefined'){
                EditField.checkEmptyFields(fieldID);
            }
        }
        
    },
    
    checkEmptyFields:function(fieldID){
        
        if(!fieldID || fieldID == 'undefined'){
            var editable = $('.editable');
            for(var ed=0; ed<editable.length; ed+=1){
                replaceField(editable[ed]);       
            }
        }else{
            replaceField(document.getElementById(fieldID));
        }
        
        function replaceField(field){
            if(empty($(field).html())){
                var elem_title = " "+$(field).attr('title');
                $(field).removeClass('editable');
                $(field).html("<input type='button' class='btn_positive' style='font-size:8pt; ' value='Add"+elem_title+"' />");  
                setTimeout(function(){
                    if($(field).is(":hidden")){
                        $(field).slideDown('fast');
                    }
                },1500);
            }    
        }
           
    }
}

$(document).ready(function(){
    EditField.checkEmptyFields();
    
    if($('.left_links').html() != null){
        $(function () {
          var msie6 = $.browser == 'msie' && $.browser.version < 7;
          
          if (!msie6) {
            var top = $('.left_links').offset().top - parseFloat($('.left_links').css('margin-top').replace(/auto/, 0));
            
            $(window).scroll(function (event) {
              // what the y position of the scroll is
              var y = $(this).scrollTop();
    
              // whether that's below the form
              if (y >= top) {
                // if so, ad the fixed class
                $('.left_links').addClass('fixed');
              } else {
                // otherwise remove it
                $('.left_links').removeClass('fixed');
              }
            });
          }  
        });
    }    
});

function onKeyEvent(e,key_arr,fn){
	var keyID = (window.event)? event.keyCode : e.keyCode; 
    
   // document.title = keyID;
	
    var dkey = 13;
    var key  = "enter";

    var keys = key_arr.split(",");

    for(var k=0; k<keys.length; k+=1){
        key = keys[k];    
        if(key != ''){
            switch(key){
                case "enter": dkey = 13; break;
                case "tab":   dkey = 9; break;
                case "space": dkey = 32; break;
                case "back":  dkey = 8; break;
                case "up":    dkey = 38; break;
                case "right": dkey = 39; break;
                case "down":  dkey = 40; break;
                case "left":  dkey = 37; break; 
                case "shift": dkey = 16; break;
                case "escape":dkey = 27; break;
                case "delete":dkey = 46; break;
            }
            
            if(keyID == dkey){
                fn();
            }
        }
    
    } 
}

function slideUp(id){
        $('#'+id).slideUp('slow');
        $('#'+id).html('');    
}

function enableSortable(id,t){
    $('#'+id).sortable({disabled:false});
    $(t).mouseup(function(){
        $('#'+id).sortable({disabled:true});
        });
}


function refreshTo(uri,replace_value){
    if(replace_value && replace_value != 'undefined'){
        uri = uri.replace(/@value/gi,replace_value);
    }
    window.location = uri;    
}

var PHP_Session = {
    
    set:function(action,name,value,cbfn){
        var params = "PHP_Session_set=1&action="+action+"&name="+name+"&value="+value;
        ajax.request(params,common_ajax_url,function(){
            if(cbfn && cbfn != 'undefined'){
                cbfn();    
            }
        });
    },
    
    get:function(name,cbfn){
        var params = "PHP_Session_get=1&name="+name;
        ajax.request(params,common_ajax_url,function(){
            var resp = http.responseText;
            if(resp){
                return resp;    
            }
        });
    }
}

function popup(url,name,width,height){
	if(width && width != 'undefined'){
		var window_width = 'width='+width;
	}else{
		var window_width = 'width='+(screen.width*1)-10;
	}
	if(height && height != 'undefined'){
		var window_height = ', height='+height;
	}else{
		var window_height = ', height='+(screen.height*1)-10;
	}
     params  = window_width;
     params += window_height;
     params += ', top=0, left=0'
     params += ', resizable=yes';
     params += ', scrollbars=yes';
     newwin=window.open(url,name,params);
     if (window.focus) {newwin.focus()}
     return false;
}


//--- SET A COOKIE-------
function setCookie(name,content,exp){
	var currentTime = new Date();
	currentTime.setTime(currentTime.getTime() + (exp*1000));
	var expires = "expires="+currentTime.toGMTString();
	document.cookie = name+"="+content+";"+expires+";path=/";
}
//retreives any cookie
function getCookie(cookie_name){
	var results = document.cookie.match(cookie_name + '=(.*?)(;|$)');
	if(results)
    	return ( unescape ( results[1] ) );
  	else
    	return false;
}

//for adding a new category to a select area
function newSelectValue(selectID,text){
	var select_field = document.getElementById(selectID);
	var new_space    = document.getElementById('new_'+selectID);

	var tlabel = document.createTextNode("New "+text+":");
	var tfield = document.createElement("input");
		tfield.setAttribute("name","new_"+selectID);
		tfield.setAttribute("id","new_"+selectID);
		tfield.style.backgroundColor = "#ccff99";
		tfield.style.border = "1px solid #333333";
		
	if(select_field.value == 'add_new'){
		new_space.appendChild(tlabel);
		new_space.appendChild(tfield);
	}else{
		new_space.innerHTML = '';
	}
}

function maxChars(fieldID,outputID,max_chars){
    var field  = document.getElementById(fieldID);
    var output = document.getElementById(outputID);
    if(field && output){
        if(field.value.length > max_chars){
            field.value = field.value.substr(0,max_chars);
        }
        if(!field.value.length || field.value.length == 'undefined'){
            field.value.length = 0;    
        }
        output.innerHTML = field.value.length;
    }
}

function ajaxLoader(){
    return '<div style="text-align:center; margin-top:2em; "><div>Please Wait...</div><img src="'+REL_PATH+'/content/img/ajax-loader.gif" /></div>';    
}

function loadBox(message,show){

    if(!message || message == 'undefined'){
        message = ajaxLoader();    
    }else{
        message += "<div style='text-align:center; margin-top:1em; '><input type='button' class='button negative' value='Close' onclick=\"loadBox(false,false)\"></div>";    
    }
    
    if(show == 'undefined'){
        show = true;
    }

    if(show){
        $('#load_box').html(message);    
        $('#load_box').fadeIn('fast');
    }else{
        $('#load_box').html(''); 
        $('#load_box').hide('fast');    
    }
}

function clearFields(fields_array){
    var fields = fields_array.split(",");
    for(var f=0; f<fields.length; f+=1){
       $('#'+fields[f]).val('');     
    }
}


