

;(function($){$.fn.ajaxSubmit=function(options){if(!this.length){log('ajaxSubmit: skipping submit process - no element selected');return this;}
if(typeof options=='function')
options={success:options};options=$.extend({url:this.attr('action')||window.location.toString(),type:this.attr('method')||'GET'},options||{});var veto={};this.trigger('form-pre-serialize',[this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');return this;}
if(options.beforeSerialize&&options.beforeSerialize(this,options)===false){log('ajaxSubmit: submit aborted via beforeSerialize callback');return this;}
var a=this.formToArray(options.semantic);if(options.data){options.extraData=options.data;for(var n in options.data){if(options.data[n]instanceof Array){for(var k in options.data[n])
a.push({name:n,value:options.data[n][k]})}
else
a.push({name:n,value:options.data[n]});}}
if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){log('ajaxSubmit: submit aborted via beforeSubmit callback');return this;}
this.trigger('form-submit-validate',[a,this,options,veto]);if(veto.veto){log('ajaxSubmit: submit vetoed via form-submit-validate trigger');return this;}
var q=$.param(a);if(options.type.toUpperCase()=='GET'){options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;options.data=null;}
else
options.data=q;var $form=this,callbacks=[];if(options.resetForm)callbacks.push(function(){$form.resetForm();});if(options.clearForm)callbacks.push(function(){$form.clearForm();});if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){$(options.target).html(data).each(oldSuccess,arguments);});}
else if(options.success)
callbacks.push(options.success);options.success=function(data,status){for(var i=0,max=callbacks.length;i<max;i++)
callbacks[i].apply(options,[data,status,$form]);};var files=$('input:file',this).fieldValue();var found=false;for(var j=0;j<files.length;j++)
if(files[j])
found=true;if(options.iframe||found){if(options.closeKeepAlive)
$.get(options.closeKeepAlive,fileUpload);else
fileUpload();}
else
$.ajax(options);this.trigger('form-submit-notify',[this,options]);return this;function fileUpload(){var form=$form[0];if($(':input[name=submit]',form).length){alert('Error: Form elements must not be named "submit".');return;}
var opts=$.extend({},$.ajaxSettings,options);var s=jQuery.extend(true,{},$.extend(true,{},$.ajaxSettings),opts);var id='jqFormIO'+(new Date().getTime());var $io=$('<iframe id="'+id+'" name="'+id+'" src="about:blank" />');var io=$io[0];$io.css({position:'absolute',top:'-1000px',left:'-1000px'});var xhr={aborted:0,responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(){this.aborted=1;$io.attr('src','about:blank');}};var g=opts.global;if(g&&!$.active++)$.event.trigger("ajaxStart");if(g)$.event.trigger("ajaxSend",[xhr,opts]);if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;return;}
if(xhr.aborted)
return;var cbInvoked=0;var timedOut=0;var sub=form.clk;if(sub){var n=sub.name;if(n&&!sub.disabled){options.extraData=options.extraData||{};options.extraData[n]=sub.value;if(sub.type=="image"){options.extraData[name+'.x']=form.clk_x;options.extraData[name+'.y']=form.clk_y;}}}
setTimeout(function(){var t=$form.attr('target'),a=$form.attr('action');form.setAttribute('target',id);if(form.getAttribute('method')!='POST')
form.setAttribute('method','POST');if(form.getAttribute('action')!=opts.url)
form.setAttribute('action',opts.url);if(!options.skipEncodingOverride){$form.attr({encoding:'multipart/form-data',enctype:'multipart/form-data'});}
if(opts.timeout)
setTimeout(function(){timedOut=true;cb();},opts.timeout);var extraInputs=[];try{if(options.extraData)
for(var n in options.extraData)
extraInputs.push($('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />').appendTo(form)[0]);$io.appendTo('body');io.attachEvent?io.attachEvent('onload',cb):io.addEventListener('load',cb,false);form.submit();}
finally{form.setAttribute('action',a);t?form.setAttribute('target',t):$form.removeAttr('target');$(extraInputs).remove();}},10);var nullCheckFlag=0;function cb(){if(cbInvoked++)return;io.detachEvent?io.detachEvent('onload',cb):io.removeEventListener('load',cb,false);var ok=true;try{if(timedOut)throw'timeout';var data,doc;doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;if((doc.body==null||doc.body.innerHTML=='')&&!nullCheckFlag){nullCheckFlag=1;cbInvoked--;setTimeout(cb,100);return;}
xhr.responseText=doc.body?doc.body.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;xhr.getResponseHeader=function(header){var headers={'content-type':opts.dataType};return headers[header];};if(opts.dataType=='json'||opts.dataType=='script'){var ta=doc.getElementsByTagName('textarea')[0];xhr.responseText=ta?ta.value:xhr.responseText;}
else if(opts.dataType=='xml'&&!xhr.responseXML&&xhr.responseText!=null){xhr.responseXML=toXml(xhr.responseText);}
data=$.httpData(xhr,opts.dataType);}
catch(e){ok=false;$.handleError(opts,xhr,'error',e);}
if(ok){opts.success(data,'success');if(g)$.event.trigger("ajaxSuccess",[xhr,opts]);}
if(g)$.event.trigger("ajaxComplete",[xhr,opts]);if(g&&!--$.active)$.event.trigger("ajaxStop");if(opts.complete)opts.complete(xhr,ok?'success':'error');setTimeout(function(){$io.remove();xhr.responseXML=null;},100);};function toXml(s,doc){if(window.ActiveXObject){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async='false';doc.loadXML(s);}
else
doc=(new DOMParser()).parseFromString(s,'text/xml');return(doc&&doc.documentElement&&doc.documentElement.tagName!='parsererror')?doc:null;};};};$.fn.ajaxForm=function(options){return this.ajaxFormUnbind().bind('submit.form-plugin',function(){$(this).ajaxSubmit(options);return false;}).each(function(){$(":submit,input:image",this).bind('click.form-plugin',function(e){var form=this.form;form.clk=this;if(this.type=='image'){if(e.offsetX!=undefined){form.clk_x=e.offsetX;form.clk_y=e.offsetY;}else if(typeof $.fn.offset=='function'){var offset=$(this).offset();form.clk_x=e.pageX-offset.left;form.clk_y=e.pageY-offset.top;}else{form.clk_x=e.pageX-this.offsetLeft;form.clk_y=e.pageY-this.offsetTop;}}
setTimeout(function(){form.clk=form.clk_x=form.clk_y=null;},10);});});};$.fn.ajaxFormUnbind=function(){this.unbind('submit.form-plugin');return this.each(function(){$(":submit,input:image",this).unbind('click.form-plugin');});};$.fn.formToArray=function(semantic){var a=[];if(this.length==0)return a;var form=this[0];var els=semantic?form.getElementsByTagName('*'):form.elements;if(!els)return a;for(var i=0,max=els.length;i<max;i++){var el=els[i];var n=el.name;if(!n)continue;if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el)
a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});continue;}
var v=$.fieldValue(el,true);if(v&&v.constructor==Array){for(var j=0,jmax=v.length;j<jmax;j++)
a.push({name:n,value:v[j]});}
else if(v!==null&&typeof v!='undefined')
a.push({name:n,value:v});}
if(!semantic&&form.clk){var inputs=form.getElementsByTagName("input");for(var i=0,max=inputs.length;i<max;i++){var input=inputs[i];var n=input.name;if(n&&!input.disabled&&input.type=="image"&&form.clk==input)
a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});}}
return a;};$.fn.formSerialize=function(semantic){return $.param(this.formToArray(semantic));};$.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n)return;var v=$.fieldValue(this,successful);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++)
a.push({name:n,value:v[i]});}
else if(v!==null&&typeof v!='undefined')
a.push({name:this.name,value:v});});return $.param(a);};$.fn.fieldValue=function(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i];var v=$.fieldValue(el,successful);if(v===null||typeof v=='undefined'||(v.constructor==Array&&!v.length))
continue;v.constructor==Array?$.merge(val,v):val.push(v);}
return val;};$.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(typeof successful=='undefined')successful=true;if(successful&&(!n||el.disabled||t=='reset'||t=='button'||(t=='checkbox'||t=='radio')&&!el.checked||(t=='submit'||t=='image')&&el.form&&el.form.clk!=el||tag=='select'&&el.selectedIndex==-1))
return null;if(tag=='select'){var index=el.selectedIndex;if(index<0)return null;var a=[],ops=el.options;var one=(t=='select-one');var max=(one?index+1:ops.length);for(var i=(one?index:0);i<max;i++){var op=ops[i];if(op.selected){var v=op.value;if(!v)
v=(op.attributes&&op.attributes['value']&&!(op.attributes['value'].specified))?op.text:op.value;if(one)return v;a.push(v);}}
return a;}
return el.value;};$.fn.clearForm=function(){return this.each(function(){$('input,select,textarea',this).clearFields();});};$.fn.clearFields=$.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=='text'||t=='password'||tag=='textarea')
this.value='';else if(t=='checkbox'||t=='radio')
this.checked=false;else if(tag=='select')
this.selectedIndex=-1;});};$.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=='function'||(typeof this.reset=='object'&&!this.reset.nodeType))
this.reset();});};$.fn.enable=function(b){if(b==undefined)b=true;return this.each(function(){this.disabled=!b});};$.fn.selected=function(select){if(select==undefined)select=true;return this.each(function(){var t=this.type;if(t=='checkbox'||t=='radio')
this.checked=select;else if(this.tagName.toLowerCase()=='option'){var $sel=$(this).parent('select');if(select&&$sel[0]&&$sel[0].type=='select-one'){$sel.find('option').selected(false);}
this.selected=select;}});};function log(){if($.fn.ajaxSubmit.debug&&window.console&&window.console.log)
window.console.log('[jquery.form] '+Array.prototype.join.call(arguments,''));};})(jQuery);

gDisableJSValidation = false;

var pageloadflag = true;
var lasthash = "";
//if (location.hash) {
  //  Utils.handlePageload(location.hash);
//}

jQuery(function() {

	if(Global.supportHistoryPlugin) {
     $.historyInit(Utils.handlePageload);
    }

    $.ajaxSetup({cache: false});
    $("form").submit(function() { return FormUtils.validateForm(this) });
    $.fn.clearForm = FormUtils.clearForm;

    $("#loading").hide();
  $("#loading").ajaxSend(function(){
    $(this).show();
  });
  $("#loading").ajaxComplete(function(){
      $(this).hide();
  });
  $("#loading").ajaxError(function(event, request, settings, thrownError) {
    //alert("Oops! Something went wrong. Please try again.");
    //Global.debug("Ajax error: " + thrownError);
	Global.handleAjaxError(request.responseText, settings.url);
    return false;
  });


    $(".alpha_browser .page").live("click", function() {
        var letter = $(this).text().toLowerCase();
        var parent = $(this).parents(".alpha_browser").get(0);
        if ($(parent).hasClass("primary")) {
			if(Global.supportHistoryPlugin) {
            	Global.updateHash("letter", [letter]);
            }
            else {
            	Global.loadAlphaPage(parent, letter);
            }
        } else {
            Global.loadAlphaPage(parent, letter);
        }

        return false;
    });

    $(".pagination .page, .pagination_prevnext .page").live("click", function() {
        var page = this.id.substr(6);
        var parent = $(this).parents(".pagination, .pagination_prevnext").get(0);
        if ($(parent).hasClass("primary")) {
            if (!$(parent).hasClass("pgn_ajax")) {
                return true;
            }
			if(Global.supportHistoryPlugin) {
	            Global.updateHash("page", [page]);
	        }
	        else {
	            Global.loadNumericPage(parent, page);
	        }
        } else {
            Global.loadNumericPage(parent, page);
        }

        return false;
    });
		
			for (i in jshandlers) {
        var h = jshandlers[i];
        if (h == '') {
            break;
        }
        eval("(" + h + "()" + ")");
    	}		  

    if($("#debugger_details").length > 0) {
		Debug.handleDebugEvents();
    }
});

$.fn.typeahead = function(func, options) {
    var timeout = false;        // hold timeout ID for suggestion results to appear
    var prevLength = 0;         // last recorded length of $input.val()
    var $input = $(this);

    if ($.browser.mozilla) {
        $input.keypress(processKey);    // onkeypress repeats arrow keys in Mozilla/Opera
    } else {
        $input.keydown(processKey);     // onkeydown repeats arrow keys in IE/Safari
    }

    function processKey(e) {
        // printable chars
        if (e.which >= 32 && e.which < 127) {
            if (timeout) {
                clearTimeout(timeout);
            }

            timeout = setTimeout(func, options.delay);
        }
    }
};


function finishAuth() {
	Global.finishAuth();
}

var Global = {

  supportHistoryPlugin: false,
  dialogElement: null,
  authElementClicked: null,

  debug: function(args) {
	if(window.console) {
		window.console.log(args);
	}
  },

  verifyUser: function(event) {
    if(!is_verified) {
     event.stopImmediatePropagation();
     return false;
    }
    return true;
  },

  handleAuth: function(event) {
	if(is_logged) {
		return true;
	}
	Global.authElementClicked = this;
//  Global.authElementOffset = $(this).offset();

    if(RPX_ENABLED) {
    	Global.showLoginPopup();
    }
    else {
	     Global.getAction("Login", {auth:1}, function(data){
			dialog_class(data);
		});
    }
    event.stopImmediatePropagation();
    return false;
  },

  showLoginPopup:  function() {
		var width  = 600;
		var height = 500;
	    var left = parseInt((screen.availWidth/2) - (width/2));
	    var top = parseInt((screen.availHeight/2) - (height/2));
	    var options = 'height=' + height + ',width=' + width + ',location=no,status=no,scrollbars=1,modal=yes,alwaysRaised=yes' + ',top=' + top + ',left=' + left;
		var w = window.open(MAIN_URL + "login?popup=1", 'login', options);
		w.focus();
  },


  showAddRpxPopup: function(frndIvt) {
  	var width  = 450;
  	var height = 300;
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    var options = 'height=' + height + ',width=' + width + ',location=no,status=no,scrollbars=1,modal=yes,alwaysRaised=yes' + ',top=' + top + ',left=' + left;
    var url = (frndIvt)? "a/addrpxprovider?popup=1&frndIvt=1" : "a/addrpxprovider?popup=1";
    var w = window.open(MAIN_URL + url, 'login', options);
  	w.focus();
  },

  finishAuth:  function() {
  	 is_logged = true;
     Global.closeDialog();
     if(Global.authElementClicked != null) {
     	Global.loadAction("#loginContainer", "LoginWindow", {}, function(data) {
     	//is_verified = $("#user_status").html();
      if(jQuery().scrollTo) {
          $.scrollTo($(Global.authElementClicked));
        }

         //window.scrollTo(Global.authElementOffset.left, Global.authElementOffset.top - 50);
         if(!Global.authElementClicked.href.match(/javascript|#/)){
                window.location.href = Global.authElementClicked.href;
                return;
            }
            $(Global.authElementClicked).click();

     	});
        }
  },

  showLogin: function() {
   	Global.getAction("Login", {}, function(data){
   		dialog_class(data);
	});
  },

  getDebugDetails: function() {
      jQuery.get("/a/" + "DebugAjaxDetails", {_ajax: 1} , function(data) {
         $("#fw_debug_ajax_actions").append(data);
      });
  },

  updateHash: function(action, params) {
        // remove leading #,/ and trailing /
        var hash = location.hash.replace(/^#\/?/, "").replace(/\/?$/, "/");
        if(action == 'page'){
            hash = hash.replace(/page\/\d+/, "") + "page/" + params[0];
        }
        if(action == 'letter'){
            hash = hash.replace(/page\/\d+/, "");
            hash = hash.replace(/letter\/[\w-09]+/, "") + "letter/" + params[0];
        }
        if(location.hash != "#" + hash) {
            $.historyLoad(hash);
    }
    return false;
  },

  getMsg: function(msg_id, args) {
      arg_array = Utils.is_array(args);
      msg = gStaticMessages[msg_id];
      if(arg_array){
        for(i=0; i<args.length; i++){
            msg = msg.replace("{" + (i+1) + "}", args[i]);
        }
      }
      else{
        msg = msg.replace("{1}", args);
      }
      return msg;
  },

  alertMsg: function(msg_id, args) {
       alert(Global.getMsg(msg_id, args));
  },

  confirmMsg: function(msg_id, args) {
       return confirm(Global.getMsg(msg_id, args));
  },

  handleResponseJs: function(data, noeval) {
	//Global.debug(data);
	if(data.match(/[\s\S]*<!--FW_JS-->[\s\S]*/)) {
		var js =   data.replace(/^[\s\S]*?<!--FW_JS-->([\s\S]*?)<!--FW_JS-->[\s\S]*?$/, "$1");
		//Global.debug(js);
		if(!noeval) eval(js);
		//Global.debug(data.replace(/<!--FW_JS-->[\s\S]*?<!--FW_JS-->/, ""));
		return data.replace(/<!--FW_JS-->[\s\S]*?<!--FW_JS-->/, "");
	}
	else {
		return data;
	}
  },

 // not used as of now
  extractValidateRules: function() {
    if($("#gValidateRules").length == 0) return;
    var  rules = window["eval"]("(" + $("#gValidateRules").text() + ")");
    for(action in rules){
        gValidateRules[action] = rules[action];
    }
    $("#gValidateRules").remove();
  },

  getAction: function(action, params, callback, customLoader) {
    if(!params) params = {};
    params._ajax = 1;
    var actionUrl=URL_PREFIX_AJAX+action;
    return jQuery.get(actionUrl, params, function(data) {
      if(FW_DEBUG) { Global.getDebugDetails(); }
      var ret = Global.handleAjaxError(data, action);
      if(!ret) return;
      data = Global.handleResponseJs(data);
      if(callback) callback(data);
    });
  },

  postAction: function(action, params, callback) {
    if(!params) params = {};
    params._ajax = 1;
    var actionUrl=URL_PREFIX_AJAX+action;
    return jQuery.post(actionUrl, params, function(data) {
      if(FW_DEBUG) { Global.getDebugDetails(); }
      var ret = Global.handleAjaxError(data, action);
      if(!ret) return;
      data = Global.handleResponseJs(data);
      if(callback) callback(data);
    });
  },

    getJSONAction: function(action, params, callback) {
        if (!params) {
            params = {};
        }

        params._ajax = 1;
        var actionUrl = URL_PREFIX_AJAX + action;

        return jQuery.getJSON(actionUrl, params, function(data) {
            
            if (FW_DEBUG) {
                Global.getDebugDetails();
            }

            var error_flag = false;
            for (i in data['messages']) {
                if (data['messages'][i]['type'] == 'E') {
                    error_flag = true;
                }
            }
            for (i in data['verrors']) {
                error_flag = true;
            }

            Validation.displayMessages(action, data['messages'], true);

            if (callback && !error_flag) {
                callback(data);
            }
        });
    },

    loadAction: function (target, action, params, callback) {
        if (!params) {
            params = {};
        }

        params._ajax = 1;
        var actionUrl = URL_PREFIX_AJAX + action;

        return jQuery.get(actionUrl, params, function(data) {
            if (FW_DEBUG) {
                Global.getDebugDetails();
            }

            var ret = Global.handleAjaxError(data, action);
            if (!ret)  return;
            //Global.debug(data);
            $(target).html(Global.handleResponseJs(data, true));
            data = Global.handleResponseJs(data);

            if (callback) {
                callback(data);
            }
        });
    },

  ajaxSubmitAction: function(form_id, callback) {
    var form = document.getElementById(form_id);
    var action = Global.getFormAction(form);
    var ret = FormUtils.validateForm(form);
    if(!ret)  return;
    $(form).ajaxSubmit({
        data: {_ajax : '1'},
        success: function(data) {
          if(FW_DEBUG) { Global.getDebugDetails(); }
          var ret = Global.handleAjaxError(data, action);
          if(!ret) return;
          data = Global.handleResponseJs(data);
          if(callback) {
            callback(data);
          }
        }
    });
  },

    ajaxSubmitJSON: function(form_id, callback, errorcallback, url) {
        var form = document.getElementById(form_id);
        var ret = FormUtils.validateForm(form);
        var action = Global.getFormAction(form);
        if (!ret) {
            return;
        }
        var options = {
                dataType: 'json',
                data: {_ajax : '1'},
                success: function(data) {
                    if (FW_DEBUG) {
                        Global.getDebugDetails();
                    }

                    var error_flag = false;
                    for (i in data['messages']) {
                        if (data['messages'][i]['type'] == 'E') {
                            error_flag = true;
                        }
                    }
                    
//                      for (i in data['verrors']) {
                      if(data['verrors'].length > 0) {
                          error_flag = true;
                          }
//                      }

                    Validation.displayMessages(action, data['messages'], true);
                    if (errorcallback && error_flag) {
                        errorcallback(data);
                    }

                    if (callback && !error_flag) {
                        callback(data);
                    }
                },

                error: function(data) {
                    if (errorcallback) {
                        errorcallback(data);
                    }
                }
            };
        if(url) options.url = url;
        $(form).ajaxSubmit(options);
    },

  handleAjaxError: function(data, url) {
    if(!data) return true;
    if(data.match(/FW_PHP_ERROR/)) {
      var error = data.replace(/<!--FW_PHP_ERROR-->/g, '');
      alert("Oops! Something went wrong. Please try again.");
      return false;
    }
    else if(data.match(/FW_PHP_EXCEPTION/)) {
      alert("Oops! Something went wrong. Please try again.");
      return false;
    }
    else if(data.match(/FW_AJAX_REDIRECT/)) {
        var redirect_url = data.replace(/.*<!--FW_AJAX_REDIRECT-->(.*?)<!--FW_AJAX_REDIRECT-->.*/m, "$1");
        window.location.href = redirect_url;
        return false;
    }
    return true;
  },

  clearActionMessages: function(action) {
      $(".alert, .alertbox").each(function() {
          if(!this.className.match("m_" + action.toLowerCase() + "-"))  {
            return;
          }
          $(this).html("");
          $(this).hide();
          $(this).parents('form.normal').find('label').removeClass('error_label');
    });
  },

  loadNumericPage: function(elem, page) {
    if($(elem).length == 0) return;
    var container = $(elem).parents(".container").get(0);
    if($(elem).hasClass("pgn_scrolltop") ) {
    	if(jQuery().scrollTo) {
        	$.scrollTo($(container));
        }
    }
    var primary = $(elem).hasClass("primary")?1:0;
    var action = $(elem).find(".pgn_action").text();
    Global.loadAction($(container), action, {page: page, _primary: primary}, function() {});
  },

  loadAlphaPage: function(elem, letter) {
    if($(elem).length == 0) return;
    var container = $(elem).parents(".container").get(0);
    var action = $(elem).find(".pgn_action").text();
    Global.loadAction($(container), action, {letter:letter}, function() {});
  },

  alertObj: function(obj) {
    var output = "";
    for(i in obj) {
      output += i +  "=" + obj[i];
    }
  },

  getFormAction: function(form) {
      var  action = form.action;
      if(!action) {
        var path = location.pathname;
        action = path.replace(/^(\w+).*/, "$1");
      }
      action = action.toLowerCase();
      action = action.replace(/(\w+)\?/, "$1");
      action = action.replace(/^.*?(\w+)$/g, "$1");
      return action;
    },

    typeAhead: function($input, func, minChars, maxChars, delay) {
        var timeout = false;
        if ($.browser.mozilla)
            $input.keypress(processKey);    // onkeypress repeats arrow keys in Mozilla/Opera
        else
            $input.keydown(processKey);     // onkeydown repeats arrow keys in IE/Safari

        function processKey(e) {
            // printable chars
            if(($(this).val().length < minChars - 1) || ($(this).val().length > maxChars - 1)) return;
            if(e.which >= 32 && e.which < 127 || e.which == 8) {
                if (timeout)
                    clearTimeout(timeout);
                timeout = setTimeout(func, delay);
            }
        }
    },

   dialog: function(jelem, params) {
       jelem = $(jelem);
       // If jquery ui is not enabled then use jqm modal
       if(!jQuery().dialog) {
       	Global.modal(jelem, params);
       	return;
       }

       if (Global.dialogElement != null) {
         Global.closeDialog();
       }

       if (params == null) {
           params = {};
       }

       if (params.width == null) {
           params.width =  jelem.width();
       }

       if (params.minHeight == null) {
           params.minHeight = 50;
       }

		// added 10.21.11
		if (typeof(params.modal) == "undefined") params.modal = true;

		jelem.appendTo("body");
		$("#dialog").dialog(params).dialog('open');
        Global.dialogElement = $("#dialog");
  	},

	closeDialog : function() {
		if(!jQuery().dialog) {
			$('#jqm_window').jqmHide();
			return;
		}
	    if(Global.dialogElement != null) {
          Global.dialogElement.dialog('destroy');
          Global.dialogElement.remove();
          Global.dialogElement = null;
	    }
	    return false;
	},

    actionDialog: function(msg, callbacks, params) {
       $("#action_dialog").remove();
       var html = '<div id="action_dialog"><div id="action_dialog_msg">' + msg + '</div>';
       if(callbacks) {
        for (var action in callbacks) {
            html += '<a id="action_dialog_' + action + '" href="javascript:void(0);" class="btn">' + action + '</a>';
        }
       }
       if(params == null) {   params = {};   }
       if(params.width == null) params.width = 300;
       Global.dialog($(html), params);
       if(callbacks) {
        for (var action in callbacks) {
            var cb = callbacks[action];
            $("#action_dialog_" + action).click(cb);
        }
       }
   },

  	modal: function(jelem, params) {
  	   if($('#jqm_window').length == 0) {
  	   	  $("body").append('<div id="jqm_container" ><div id="jqm_window" class="jqmWindow"><a href="#" class="jqmClose"></a></div></div>');
  	   }
  	   $('#jqm_window').append(jelem.html());
  	   $('#jqm_window').jqm({modal: true});
  	   $('#jqm_window').jqmShow();
  	}
};



var Validation = {

  validateAction: function (form) {

    if(gDisableJSValidation) return true;
    var action = Global.getFormAction(form);
    var validateRules = gValidateRules[action];
    var ret = true;
    for(elem in validateRules) {
      var elemRules = validateRules[elem];
      if(elemRules != null) {
        ret1 = this.validateElem(action, form, elem, elemRules);
        ret = ret && ret1;
      }
    }
    return ret;
  },


  validateElem: function (action, form, elem, rules) {
    jform = $(form);
    jelem  = jform.find(":input[name='" + elem + "']");
    var required = true;
    var label = elem;
    var jLabel = jform.find("label[for='" + elem + "']");
    if(jLabel) {
      label = jLabel.text();
    }
    if(!label) {
      label = elem;
    }

    label = label.replace(':','');
    label = label.replace('*','');

/*
    if(required && jQuery.trim(jelem.val()) == "") {
      this.displayActionMessage(action, '-e-' + elem, label + " is required.", 'E', '');
      return false;
    }
*/
    for(id in rules) {
      var rule = rules[id];
      var message  = rule['message'];
      var type     = rule['rule'];
      var args     = rule['args'];

      message = message.replace("{label}", label);
      if(type == 'matchOther') {
        var otherLabel = jform.find("label[for='" + args[0] + "']");
        if(otherLabel) {
          otherLabel = otherLabel.text();
        }
        else {
          otherLabel = elem;
        }
        otherLabel = otherLabel.replace(':','');
        otherLabel = otherLabel.replace('*','');

        message = message.replace("{label1}", otherLabel);
      }

      for(i=0;i<args.length;i++) {
        message = message.replace("{" + (i+1) + "}", args[i]);
      }
      message = message.replace("*","");
	  if(required && jQuery.trim(jelem.val()) == "") {
	     this.displayActionMessage(action, '-e-' + elem, message, 'E', '');
	     return false;
	  }

      if(!this.validateElemType(jform, jelem, type, args)) {
        this.displayActionMessage(action, '-e-' + elem, message, 'E', '');
        return false;
      }
    }

    return true;
  },

  validateElemType: function (jform, jelem, type, args) {
    if(type == 'alphanumeric') {
      if(jelem.val().match(/[^\d\w]/i)) {
        return false;
      }
    }
     else if(type == 'numeric') {
      if(jelem.val().match(/[^\d]/i)) {
        return false;
      }
    }
    else if(type == 'postalcode') {
      if(jelem.val().match(/[^\d\w\s-]/i)) {
        return false;
      }
    }
    else if(type == 'minLength') {
      if(jelem.val().length < args[0]){
        return false;
      }
    }
    else if(type == 'maxLength') {
      if(jelem.val().length > args[0]){
        return false;
      }
    }
    else if(type == 'matchOther') {
      var jOther = jform.find(":input[name='" + args[0] + "']");
      if(jelem.val() != jOther.val()) {
        return false;
      }
    }
    else if(type == 'ip') {
        var bytes = jelem.val().split('.');
        if(!bytes || bytes.length != 4) return false;
        for(i in bytes) {
            var byte1 = bytes[i];
            if(isNaN(byte1) || byte1 < 0 || byte1 > 255) {
                return false;
            }
        }
    }
    else if(type == 'email') {
      return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(jelem.val());
    }
    else if(type == 'required') {
      if(jQuery.trim(jelem.val()) == '') {
        return false;
      }
    }
    return true;
  },
  displayMessages: function (action, messages, ajax) {
    var alert_flag = false;

    // Hide existing alert messages for an action
    for(msg_id1 in messages) {
      var msg_style = messages[msg_id1]['style'];
      if(msg_style == 'A'){ alert_flag = true; }
    }
    if(alert_flag) {
        if($("#alert_messages").length > 0) {
			$("#alert_messages").html("");
        }
        else {
        	$("body").append('<div id="alert_messages"></div>');
        }
    }
    jQuery(".m_global").html("");
    jQuery(".m_global").hide("");

	if(ajax) {  Global.clearActionMessages(action); }

    for(msg_id1 in messages) {

      var msg_str = messages[msg_id1]['msg'];
      var msg_type = messages[msg_id1]['type'];
      var msg_style = messages[msg_id1]['style'];
      var global_flag = messages[msg_id1]['global'];
      // for normal loading actions, do not show messages other than alert and flash
      // those messages are shown by function.msg.php
      if(!ajax && !msg_style) continue;
      if(global_flag) {
           this.displayGlobalMessage(msg_str, msg_type);
      }
      else {
        this.displayActionMessage(action, msg_id1, msg_str, msg_type, msg_style);
      }
    }
    if(alert_flag){
      if(jQuery().dialog) {
        Global.dialog($("#alert_messages") /*, { buttons: {
                                                  "Ok": function() {
                                                        Global.closeDialog();
                                                       }
                                                   },
                                              closeText: ''
                                            } */);
     }
     else {
      Global.modal($("#alert_messages"));
     }
    }
  },

  displayGlobalMessage: function(msg_str,  msg_type) {
    var error_class = "";
    if(msg_type == 'S') {       error_class = "success";    }
    else if(msg_type == 'W'){   error_class = "warning";}
    else if(msg_type == 'E'){   error_class = "error";}
    else if(msg_type == 'I'){   error_class = "info";}
    $(".m_global").append("<div class='" + error_class + "'>" + msg_str + "</div>");
    $(".m_global").show();
  },

  displayActionMessage: function (action, msg_id, msg_str, msg_type, msg_style){
    var elem_id = ".m_" + action.toLowerCase() + "-" + msg_id;
    var rest_id  = ".m_" +  action.toLowerCase() + "-REST";
    var all_id  = ".m_" +  action.toLowerCase() + "-ALL";

    var error_class = "";
    if(msg_type == 'S') {        error_class = "success";    }
    else if(msg_type == 'W'){    error_class = "warning";}
    else if(msg_type == 'E'){    error_class = "error";}
    else if(msg_type == 'I'){   error_class = "info";}

    if(!msg_style) msg_style = "";

    var msg_hide_delay = 10000;

    if(msg_style == 'A'){
      $("#alert_messages").append("<div id='dialog'><div class='dialog_content'><p class='" + error_class + "'>" + msg_str + "</p><div class='actions'><p class='ok'><a href='javascript:void(0)'>OK</a></p></div></div></div>");
    }
    else {
      if($(elem_id).length > 0) {
        $(elem_id).html(msg_str);
        $(elem_id).height("");
        $(elem_id).addClass(error_class);
        $(elem_id).show();
        if(msg_style == "F"){
          $(elem_id).show("fast", function() {
            setTimeout('$("' + elem_id + '").hide()', msg_hide_delay);
          });
        }
      }
      else if($(rest_id).length > 0) {
        $(rest_id).height("");
        $(rest_id).append("<div class='" + error_class + "' >" + msg_str + "</div>");
        $(rest_id).show();
        if(msg_style == "F"){
          $(rest_id).show("fast", function() {
            setTimeout('$("' + rest_id + '").hide()', msg_hide_delay);
          });
        }
      }
      if($(all_id).length > 0) {
        $(all_id).height("");
        $(all_id).append("<div class='" + error_class + "' >" + msg_str + "</div>");
        $(all_id).show();
        if(msg_style == "F"){
          $(all_id).show("fast", function() {
            setTimeout('$("' + all_id + '").hide()', msg_hide_delay);
          });
        }
      }

      if(msg_id.match('-e-')){
        var elem = msg_id.replace('-e-', '');
         $("form").find("label[for='"+ elem + "']").addClass("error_label");
      }

    }
  }

};

var Utils = {
  is_array: function (mixed_var) {
      return ( mixed_var instanceof Array );
  },
  is_object: function (mixed_var) {
      if(mixed_var instanceof Array) {
          return false;
      } else {
          return (mixed_var !== null) && (typeof( mixed_var ) == 'object');
      }
  },

  stripslashes: function(elem) {
    return elem.replace(/^\/+|\/+$/g,"");
  },

  handlePageload:  function(hash) {
    var hash = hash.replace(/^[#\/]+/, "");
    if (hash != "") {
        var parts = hash.split("/");
        var actions = [];
        pathname = location.pathname.replace(/\/?$/, "");
        var page, letter;
        for(var i=0;i<parts.length;i++) {
            var action = parts[i++];
            var value  = parts[i];
            if (action == 'page') {
                hash = hash.replace(/\/?page\/\d+/, "");
                pathname = pathname.replace(/\/page\/\d+/, "") + "/page/" + value;
                page = value;
            }

            if (action == 'letter') {
                // remove page number when letter is changed
                hash = hash.replace(/\/?page\/\d+/, "");
                pathname = pathname.replace(/\/page\/\d+/, "");
                hash = hash.replace(/\/?letter\/[\w-09]+/, "");
                pathname = pathname.replace(/\/letter\/[\w-09]+/, "") + "/letter/" + value;
                letter = value;
                page = 1;
            }
        }

        pathname += "/";
        if (hash) {
            hash = "#" + hash;
        }

        if (pageloadflag) {
            location.href = location.protocol + "//" + location.host +  pathname + location.search + hash;
            return false;
        } else {
            if (page && !letter) {
                Global.loadNumericPage($(".pagination.primary, .pagination_prevnext.primary"), page);
            }

            if (letter) {
               // $("#alpha_browser .load_page").html(letter).click();
               Global.loadAlphaPage($(".alpha_browser"), letter);

            }
        }
    } else {
        if (!pageloadflag) {
            var page = "1";
            var pathname = location.pathname.replace(/\/?$/, "");
            if (pathname.match(/\/page\/\d+/)) {
                page = pathname.replace(/.*\/page\/(\d+).*/, "$1");
            }

            if (pathname.match(/\/letter\/[\w-09]+/)) {
                page = pathname.replace(/.*\/letter\/([\w-09]+).*/, "$1");
            }

            if (lasthash != "" && lasthash.match(/\/page\/\d+/)) {
               Global.loadNumericPage($(".pagination.primary, .pagination_prevnext.primary"), page);
            }

            if (lasthash != "" && lasthash.match(/\/letter\/[\w-09]+/)) {
                Global.loadAlphaPage($(".alpha_browser"), letter);
            }
        }
    }

    lasthash = location.hash;
    pageloadflag = false;
    return false;
  }
};


var FormUtils = {
    validateForm: function(form) {
        $(form).find("label").removeClass("error_label");

        var action = Global.getFormAction(form);
        if (action) {
            Global.clearActionMessages(action);
        }

        var ret = Validation.validateAction(form);
        if (!ret) {
            return ret;
        }

        // Append the labels
        var labels = {};
        $(form).find("label").each(function() {
            name = $(this).attr("for");
            label = $(this).text();
            labels[name] = label;
        });

        for (name in labels) {
            $(form).append("<input type='hidden' name='_label_" + name + "' value='" + labels[name] + "' />");
        };

        // Append the form name
        var formName = '';
        if (form.name) {
            formName = form.name
        }

        $(form).append("<input type='hidden' name='_form_' value='" + formName + "' />");
        return true;
    },

    clearForm: function() {
        // iterate each matching form
        return this.each(function() {
            // iterate the elements within the form
            $(':input', this).each(function() {
                var type = this.type, tag = this.tagName.toLowerCase();
                if (type == 'text' || type == 'password' || tag == 'textarea') {
                    this.value = '';
                } else if (type == 'checkbox' || type == 'radio') {
                    this.checked = false;
                } else if (tag == 'select') {
                    this.selectedIndex = -1;
                }
            });
        });
    },

    //Reset all the form values
    formReset: function(frm) {
        for (var i=0; i<frm.elements.length; i++) {
            if (!(frm.elements[i].type && frm.elements[i].type == "submit" || frm.elements[i].type == "button" || frm.elements[i].type == "hidden")) {
                if (frm.elements[i].type == "radio" || frm.elements[i].type == "checkbox") {
                    frm.elements[i].checked = false;
                } else if(frm.elements[i].type == "select-one") {
                    frm.elements[i].selectedIndex = -1;
                } else {
                    frm.elements[i].value = "";
                }
            }
        }
    }
};

	var Debug = {
        highlight: function(action) {
            $(".debug_action_container").toggleClass("selected");
        },
        toggleActionDetails: function(elem) {
            var id = elem.id.substr(12);
            $("#debugdata_" + id).toggleClass('hidden');
        },
        handleDebugEvents: function() {

            $("#debugger_details .collapsed").live("click", function() { $(this).removeClass("collapsed");$(this).addClass("expanded");});
            $("#debugger_details .expanded").live("click", function() { $(this).removeClass("expanded");$(this).addClass("collapsed");});
            $("#debugger_details .tab").live("click", function() {
                var id = this.id;
                $(this).parents(".debugdata").find(".tab").removeClass("selected");
                $(this).parents(".debugdata").find(".data").hide();
                $("#" + id + "_data").show();
                $(this).addClass("selected");
            });
        }
    };


var captcha_public_key = "6Ld5IwkAAAAAAM55ClRMNzlAyItw4m_8_lYkqCb9";//"6LdwswIAAAAAAOfV3Y05aaG_AjerwhSaJ34sb1Nb";
var successDiv = $("<div>").attr('class','confirm').attr('id','submit_confirm').css('display', 'none');
var recaptcha_imageDiv = $("<div>").attr('id','recaptcha_image').css('display','none');
var recaptcha_challenge_field_div = $("<div>").attr('id','recaptcha_challenge_field_holder').css('display','none');
var recaptcha_responseDiv = $("<div>").attr('id','recaptcha_response_field').css('display','none');

var RecaptchaOptions = {
       theme: 'custom',
       lang: 'en',
       custom_theme_widget: 'recaptcha_widget'
};

var authElementClicked = null;

function reloadRpxProviders() {
  Global.loadAction("#rpx_providers", "RpxProviders");
};

function inviteRpxProviderUsers() {
    var output = "<div id='dialog'><div class='processing_dialog'><p id='dialog_title'><strong>Please wait</strong></p><p>Your address book is being imported...</p></div></div>";

	Global.dialog(output, {width: 300});
	location.href = MAIN_URL + "profile/invite";
	return;
};

function showUrantStatus(status) {
	if(status == "1") {
		alert("success");
	}
	else {
		alert("failed");
	}
}

$(function(){

  $(".auth").live("click", Global.handleAuth);
  $(".verify").live("click", Global.verifyUser);

  if ($('a.lightbox').length) $('a.lightbox').lightBox();

  $(".actions .ok a, .actions .cancel a, .actions .cancel").live("click", function(){
    Global.closeDialog();
  });


	/* Yume ads */

	if ($("#cb_medrect1_div").length) {
		$(window).load(function() {
			var yumeCbAdObject1 = new yumeStaticCbAd();
			yumeCbAdObject1.setPlayerMediumRectangleCompanionBannerDivSource("cb_medrect1_div");
			yumeCbAdObject1.setPlayerAdDomainUrl("http://shadow01.yumenetworks.com/");
			yumeCbAdObject1.setPlayerIframeBannerPlaylist("dynamic_banner_iframe.html?domain=88ElOFHxAh"); //temporary domain ID
		});
	}


   /*************RECAPTCHA******************/
   if ($('#recaptcha_widget').length) Recaptcha.create(captcha_public_key,"recaptcha_div", {theme: "custom"});


   /********* COMMENTS SUBMISSION ******************/
   $("#comment_form .post a").live("click", function(){
	   $("#social_publish_opt").hide();
        var comment = $("#comment").val();
        Global.ajaxSubmitAction("comment_form", function(data){
         $("#comments_container").html(data);
         $("#social_publish_opt").show();
      });
   });

    /********* MAILING LIST ******************/

    var hintText = null;
    var submit_lock = false;

    $("#mailing_list #email")
      .focus(function() {
        if ($(this).hasClass("hint")) {
          if (!hintText) hintText = $(this).val();
          if (hintText == $(this).val()) {
            $(this)
              .val("")
              .removeClass("hint");
          }
        }
      })
      .blur(function() {
        if (($(this).val() == "") && hintText) {
          $(this)
            .addClass("hint")
            .val(hintText);
        }
      });

    $("#mailing_list a").live("click", function(){
      if (!submit_lock) {
        var email = $("#mailing_list #email").val().replace(/^\s+|\s+$/g,"");
        if (!$("#mailing_list #email").hasClass("hint") && (email != "")) {
          var reg = new RegExp("^[0-9a-zA-Z\+]+@[0-9a-zA-Z]+[\.]{1}[0-9a-zA-Z]+[\.]?[0-9a-zA-Z]+$");
          if (reg.test(email)) {
            submit_lock = true;
            Global.ajaxSubmitAction("mailing_list", function(data) { submit_lock = false; });
          } else {
            alert("Please enter a valid email address.");
          }
        }
      }
      return false;
    });

    /********* COMING NEXT ******************/
    $(".btn.more_info a, #ask ul .more a, #ask_entry .more").live("click", function(){
	    if (($(this).parent().attr("class") == "more") || ($(this).attr("class") == "more")) {
	    	if (($('#ask_entry').attr('class') == 'music') || ($('#ask_entry').attr('class') == 'style') || ($('#ask_entry').attr('class') == 'uqanda')) {
	    		var section = $('#ask_entry').attr('class');
	    	} else {
	    		var section = "video";
	    	}
	    }

      Global.getAction("MoreInfo",{section:section},function(data){
      	dialog_class(data);
      });
    });

    $("#ask ul .submit a, #ask_entry .submit").live("click", function(){
    	if (($('#ask_entry').attr('class') == 'music') || ($('#ask_entry').attr('class') == 'style') || ($('#ask_entry').attr('class') == 'uqanda')) {
	    	var section = $('#ask_entry').attr('class');
	    } else {
	    	var section = "video";
	    }
      Global.getAction("UpcomingForm",{section:section},function(data){
      	Global.dialog(data,{width: 600});
     	});
  	});

    $("#upcoming_form .submit a").live("click", function(){
      if($("#btnSubmit").length) {
      Global.ajaxSubmitJSON("upcoming_form", function(data) {
      });
      }
    });
		/********* USER INVITATION ALERT MESSAGE *********/
		$('a#no_thanks').live('click', function(){
			Global.getAction('DisableReminder', {}, function(data){
				if(data) {
          Global.closeDialog();
        }
			});
		});

	// resend verification email
	$("#resend_link").live("click", function() {
		var isDialog = $(this).parents("#dialog").length;
		Global.getJSONAction("ResendEmail", {}, function(data){
			if (data.response.success && !isDialog) $("#status-msg").fadeOut("fast", function() { $(this).remove(); });
		});
	});

    /********* LOGOUT ********************/

   $(".logout a").live("click", function(){
      Global.postAction("Logout", {}, function(data){
        location.href = location.href;
      });
   });

    /********* SUBMIT REVIEWS ******************/
   $(".submit_review a").live("click", function(){
      Global.getAction("SubmitReviews", {}, function(data){
        Global.dialog(data,{width: 600});
        //return false;
      });
   });

    $("#submitreviews_form .submit a").live("click", function(){
      if($("#btnSubmit").length) {
        Global.ajaxSubmitJSON("submitreviews_form", function(data) {
       });
      }
    });

  /******************SUBMIT Ublog ************************/

   $(".submit_blog_post a").live("click", function(){
       var section = $("#feature").attr("class");
       Global.getAction("SubmitUblog",{section:section},function(data){
        Global.dialog(data,{width: 600});
        //return false;
      });
   });

    $("#submitUblog_form .submit a").live("click", function(){
      if($("#btnSubmit").length) {
          Global.ajaxSubmitJSON("submitUblog_form", function(data) {
        });
      }
    });


   /*******Submit forms on enter keypress******/

  $("form :input").live("keypress",function(e) {
    //if( (e.keyCode == 13) &&(this.tagName!='TEXTAREA')) {
     if( (e.keyCode == 13) &&(this.tagName=='INPUT')) {
      $(this).parents("form").find(".submit a").click();
      return false;
    }
  });

     /********* CONTACT ******************/
   $(".contact_btn a").click(function(){
      Global.getAction("Contact", {}, function(data){
        Global.dialog(data,{width: 600});
       // return false;
      });
   });

    $("#contact_form .actions .submit a").live("click", function(){
      Global.ajaxSubmitJSON("contact_form", function(data) {
      });
      return false;
    });

     /********* HOME HOROSCOPE ******************/
     $(".btn.ask_question a").live("click", function(){
      Global.getAction("UpcomingForm",{section:'horoscope'},function(data){
        Global.dialog(data,{width: 534});
      });
   });
  /***************** Login link****************/
     $("#nav #login a").live("click", function(){
       Global.getAction("Login",{section:'login'},function(data){
         dialog_class(data, false, 670);
       });
     });

     if(RPX_ENABLED) {
     $("#nav .register a, #nav .fb a").live("click", function(){
         Global.getAction("PreRegister",{},function(data){
           dialog_class(data);
         });
         return false;
      });
     }

     $("#login_now a").live("click", function(){
        Global.getAction("Login",{section:'login'},function(data){
          dialog_class(data, false, 670);
        });
  });

  /****************** LOGIN ********************/
  $(".ui-dialog #login_form .btn.submit a").live("click", function(event) {
      // ajax submit
      var login_submit = $("#login_form ul").attr("class");
      Global.ajaxSubmitJSON("login_form", function(data) {
        is_logged = true;
    	is_verified = data.response.is_verified;
        if(login_submit){
          Global.closeDialog();
          Global.loadAction("#loginContainer", "LoginWindow");
        }
        else {
          Global.finishAuth();
        }
      });
        return false;
    });


  /*************FORM SUBMIT******************/


    $(".btn.submit a").live("click", function() {
    // hack to come around with event live bug in chrome
       if($(this).hasClass("ajax")) {
        return;
       }
      // normal submit
      $(this).parents("form").submit();
       //return false;
     });

    /*************CANCEL SUBMIT******************/

    $(".cancel a").live("click", function() {
      location.href = '/';
    //return false;
     });


    /*********CAPTION VOTE FORM SUBMIT*********/
    $(".btn.submit_vote a").live("click", function() {
      // normal submit
      $(this).parents("form").submit();
       //return false;
     });

    /*********CAPTION FORM SUBMIT*********/
    $(".btn.submit_caption a").live("click", function() {
      // normal submit
      $(this).parents("form").submit();
       //return false;
     });


  /********* REGISTER PAGE******************/
  $('.state_block').hide();
  //Show Captcha on the register page
     if ($('#recaptcha_holder').length){
          Recaptcha.create("6Ld5IwkAAAAAAM55ClRMNzlAyItw4m_8_lYkqCb9",'recaptcha_holder', {
               theme: 'red',
               tabindex: 0,
               callback: Recaptcha.focus_response_field
           });
     }

  if ($(".register").length > 0){
    if( $('select[name=country]').val()== 'US'){
      $('.city_block').hide();
      $('.zip_block').show();
    }else if($('select[name=country]').val()==''){
      $('.city_block').hide();
      $('.zip_block').hide();
    } else{
      $('.city_block').show();
      $('.zip_block').hide();
    }
  }

  $('select[name=country]').change(function(){
    //alert($(this).val());
    if( $(this).val()== 'US'){
      $('.city_block').hide();
      $('.zip_block').show();
    }else if($(this).val()==''){
      $('.city_block').hide();
      $('.zip_block').hide();
    } else{
      $('.city_block').show();
      $('.zip_block').hide();
    }
  });


/************more hot shot for caption***********/

$('.more_hot_shot').click(function(){
  var count = $("#previous_hot_shot .grid li.hid").length;
  var section = $("#previous_hot_shot").attr("class");
  var date = $("#previous_hot_shot .grid li:last").attr("class");
  Global.getAction("PreviousHotShotListing", {index:count, section:section, date:date}, function(data){
    $("#previous_hot_shot .grid").append(data);
    if ($("#previous_hot_shot .grid li.hid.last").length > 0) $(".more_hot_shot").hide();
  });
 });


/****************more recent activity******/

$('.more_recent_activity').click(function(){
  var datetime = $("#recent_activity .more_activity li:last").attr("class");
  var user_id = $("#recent_activity").attr("class");
  Global.getAction("RecentActivityListing", {user_id:user_id, datetime:datetime}, function(data){
    $data = jQuery.trim(data);
    $("#recent_activity .more_activity").append($data);
    var count_li = $("#recent_activity .more_activity li").length;
   if($data.length == 0 || count_li%11 != 0){
    $(".more_recent_activity").hide();
    }
  });
});

/***************more tags***************/
/*
$('.view_more_tags').click(function(){
  var datetime = $("#main .more_tag li:last").attr("class");
  var tag_name = $("#tag").attr("class");
  Global.getAction("TagListing", {tag:tag_name, datetime:datetime}, function(data){
    $data = jQuery.trim(data);
    $("#main .more_tag").append($data);
    var count_li = $("#main .more_tag li").length;
    if($data.length == 0 || count_li%16 != 0){
      $(".view_more_tags").hide();
    }
  });
});
*/
 /************** js pagination**********/

 $('.lookbook .next  a').click(function() {
    slideSwitch('next', $(this).parents(".lookbook"));
 });

  $('.lookbook .prev  a').click(function() {
    slideSwitch('prev', $(this).parents(".lookbook"));
 });

  /************** js host shot slides**********/

 $('.slide_show .local_nav li').click(function(){
   var index = $('#slide_initial_index').attr('class');
   var count = $('#slide_initial_index').attr('slideCount');
    hotshotSwitch($(this).attr('class'),index,count);
 });

 $('.profile .remove_rpx').live("click", function() {
   var id = this.id.substr(4);
   Global.getJSONAction("DeleteRpxProvider", {provider: id}, function(data) {
    Global.loadAction("#rpx_providers", "RpxProviders");
   });
 });

 /* show the rpx overlay with all providers */
 $('.profile .add_rpx, .invite_rpx').live("click", function() {
   var frndIvt = ($(this).attr("class") == 'invite_rpx')? 1 : 0;
   Global.showAddRpxPopup(frndIvt);
 });
 
 $('#no_thanks').live("click", function() {
   $('#invite_head').slideUp('slow');
 });
 
 $('#g_frnd_invit').live("click", function() {
   var frndIvt = 1;
   Global.showAddRpxPopup(1);
 });

 $('#add_rpx_provider').live("click", function() {
   Global.showAddRpxPopup();
   Global.closeDialog();
 });

 /****************Invite friends***************/
 $(".multi_select").live("click", function() {
	 var curr_id = $(this).attr("id");
	 if(curr_id == 'all') {
		 $(".check_list").find("input").attr("checked", "checked");
	 }
	 else if(curr_id == "none") {
		 $(".check_list").find("input").removeAttr("checked");
	 }
 });

 $(function (){
 	 if ($('#msg_text').length) {
	   var curr_val = $('#msg_text').val().length;
 	 	 var default_val = 500;
 	 	 curr_val	= default_val - curr_val;
 	 	 $('#msg_inst').html(curr_val+' characters remaining');
 	 }
 });

 $("#msg_text").live("keyup", function() {
	 var curr_val = $("#msg_text").val().length;
	 var default_val = 500;

	 curr_val = default_val - curr_val;
	 if(curr_val < 1) {
		 $(".inviteUser").find("a").removeAttr("id");
		 $("#msg_inst").hide();
		 $("#msg_exceed").show();
	 }
	 else {
		 $(".inviteUser").find("a").attr("id", "invite_submit");
		 $("#msg_inst").html(curr_val + " characters remaining").show();
		 $("#msg_exceed").hide();
	 }
 });

 $("#invite_submit").live("click", function() {
	 $("#invite_frnds").submit();
 });

  /*****************SUBMIT Urant*******************/

	 $(".submit_urant_post a").live("click", function() {
	 	$.getScript(URL_PREFIX_JS+"dropioApiClient.js", function(data, status) {
	    if(status == "success") {
		    var section = $("#feature").attr("class");
		    Global.getAction("UrantUploadVideo",{section:section},function(data){
		            Global.dialog(data,{width: 600});
		    });
	    }
    });
	 });

  /***********publish caption or vote to social publishing widget*************/
  $(".pub_cap_vote").live("click", function() {
	  var share_display = $("#share_display").html();
	  var action = $("#action").text();
	  var url = $("#url").html();
	  showSocialWidget(share_display, action, url, '', '');
  });

  /**************publish content to social widget from recent activity list***************/
  $(".publish").live("click", function() {
	  var share_display = $(this).parents("li").find(".share_display").html();
	  var caption = $(this).parents("li").find(".caption").text();
	  var url = ($(this).hasClass("comment"))? $(this).parents("li").find("a").attr("href") : $(this).parents("li").find(".url").html();
	  var shorten_url = ($(this).hasClass("comment"))? {urlShortening: true} : '';
    var title = $(this).parents("li").find(".publish_title").text();
    var caption_link = $(this).parents("li").find(".caption_link").text();
    if (caption_link) caption = caption + " "+ caption_link;
    if (!title) title = " ";
	  showSocialWidget(share_display, caption, url, shorten_url, title);
  });

  // Capture the clicks for all Third-party Feeds and WebWatch links uisng Google Analytics
	$("#tp_feeds a, #webwatch a").live("click", function(){
		var category = $(this).parents("#tp_feeds").length ? "Third-party Feeds" : "WebWatch";
		var gp = $(this).parent().parent();
		var site = $(this).parents("#tp_feeds").length ? gp.find(".feed_logo a img").attr("alt") : gp.find("span").html();
		trackEventUsingGA(category, 'Site Click', site);
		trackEventUsingGA(category, 'Link Click', $(this).attr("href"));
		return true;
	});

	// Celeb select module navigation handler
	if($("#celeb_select").length) {
		$("#celeb_select .cs_nav a").live("click", function() {
			var nav_item = $(this);
			if(nav_item.hasClass("active")) return;

			$("#celeb_select .cs_nav a.active").removeClass("active");
			nav_item.addClass("active");

			var containerElem = nav_item.parents("#celeb_select").find(".cs_entry");
			containerElem.css('min-height', containerElem.css("height")).html("");
			Global.getAction("CelebSelectEntry", {celeb_select_id: nav_item.attr("id").substr(3)}, function(data) {
				containerElem.html(data).css('min-height', '0px');
			});
		});
	}

	// trending video module navigation handler
	if ($("#trending_video").length) {

		$("#trending_video .main_tv_nav li:gt(0)").css("display", "none");
		$("#trending_video .tv_nav li:first").css("display", "none");		
		
		$("#trending_video .tv_nav li").live("click", function () {
			$("#trending_video .tv_nav li").show();
			$(this).hide();

			var cur_thumb_index = $("#trending_video .tv_nav li").index(this);
			$("#trending_video .main_tv_nav li").css("display", "none");
			$("#trending_video .main_tv_nav li:eq("+cur_thumb_index+")").css("display", "block");			
		});
	}	

});

// Track events using Google Analytics
function trackEventUsingGA(category, action, url) {
	var et = _gat._createTracker("UA-5546980-1");
	et._trackEvent(category, action, url);
}

function dialog_class(data, show_close_btn, width) {
  if(!width) width = 600;
  var output = '<div id="dialog"><div class="dialog_content">' + data;
  if (show_close_btn) output += '<div class="ui-close"><p class="actions"><a class="cancel" href="javascript:void(0);">Close</a></p></div>';
  output += '</div></div>';
  Global.dialog(output,{width: width});
}

/***LOOKBOOK LOGIC*****/
function slideSwitch(page_mode, lookbook_obj) {
    var $active = $('.active', lookbook_obj);
    if (page_mode == 'next') var $sibling = $active.next('.slides').length ? $active.next() : $('.slides:first', lookbook_obj);
    if (page_mode =='prev') var $sibling = $active.prev('.slides').length ? $active.prev() : $('.slides:last',lookbook_obj);

    $sibling.removeClass("hidden");
    $sibling.addClass("active");
    $active.removeClass("active");
    $active.addClass("hidden");
}

/**** publish the content using social widget ***/
function showSocialWidget(share_display, action, url, shorten_url, title) {
  RPXNOW.loadAndRun(['Social'], function () {
      var activity = new RPXNOW.Social.Activity(
          share_display,
          "posted from Uinterview",
          url);
      action = action.replace('"', '\"');
      activity.setUserGeneratedContent(action);
      if(title) {
        activity.setTitle(title);
      }
      if(shorten_url) {
    	  RPXNOW.Social.publishActivity(activity, shorten_url);
      }
      else {
    	  RPXNOW.Social.publishActivity(activity);
      }
  });
}

/*** HOT SHOT SLIDES LOGIC****/

function hotshotSwitch(page_mode,initial_index, slide_count){
  if(page_mode=="prev"){
    initial_index = parseInt(initial_index) - 3;
  }else{
    initial_index = parseInt(initial_index) + 3;
  }

  if(initial_index < 0){
    initial_index = (parseInt(slide_count)) -3;
  }
  if(initial_index >= parseInt(slide_count)){
    initial_index = 0;
  }

  Global.getAction("NewsHotShot",{index:initial_index},function(data){
          $(".slides ul li").remove();
          $(".slides ul").html(data);
  });

  $("#slide_initial_index").setAttribute("class", initial_index);
}


$(function() {

	/* HOME SLIDESHOW */

	if ($("body.home").length) {
		// Get the slides count
		mySlider.slidesCount = $("#slides .slide").length;

		// Start the slider if there are more than 1 slides or on Custom Series Slideshow detail
		if (mySlider.slidesCount > 1) {
			mySlider.startSlider();

			// Handle the mouse over and out of the slide as well as the navigation buttons
			$("#slides .slide, #slider-controls .nav, #slider-thumbs li a").hover(function() {
					mySlider.stopSlider();
				}, function() {
					mySlider.startSlider();
				}
			);

			// Handle the clicks of navigation(prev & next) buttons
			$("#slider-controls .nav").live("click", function() {
				if (mySlider.animLock) return;

				var nav_type = $(this).hasClass("next-nav") ? "next" : "prev";
				mySlider.changeSlide(nav_type);
			});

			// Handle the clicks of thumbnail images
			$("#slider-thumbs li a").live("click", function() {
				if(mySlider.animLock || $(this).hasClass("selected")) return;

				var thumbIndex = $(this).parent().index();
				if(mySlider.slidesCount > 3) {
					if(thumbIndex == 2) {
						mySlider.scrollThumbs(thumbIndex);
					} else {
						mySlider.loadNextThumb();
					}

					mySlider.loadNextSlide(thumbIndex);

				} else {
					// Highlight the selected thumb image
					var oldThumbIndex = $("#slider-thumbs li a.selected").parent().index();
					$("#slider-thumbs li a.selected").removeClass("selected");
					$(this).addClass("selected");

					// Load the corresponding slide of the selected thumb image
					(thumbIndex > oldThumbIndex) ? mySlider.loadNextSlide(thumbIndex - oldThumbIndex) : mySlider.loadPrevSlide(oldThumbIndex - thumbIndex);
				}
			});
		}
	}
});


// Uinterview functions
var ui = {
	statusMessage: function(msg, dialog) {
		if (dialog) {
			var dialogDIV = $("<div/>").attr("id", "dialog");
			var dialogContentDIV = $("<div/>").addClass("dialog_content");
			$(dialogContentDIV).html("<p class='status'>"+msg+"</p><div class='actions' align='center'><a class='cancel' href='javascript:void(0);'>close</a></div>");
			$(dialogDIV).append(dialogContentDIV);
			Global.dialog(dialogDIV, {width: 500});
		} else {
			var statusDIV = $("<div/>");
			$(statusDIV)
				.attr("id", "status-msg")
				.html(msg);
			$("#content").prepend(statusDIV);
		}
	}
};


/* Slider object with all the variables and functions */
var mySlider = {

	slidesCount: 0,							// Maintain the slides count
	sliderDuration: 3000,				// Slide pause duration
	animLock: false,						// Animation status flag
	slideAnimInterval: 500,			// Slide animation interval
	thumbAnimInterval: 400,			// Thumbnail animation interval
	sliderInterval: null,				// Slider interval referense, useful to clear the interval

	// Set or update the z-index of all the slides in the order of their indexes
	setSlideZIndexs: function() {
		$("#slides .slide").each(function() {
			$(this).css("z-index", (mySlider.slidesCount - $(this).index()));
		});
	},

	// Start slider with the corresponding interval
	startSlider: function() {
		if(!mySlider.animLock && mySlider.sliderInterval == null) {
			mySlider.sliderInterval = setInterval(mySlider.changeSlide, mySlider.sliderDuration);
		}
	},

	// Stop the slider and unset the reference pointer
	stopSlider: function() {
		clearInterval(mySlider.sliderInterval);
		mySlider.sliderInterval = null;
	},

	// Change the slide according to the specified type(next - DEFAULT, prev etc.)
	changeSlide: function(changeType, onlyThumb) {
		onlyThumb = (typeof(onlyThumb) != "undefined") ? onlyThumb : false;
		if(mySlider.animLock) return;

		// Load the previous thumbnail and the corresponding slide
		if (changeType == "prev") {
			(mySlider.slidesCount > 3) ? mySlider.loadPrevThumb() : mySlider.highlightPrevThumb();
			if (!onlyThumb) mySlider.loadPrevSlide();

		// Load the next thumbnail and the corresponding slide
		} else {
			(mySlider.slidesCount > 3) ? mySlider.loadNextThumb() : mySlider.highlightNextThumb();
			if (!onlyThumb) mySlider.loadNextSlide();
		}
	},

	// Load the next slide container
	loadNextSlide: function(thumbIndex) {
		if(mySlider.animLock) return;
		mySlider.animLock = true;
		var elemCount = (thumbIndex == undefined) ? 1 : thumbIndex;
		$("#slides .slide").show();

		$("#slides .slide:first").fadeOut(mySlider.slideAnimInterval, function() {
			// Move the specified no of slides to the end of parent container
			for(var i = 0; i < elemCount; i++) {
				$("#slides .slide:first").appendTo("#slides");
			}

			mySlider.setSlideZIndexs();
			$("#slides .slide:first").fadeIn(mySlider.slideAnimInterval);
			mySlider.animLock = false;
		});
	},

	// Load the previous slide container
	loadPrevSlide: function(thumbIndex) {
		if(mySlider.animLock) return;
		mySlider.animLock = true;
		var elemCount = (thumbIndex == undefined) ? 1 : thumbIndex;
		$("#slides .slide:not(0)").hide();

		$("#slides .slide:first").fadeOut(mySlider.slideAnimInterval, function() {
			// Move the specified no of slides to the start of parent container
			for(var i = 0; i < elemCount; i++) {
				$("#slides .slide:last").prependTo("#slides");
			}

			mySlider.setSlideZIndexs();
			$("#slides .slide:first").fadeIn(mySlider.slideAnimInterval);
			mySlider.animLock = false;
		});
	},

	// Load and highlight the next thumbnail image
	loadNextThumb: function() {
		$("#slider-thumbs li:first").animate({marginLeft: "-86px"}, mySlider.thumbAnimInterval, function() {
			$("#slider-thumbs li:first").appendTo("#slider-thumbs ul");
			$("#slider-thumbs li:last").css("marginLeft", "0px");
			$("#slider-thumbs li a.selected").removeClass("selected");
			$("#slider-thumbs li:first a").addClass("selected");
		});
	},

	// Load and highlight the previous thumbnail image
	loadPrevThumb: function() {
		$("#slider-thumbs li a.selected").removeClass("selected");
		$("#slider-thumbs li:last").prependTo("#slider-thumbs ul").css("marginLeft", "-86px");

		$("#slider-thumbs li:first").animate({marginLeft: "0px"}, mySlider.thumbAnimInterval, function() {
			$("#slider-thumbs li:first a").addClass("selected");
		});
	},

	highlightNextThumb: function() {
		var currThumb = $("#slider-thumbs li a.selected");
		if(currThumb.parent().index() == (mySlider.slidesCount - 1)) {
			currThumb.removeClass("selected");
			$("#slider-thumbs li:first a").addClass("selected");
		} else {
			currThumb.removeClass("selected").parent().next().find("a").addClass("selected");
		}
	},

	highlightPrevThumb: function() {
		var currThumb = $("#slider-thumbs li a.selected");
		if(currThumb.parent().index() == 0) {
			currThumb.removeClass("selected");
			$("#slider-thumbs li:last a").addClass("selected");
		} else {
			currThumb.removeClass("selected").parent().prev().find("a").addClass("selected");
		}
	},

	// Scroll all the thumbs before the selected thumbnail
	scrollThumbs: function(thumbIndex) {
		// Add a temporary class for the required thumbs to animate at the same time
		var tempClass = "animateGrp";
		$("#slider-thumbs li."+tempClass).removeClass(tempClass);
		$("#slider-thumbs li:lt("+thumbIndex+")").addClass(tempClass);

		$("#slider-thumbs li."+tempClass).animate({marginLeft: "-90px"}, mySlider.thumbAnimInterval, function() {
			// Move all the required thumbs and remove the temporary class
			$("#slider-thumbs li."+tempClass).appendTo("#slider-thumbs ul");
			$("#slider-thumbs li."+tempClass).css("marginLeft", "0px");

			// Highlight the selected thumbnail image
			$("#slider-thumbs li a.selected").removeClass("selected");
			$("#slider-thumbs li:first a").addClass("selected");
		});
	}
};

