/*AJAX GLOBAL RETROFIT*/
function ajaxglobal(data)
{
	//INITIALIZE DATA
	var bool_loading=false, loading_selector='', loading_label='', arr_keyval= [], dataset= [];
	var arr_query_pairs=data.split("&"); //data is "key=value" pairs separated by "&"

	//foreach arr_query_pairs ("key=val") split on "="
	//arr_keyval[x][0] = key
	//arr_keyval[x][1] = val
	for(var x=0; x<arr_query_pairs.length; x++ ){
		arr_keyval[x] = arr_query_pairs[x].split("=");
	}
	 
	//foreach arr_keyval
	for(var x=0; x<arr_keyval.length; x++ ){
		dataset[(arr_keyval[x][0])] = arr_keyval[x][1]; //dataset[key] = val;
		//look for special vars
		switch(arr_keyval[x][0]){
			case 'pagename': 	var pagename = arr_keyval[x][1]; break;
			case 'path': 		var filepath = arr_keyval[x][1]; break;
			case 'fname': 		var fname = arr_keyval[x][1]; break;
			case 'formname': 	var formname = arr_keyval[x][1]; break;
			case 'sortablelist':var sortablelist = arr_keyval[x][1]; break;
			case 'animation':	var animation = arr_keyval[x][1]; break;
			case 'loading':		var loading = arr_keyval[x][1]; break;
			case 'loading_text':var loading_text = arr_keyval[x][1]; break;
			case 'loadingss':	var loadingss = arr_keyval[x][1]; break;
			case 'modal':		var modal = (arr_keyval[x][1]=='true') ? true : false; break;
		}
	}
	
	//build or show modal overlay
	if(modal){
		var height = dataset['height'] || 400;
		var width = dataset['width'] || 600;
		var $overlay = $('.ss-globaloverlay');
		if( $overlay.is('div') ){
			$overlay.fadeIn();
		}else{
			$("<div class='ss-globaloverlay' style='position:fixed; top:0; right:0; bottom:0; left:0; height:100%; width:100%; margin:0; padding:0; background:#000; opacity:.75; filter: alpha(opacity=75); -moz-opacity: 0.75; z-index:500;'></div>").prependTo("#SS-PublicWrapper");
			$(".ss-globaloverlay").live('click',function(){ $(this).fadeOut(); $('.ss-modal').attr('style','').html(''); });
		}
	}
	
	//CLEAR DIV CONTENT FROM OPEN MODULES
	var checkss = fname.split("|");
	if(checkss[0] == 'ss'){
		 $(".ssdivs").html('');
	}
	
	//GRAB ITEMS FROM A SORTABLE LIST IF IT EXISTS
	if(sortablelist){
		var sortablelistresult = $('.'+sortablelist).sortable('toArray');
		sortabledata="&sortabledata="+sortablelistresult;
		data=data+sortabledata;
	}

	//CHECK TO SEE IF VALUES ARE A FORM AND THEN SERIALIZE THE DATA
	if(formname){
		var $thisform = $('form[name="'+formname+'"]');
		var $fname_input = $thisform.find("input[name='fname']");
		var fnameparts = fname.split('|');
		if( $fname_input.length==0 ){
			//no fname in form - create it
			$("<input type='hidden' name='fname' value='"+fnameparts[0]+"' class='ss_openajax_injection' />").appendTo($thisform);
		}
		else if( $fname_input.hasClass('ss_openajax_injection') && $fname_input.val()!=fnameparts[0] ){
			$fname_input.val(fnameparts[0]);
		}
		data = $thisform.serialize();
	}
	
	//TAKE THE FNAME VALUE AND SPLIT IT IF THERE IS A PIPE TO GET ID/CLASS VALUE
	if(fname){
		var fname_values=fname.split("|");
		var fname1 = fname_values[0];
		var fname2 = fname_values[1];
	}
	else{
		fnameclass!="true"
	}

	//LOOK AT THE SECOND VALUE OF THE PIPE SPLIT AND SEPERATE THE . OR # FROM VALUE AND GET REAL VALUE OF FNAME
	if(fname2){
		var fnameid_values=fname2.split("#");
		var fnameid = fnameid_values[1];
		
		//REPLACE CLASS NAMED 'COMMON' WITH NEW CLASS NAME SO CONTENTS CAN BE DYNAMICALLY ADDED
		var accordianmenu = fname.split("|");
		if((accordianmenu[0] == 'user_info')||(accordianmenu[0] == 'accormenu')){
			var commonclass = fnameid;
			if(!commonclass){
				commonclass = "false";
			}
			if(commonclass != "false"){
				$(document).ready(function(){
					$(".common").html("");
					$("#"+commonclass).replaceWith("<div id=\""+commonclass+"\" class=\""+pagename+" common\"></div>");
				});
			}
		}
	}
	if(!fnameid){ fnameid = "false"; }

	//GET CLASS STRING
	if(fname2){
		var fnameclass_values=fname2.split(".");
		var fnameclass = fnameclass_values[1];
	}
	if(!fnameclass){ fnameclass = "false"; }
	if(filepath){
		if(filepath.indexOf('/') >= 0){
			filepath = filepath; //use filepath if it starts with a /
		}else{
			//transform ajax_filename into glmod_Filename
			filepath = filepath.replace('ajax_','');
			filepath = ucwords(filepath.replace(/_/g,' ')).replace(/ /g,'_');
			filepath = ucwords(filepath.replace(/-/g,' ')).replace(/ /g,'-');
			filepath = 'glmod_'+filepath;
		}
	}
	else{ 
		//transform ajax_filename into glmod_Filename
		filepath = pagename.replace('ajax_','');
		filepath = ucwords(filepath.replace(/_/g,' ')).replace(/ /g,'_');
		filepath = ucwords(filepath.replace(/-/g,' ')).replace(/ /g,'-');
		filepath = 'glmod_'+filepath;
	}
	
	//SPLIT LOADING TO SEE IF THERE IS A SPECIFIC DIV TO PUT LOADING ICON
	if(loading){
		var arr_loading=loading.split('|');
		var bool_loading = arr_loading[0];
		var loading_selector = arr_loading[1];
		loading_label = (loading_text!==undefined && loading_text!='') ? loading_text : 'Loading';
	}	
	
	//DEFINE $target - the div that will get the ajax response fname=FunctionName|<selector>
	var targetSelector = '';
	if(fnameid!="false"){
		targetSelector = "#"+fnameid;
	} else if(fnameclass!="false"){
		targetSelector = "."+fnameclass;
	}else{
		targetSelector = "."+pagename;
	}
	var $target = $( targetSelector );
	
	//CALL THE AJAX FUNCTION
	if(bool_loading=='true' && !loading_selector){ $target.html("<div style='text-align:center;'><img src='/syncshow/editor/images/ajax-loader-arrows.gif' alt='Please Wait...' /><br />"+loading_label+"...</div>"); }
	else if(bool_loading=='true' && loading_selector){ $(loading_selector).html("<div style='text-align:center;'><img src='/syncshow/editor/images/ajax-loader-arrows.gif' alt='Please Wait...' /><br />"+loading_label+"...</div>").show(); }
	if(loadingss){ $("#ssloading-area").show(); }
	$.ajax({
   		type: "POST",
   		url: "/syncshow/ajaxscripts/scripts.php?pagename="+pagename+"&filepath="+filepath, 
   		cache: false,
   		data: data,
   		success: function(html){
			if(modal) $target.attr('style','z-index:501;position:fixed;width:'+width+'px;height:'+height+'px;vertical-align:middle;').addClass('ss-modal');
			
			// Send back HTML to target & trigger custom success event [ targetSelector, formName ]
			$target.html(html).show().trigger( "openAJAX_success", [ targetSelector, formname ] );
			
			// Clear / Hide Loaders
   		 	if(bool_loading=='true' && loading_selector) $(loading_selector).html("").hide();
   		 	if(loadingss){ $("#ssloading-area").hide(); }
 		}
	});	
}

//USE 100% JQUERY TO RUN AJAX GLOBAL
$('a.ajaxGlobal').mouseup(function(e){
	var data =  $(this).attr("ref");
	ajaxglobal(data);
});
//USE JQUERY TO RECORD INPUT STROKES AS THEY ARE TYPED
$('input.ajaxGlobal').keyup(function(e){
	var data = $(this).attr("ref");
	var inputvalue = $(this).val();
	data = data+inputvalue;
	ajaxglobal(data);
});

//USE CONVENTIONAL JAVASCRIPT TO RUN AJAX GLOBAL
function openAJAX(data){
	ajaxglobal(data);
}
//MAKING SUBMIT BUTTON WORK WHEN HITTING ENTER
function submitOnEnter(event,openAJAXparam){
	if (window.event) event = window.event; //MSIE Hack
	if(event.keyCode==13){
		eval( "openAJAX('"+openAJAXparam+"')" );
		return false;
	}
	return true;
}

//
// FILE UPLOAD FUNCITON MOVED TO glmod_Forms/javascript.js
//
// function ajaxFileUpload( form_id, element_id ){ ... }

function urlsafeonly(myfield, e, dec){
  var key, keychar;
  if (window.event) key = window.event.keyCode;
  else if (e) key = e.which;
  else return true;
  keychar = String.fromCharCode(key);
  // control keys
  if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) return true;
  // numbers
  else if ((("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789-").indexOf(keychar) > -1)) return true;
  // decimal point jump
  else if (dec && (keychar == ".")) {
     myfield.form.elements[dec].focus();
     return false;
  }else return false;
}
function numbersonly(myfield, e, dec){
  var key, keychar;
  if (e) key = e.which;
  else return true;
  keychar = String.fromCharCode(key);
  // control keys
  if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) return true;
  // numbers
  else if ((("0123456789").indexOf(keychar) > -1)) return true;
  // decimal point jump
  else if (dec && (keychar == ".")) {
     myfield.form.elements[dec].focus();
     return false;
  }else return false;
}
function ucwords(str) {
    // Uppercase the first character of every word in a string  
    // version: 1006.1915
    // discuss at: http://phpjs.org/functions/ucwords
    return (str + '').replace(/^(.)|\s(.)/g, function ($1) {
        return $1.toUpperCase(); });
}
