/*  Zedge Standard JS library v2. (c) 2009  */

// -------------------------------------------------------------------------------
// JS-file: zedge.js
// -------------------------------------------------------------------------------
var debugTimer = Class( {
	initialize: function() {
		this.startTime = new Date().getTime();
	},
	getDiff : function() {
		var now = new Date().getTime();
		//console.log( now - this.startTime );
	}
} );

var keywords = new Hash( {
	// Default
	0 : 'Search...',
	// wallpapers
	1 : 'Keyword, car, love, pink',
	// themes
	2 : 'Keyword, car, animated, love',
	// Games
	3 : 'Keyword, racing, tetris, football',
	// Ringtones
	4 : 'Keyword, band, song, funny',
	// TxTs
	5 : 'Keyword, funny, joke',
	// Videos
	9 : 'Keyword, funny, football, extreme',
	// People
	19 : '',
	// Forum
	20 : 'Keyword, tutorial, operator, unlock'
} );

/* window.addEvent( 'domready', function () {
	 zjsRunDomReady();

});*/


function zjsRunDomReady(){

	// Array  of anchors which will be parsed
	var mainAnchors = new Array('headerLink', 'menuHome', 'menuDownload', 'menuTools', 'menuUpload', 'menuCommunity', 'getmoveable', 'getmoveableLink', 'tabSearchButton');

	// Front page specific
	if (document.getElementById('front-page')) {
		// Front-page anchors
		var frontMainAnchors = new Array('fm-ringtones-link', 'fm-videos-link',	'fm-wallpapers-link', 'fm-games-link','fm-TxTs-link', 'fm-themes-link');
		// Add anchors to general anchor-array
		mainAnchors = mainAnchors.concat(frontMainAnchors);
	}

	// Work on anchors
	for( var i = 0; i < mainAnchors.length; i++ ) {
		var anchorElement = mainAnchors[i];
		if( document.getElementById(anchorElement)) {
			zjsBlurLink( anchorElement );
		}
		if( $defined( $( anchorElement ) ) && $( anchorElement ).hasClass( 'mainMenu' ) ) {
			$( anchorElement ).addEvent( 'mouseenter', function() {
				var fx = new Fx.Morph( this, { duration : 200, wait : false } );
				if (!this.getParent().hasClass('active')) fx.start({ 'background-color': '#a00' });
			});
			$( anchorElement ).addEvent( 'mouseleave', function() {
				var fx = new Fx.Morph( this, { duration : 200, wait : false } );
				if (!this.getParent().hasClass('active')) fx.start({ 'background-color': '#000' });
			});
		}
	}


	// Hide overlays over tabs and menus
	// Note: scheduled for removal
	var menuOverlays = new Array( 'fm-overlay', 'fp-overlay' ); //'fs-overlay',

	for( var i = 0; i < menuOverlays.length; i++ ) {
		var overlayElement = menuOverlays[i];
		if( $defined( $(overlayElement) ) ) {
			$( overlayElement ).setStyle( 'display', 'none' );
			$( overlayElement ).setStyle( 'opacity', '0' );
		}
	}

	if($defined($('main_moveable'))) {
		new Asset.javascript('/js/mooveable.js?3', {'charset' : 'utf-8'});
	}

	//pro reg, deprecated
	if( $defined($('PLMenuWrapper')) ){
		var PLinks = $$( '#PLMenu li[id!=PLHeader]' );
		PLinks.setStyle('cursor', 'pointer');
		PLinks.each(function(el) {
			el.addEvent('click', function(e){
				e.stop();
				var title = el.getFirst().getFirst().get('html');
				var type;
				$chk(proTypeMap[title]) ? type=proTypeMap[title] : type='0';
				window.location = '/register-partner/?t=' + type;
			});
		});
	}

	if( $defined( $('myspaceimport') ) ){
		var myspaceslider = new Fx.Slide( $('myspaceimport'), {duration:400} ).hide();
		$('myspaceimport').setStyle('display', 'block');
		$('myspacetoggler').addEvent( 'click', function(){ zjsMsToggle(myspaceslider); } );
		$('profile_frm').addEvent('submit', function(e) {
			e.stop();
			zjsGetMSData( $('myspaceuser').value );
		});
	}

	if( $defined( $('skipAdButtonLarge') ) ){
		window.setTimeout( enableSkipAdButton, 6000);
	}

	$$( 'input' ).each( function( el ) {

		if( el.hasClass('blackbutton') ) {
			el.addEvent( 'mouseover', function () { this.addClass( 'hover' ) } );
			el.addEvent( 'mouseout', function () { this.removeClass( 'hover' ) } );
		}

		if(!el.hasClass( 'searchbutton' ) && ( el.get( 'type' ) == 'submit' || el.get( 'type' ) == 'button' )) {
			el.addEvent( 'mouseenter', function() { el.setStyle('backgroundPosition','bottom left'); });
			el.addEvent( 'mouseleave', function() { el.setStyle('backgroundPosition','top left'); });
		}

		if( el.get( 'disabled' ) ) {
			el.addClass( 'disabled' );
		}

	});



	if ($defined($('tabs_dl_default'))){
		var content_tabs = new CTabsNew(
			[
				{id: 'content_tabs_2',	url: '/ajax/ajax-get-dl-items.php?ctype=2', content_type: 2},
				{id: 'content_tabs_4',	url: '/ajax/ajax-get-dl-items.php?ctype=4', content_type: 4},
				{id: 'content_tabs_9',	url: '/ajax/ajax-get-dl-items.php?ctype=9', content_type: 9},
				{id: 'content_tabs_1',	url: '/ajax/ajax-get-dl-items.php?ctype=1', content_type: 1},
				{id: 'content_tabs_5',	url: '/ajax/ajax-get-dl-items.php?ctype=5', content_type: 5},
				{id: 'content_tabs_3',	url: '/ajax/ajax-get-dl-items.php?ctype=3', content_type: 3}
			], 'browse'
		);
	}

	if ($defined($('tabs_dl_usa'))){
		var content_tabs = new CTabsNew(
			[
				{id: 'content_tabs_4',	url: '/ajax/ajax-get-dl-items.php?ctype=4', content_type: 4},
				{id: 'content_tabs_9',	url: '/ajax/ajax-get-dl-items.php?ctype=9', content_type: 9},
				{id: 'content_tabs_1',	url: '/ajax/ajax-get-dl-items.php?ctype=1', content_type: 1},
				{id: 'content_tabs_3',	url: '/ajax/ajax-get-dl-items.php?ctype=3', content_type: 3},
				{id: 'content_tabs_5',	url: '/ajax/ajax-get-dl-items.php?ctype=5', content_type: 5},
				{id: 'content_tabs_2',	url: '/ajax/ajax-get-dl-items.php?ctype=2', content_type: 2}
			], 'browse'
		);
	}

	if ($defined($('zedgers_tab1'))){
		var people_tabs = new CTabsNew(
			[
				{id: 'zedgers_tab1',  url: '/ajax/ajax-get-people-items.php?ptype=online'},
				{id: 'zedgers_tab2',  url: '/ajax/ajax-get-people-items.php?ptype=ranks'},
				{id: 'zedgers_tab3',  url: '/ajax/ajax-get-people-items.php?ptype=subscribed'}
			], 'people'
		);
	}


	if ($defined($('related_items'))){
		var related_tabs = new CTabsRelated(
			[
				{id: 'related_tab_1',	url: '/ajax/ajax-get-related-items.php'},
				{id: 'related_tab_2',	url: '/ajax/ajax-get-related-items.php?tab='+related.tab2+
													'&ctype='+related.ctype+'&type='+related.subtype+
													'&cat='+related.cat+'&uid='+related.uid+
													'&limit='+related.limit+'&filter='+related.filter}
			], related, unescape(related.cache)
		);
	}

	if ($defined($('upload_items'))){ var upload_tabs = new CTabsUploads( tobj ); }

	// Initialize functions
	tabs();


}

/**
 * Prevent dashed line around links when clicked
 */
function zjsBlurLink(id) {
	$(id).addEvent('focus', function() {
		this.blur();
	})
}

/**
 * Enable submit button after delay
 */
function enableSkipAdButton(){
	var el = $('skipAdButtonLarge');
	el.removeProperty("disabled");
	el.removeClass("disabled");
}


/**
* Function to reassign lightboxes when HTML is updated
*/
function ZJSReassignLightboxes() {
	// Lightboxes
	if ( $defined( $$('a[rel=boxed]')[0] ) ){
		$$('a[rel=boxed]').each( function( el ) {
				SqueezeBox.assign(el, {
					classOverlay: 'previewBox',
					classWindow: 'previewBox'
				});
		});
	}

	if ( $defined( $$('.parseLightbox')[0]) ) {
		$$( 'a.parseLightbox' ).each( function( element ) {
			// No need to reassign already assigned lightbox
			if( !element.hasClass( 'assigned' ) ){
				element.addEvent( 'click', function( event ) {
					event.stop;
				} );
				SqueezeBox.assign( element, {
					parse: 'rel'
				});
				element.addClass( 'assigned' );
			}
		});
	}
}


var http_request = false;
var ajax_update_div = '';
var ajax_slide_out_delay=0;
var ajax_slide_delay_function='';
var ajax_slide_div='';
var global_callback;

/*	Creates a rewrite-style string */
function makeURLString(str) {
	str = str.toLowerCase();
	str = str.replace(/ /g, '-');
	str = str.replace(/--/g, '-');
	str = str.replace(/\//g, '-');

	achars	= 'abcdefghijklmnopqrstuvwxyz0123456789-';
	new_str	= '';

	for (var i=0; i<str.length; i++) {
		if (achars.indexOf(str.charAt(i)) != -1) {
			new_str += str.charAt(i);
		}
	}
	return new_str;
}

function setFormElement(obj, value, type){
	if (type=="select"){
		for (x=0;x<obj.length;x++){
			if (obj.options[x].value==value){
				obj.selectedIndex=x;
				return;
			}
		}
	}
	if (type=="radio"){
		for (x=0;x<obj.length;x++){
			if (obj[x].value==value){
				obj[x].checked=1;
				return;
			}
		}
	}
}

function showLayer(id, parent, dx, dy) {
	var obj	= $(id);
	if(obj.style.visibility != 'visible') {
		if(typeof(parent) == 'string') parent=$(parent);
		if (obj.parentNode!=document.body) document.body.appendChild(obj);
		pos=parent.getPosition();
		obj.style.left=(dx+pos.x)+"px";
		obj.style.top=(dy+pos.y)+"px";
		obj.style.visibility	= 'visible';
	} else {
		obj.style.visibility	= 'hidden';
	}
}

function hideLayer(id){
	$(id).style.visibility='hidden';
}

// Makes an AJAX request
function makeRequest(url,callback) {
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
    	http_request = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE
    	http_request = new ActiveXObject("Microsoft.XMLHTTP");
    }
	http_request.onreadystatechange = callback;
    http_request.open('GET', url, true);
	http_request.send(null);
}


function validateEmail(email){
	var emailFilter=/^.+@.+\..{2,4}$/;
    if (!emailFilter.test(email)) {
    	return false;
    }else{
    	var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/;
		if (email.match(illegalChars)) {
			return false;
       	}
    }
    return true;
}


function displayZCode(id, mode, container){

	if(mode == true){
		if(container == 'tr'){
			$(id).removeClass('zCodeTrHidden');
		}else{
			$(id).style.display = 'block';
		}
	}
	else{
		if(container == 'tr'){
			$(id).addClass('zCodeTrHidden');
		}
		else{
			$(id).style.display = 'none';
		}
	}
}

function doBlur(obj){
	$(obj).innerHTML="";
}

function doArea(obj,obj_target,max_length,allowed_chars){

	obj_target=$(obj_target);
 	if(obj.value.length > max_length) {
	    obj.value = obj.value.substring(0, max_length);
  	}
  	if (allowed_chars!="*"){
  		new_val="";
  		for (i=0; i<obj.value.length; i++) {
    		if (allowed_chars.indexOf(obj.value.charAt(i),0) != -1) new_val+=obj.value.charAt(i);
		}
		if (obj.value!=new_val) obj.value=new_val;
  	}
	obj_target.innerHTML="( "+obj.value.length+" / "+max_length+" )";
}

// Acceptable characters in forms
var ac_numb = '0123456789';
var ac_lwr = 'abcdefghijklmnopqrstuvwxyz_';
var ac_upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var ac_pg = ac_numb+ac_upr+'abcdefghijklmnopqrstuvwxyz -';
var ac_tags = ac_numb+ac_upr+'abcdefghijklmnopqrstuvwxyz/-, ';
var ac_desc = ac_numb+ac_upr+ac_lwr+'-,.\"/#!()?+-:*= ';
var ac_plug = ac_numb+ac_upr+ac_lwr+'-,.\"/#!()?+-:*= ';

function isValid(parm,val) {
	if (parm == "") return false;
	for (i=0; i<parm.length; i++) {
    	if (val.indexOf(parm.charAt(i),0) == -1) return false;
	}
	return true;
}


// Count words in a string
function ZJSCountWords(str){
	str=trim(str);
	str=str.split(' ');
	return str.length;
}

// trims a string
function trim(str) {
	return str.replace(/^\s+/,'').replace(/\s+$/,'');
}

// Returns number of "valid" tags in a comma separated string
function checkTags(field,min_length,max_length){
	var tag_text=field.value;
	tag_text=trim(tag_text);
	tags=tag_text.split(',');

	var valid_tags=0;
	var tags2=new Array();
	var found=false;
	for (x=0;x<tags.length;x++){
		tags[x]=trim(tags[x]);
		if (tags[x].length>=min_length && tags[x].length<=max_length){
			found=false;
			for (y=0;y<tags2.length;y++){
			  	if (tags2[y]==tags[x]) found=true;
			}
			if (found==false){
				tags2[valid_tags]=tags[x];
			 	valid_tags++;
			}
		}
	}
	return valid_tags;
}

//Validates zCode input field by AJAX
function zjsGetZcodeInputError(key, base1){

	var do_zcode_check = false;

	var upZcode = $('upZcode');
	var zcode = '';

	// Check if page has zCode input
	if($chk(upZcode) == true){

		// No need to check zCode if private mode is selected
		var p_access_private = $('p_accesspermissions_private');
		if($chk(p_access_private) == true && p_access_private.checked == true){
			do_zcode_check = false;
		}
		else{
			do_zcode_check = true;
			zcode = upZcode.value;
		}
	}

	//Clear suggestions
	$('zcs_holder').innerHTML = '';

	if(do_zcode_check == true && zcode != ''){

		if(key == false) key = '';

		// AJAX zCode check
		var zcode_error = '';

		var params = 'zcode='+zcode+'&key='+key+'&base1='+base1;

		var req = new Request({
			url: '/ajax/ajax-check-zcode.php',
			method: 'post',
			data: params,
			link: 'ignore',
			async: false,

			onSuccess: function( txt ){

				var res = JSON.decode(txt);

				if(res.success == false){
					zcode_error = res.error_message;
					var suggestions = res.suggestions;
					var c = suggestions.length;

					var s_html = '';
					for(i=0;i<c;i++){
						if(i==0) s_html+= 'We suggest : ';
						else s_html+=', ';
						s_html+= '<a class="ident" href="javascript:void(0);" onclick="$(\'upZcode\').value=\''+suggestions[i]+'\';">'+suggestions[i]+'</a>'
					}

					if(s_html !== '') $('zcs_holder').innerHTML = s_html;
					else $('zcs_holder').innerHTML = 'Please try a different zCode.';
				}
			}
		});

		req.send();

		return zcode_error;

	}
	else{
		return '';
	}
}


function ZJSToggleButton(button_id, enabled){
	var button = $(button_id);

	if(enabled == true){
		button.removeClass('disabled');
		button.disabled = false;
	}
	else{
		button.addClass('disabled');
		button.disabled = true;
	}
}


function makePOSTRequest(url, parameters, callback) {
      http_request = false;
      global_callback=callback;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
	if (!http_request) {
		global_callback(false,"");
		return false;
    }

    http_request.onreadystatechange = alertContents;
    http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

function alertContents() {
	if (http_request.readyState == 4) {
    	if (http_request.status == 200) global_callback(true,http_request.responseText);
    		else global_callback(false,"");
	}
}

/* rate item and update ui */
function ZJSdoRating(ctype,item_id,vote, rk, rt) {
	parameters	= 'rate=' + ctype + '-' + item_id + '-' + vote + '&rk=' + rk + '&rt=' + rt;
	new Request({
		url: '/ajax/ajax-rating-new.php',
		data: parameters
	}).send();
	$$('.doneVote').fade('hide').fade('in');
	var votes = parseInt($$('.votes').get('rel')) + 1;
	$$('.votes').set('html', votes);
}

function ZJSaddToFavorites(item_key, parameters) {
	ajax_update_div	= 'addfav_status_' + item_key;

	makePOSTRequest('/ajax/ajax-add-to-favorites.php', parameters, ZJSdoGenericCallback);
}


function ZJSsendSMS(parameters) {
	if( $defined($( 'overlay' ) )){
		$$( '.illustration img' ).set( 'src', 'http://app.zedge.net/static/images/lightbox/arrow_sms1.gif' );
		$( 'overlay' ).setStyle( 'display', 'block' );
		if( $defined( $( 'v_carrier' ) ) && $defined( $( 'v_country') ) ){
			$( 'v_country' ).setStyle( 'display', 'none' );
			$( 'v_carrier' ).setStyle( 'display', 'none' );
		}
	}
	ajax_update_div	= 'send_to_phone_lightbox';

	makePOSTRequest('/ajax/ajax-send-to-mobile.php', parameters, updateLightbox);
}

function ZJSsendToolItemSMS(userid, ctype, rand, server_id, mode, country, operator, phone_number, ext, rk, rt) {
	//tool_stp_parameters = {'mode': mode, 'userid': userid, 'country': country, 'operator': operator, 'phone_number': phone_number};
	makePOSTRequest('/ajax/ajax-add-temp-file.php', 'userid=' + userid + '&ctype=' + ctype + '&rand=' + rand + '&server_id=' + server_id + '&ext=' + ext + '&rk=' + rk + '&rt=' + rt, ZJSsendToolItemSMSCallback);
}

function ZJSsendToolItemSMSCallback()
{
	if(http_request.readyState == 4) {
		if(http_request.status == 200) {
			response = http_request.responseText;

			var json	= eval('(' + response + ')');

			if(typeof tool_stp_parameters != 'undefined' && typeof json.success != 'undefined' && json.success)
			{
				var mode = tool_stp_parameters['mode'];
				var userid = tool_stp_parameters['userid'];
				var country = tool_stp_parameters['country'];
				var operator = tool_stp_parameters['operator'];
				var phone_number = tool_stp_parameters['phone_number'];
				var item_id = json.item_id;
				var ctype = json.ctype;

				var parameters = 'send_to_mobile='+mode+'-0-'+userid+'-'+country+'-'+operator+'-'+phone_number+'-0-'+item_id+'-'+ctype+'-0';
				ZJSsendSMS(parameters);
			}
		}
	}
}

function updateLightbox() {
	if(http_request.readyState == 4) {
		if(http_request.status == 200) {

			response = http_request.responseText;

			var json	= eval('(' + response + ')');

			if(json.success == true) {
				if($chk(json.redirect_url)) {
					window.location	= json.redirect_url;
				}

			}

			if($chk(json.message) && $chk( $(ajax_update_div) )) {
				if( $chk( json.step ) && json.step == 'laststep' ) {
					$$( '#sendPhoneIllustration .spinnerImg' ).set( {'src': 'http://app.zedge.net/static/images/lightbox/item_sent.png', 'width': '34' });
					$$( '#sendPhoneIllustration .statusText' ).set( 'html', 'Sending completed');
				} else {
					$(ajax_update_div).set('html', json.message);
				}

				$( 'lightboxButtons' ).set( 'html', json.buttons );

				if($defined(ajax_slide_out_delay) && ajax_slide_out_delay > 0) {
					$clear(ajax_slide_delay_function);
					ajax_slide_delay_function = $(ajax_update_div).slide.delay(ajax_slide_out_delay*1000, $(ajax_update_div), 'out');
					if($(ajax_update_div).getStyle('display') == "none")
					{
						$(ajax_update_div).slide('hide');
						$(ajax_update_div).setStyle('display', 'block');
					}
					$(ajax_update_div).slide('in');
				}
				else
					$(ajax_update_div).setStyle('display', 'block');
			}
		}
	}
}


// Generic AJAX callback function.
// This function generally accepts 2 return values: success and message.
function ZJSdoGenericCallback(){
	if(http_request.readyState == 4) {
		if(http_request.status == 200) {
			if(ajax_update_div.substr(0, 24) == 'send_to_phone_container_') {
				response = http_request.responseText.replace(/send_to_phone_container/g, ajax_update_div);
				response = response.replace(/return false;/g, 'ajax_update_div=\''+ajax_update_div+'\';return false;');
			} else {
				response = http_request.responseText;
			}

			var json	= eval('(' + response + ')');

			if(json.success == true) {
				if($chk(json.redirect_url)) {
					window.location	= json.redirect_url;
				}
			}

			if(ajax_update_div.substr(0, 14) == 'checking_zcode'){
				doZCodeCheckCallback(response);
			}

			if($chk(json.message) && $chk( $(ajax_update_div) )) {
				$(ajax_update_div).set('html', json.message);

				if($defined(ajax_slide_out_delay) && ajax_slide_out_delay > 0) {
					$clear(ajax_slide_delay_function);
					ajax_slide_delay_function = $(ajax_update_div).slide.delay(ajax_slide_out_delay*1000, $(ajax_update_div), 'out');
					if($(ajax_update_div).getStyle('display') == "none")
					{
						$(ajax_update_div).slide('hide');
						$(ajax_update_div).setStyle('display', 'block');
					}
					$(ajax_update_div).slide('in');
				} else {
					$(ajax_update_div).setStyle('display', 'block');
				}
			}

			// If we're running a Zedge Filter in the upload tool we'll check the return value to see if the submit button can be enabled or not
			if(ajax_update_div == 'zedge_filter_title' && $('zedge_filter_ok') && $('zedge_filter_violation')) {
				if(json.success == true) {
					$('zedge_filter_ok').set('value', 1);
					$(ajax_update_div).setStyle('display', 'none');
				} else {
					$('zedge_filter_ok').set('value', 0);
					$('zedge_filter_violation').set('value', 1);
				}
			}
		}
	}
}

function ZJSRedirect(url){
	window.location.href = url;
}

function ZJSisIE(){
	if ((navigator.userAgent.indexOf("MSIE")!= -1)&&!window.opera) return true;
		return false;
}

function ZJSisOpera(){
	if (navigator.userAgent.indexOf("Opera")!= -1) return true;
		return false;
}


/*
	Sets display to none for all siblings of element, and flips the element
	between display:none and display:block
*/
function ZJSFlipElementDisableSiblings(element) {
	// First disable siblings
	$clear(ajax_slide_delay_function);
	parentEl = $('get_it');
	parentEl.getChildren().each( function(el) {
		if (el.id == '') {  // mootools wrapper - empty it and set it as the container
			child = el.firstChild;
			el.setAttribute('id', child.id);
			el.removeAttribute('style', '');
			el.innerHTML = '';
		}
		el.style.display = 'none';
	});
	// Then flip display for the item
	if(element.style.display == 'none' || element.style.display == '') element.style.display = 'block';
	else element.style.display = 'none';
}

function ZAjaxSubscribeInProfile(userid, subscribed_userid, username, rk, rt) {
	//ajax_update_div	= 'message';
	ajax_update_div	= 'action_message';
	ajax_slide_out_delay = 5;
	var parameters = 'stype=user&uid=' + userid + '&sid=' + subscribed_userid + '&sname=' + username + '&rk=' + rk + '&rt=' + rt;
	makePOSTRequest('/ajax/ajax-subscriptions.php', parameters, ZJSdoGenericCallback);
}

function ZJSgetPhoneOperators(ctype,country_id,op_select,op_element) {
	operator_el_id = op_element;
	var parameters="mode="+ctype+"-"+country_id+"-"+op_select;
	makePOSTRequest('/ajax/ajax-get-phone-operators.php', parameters, ZJSgetPhoneOperatorsCallback);
}

function ZJSgetPhoneOperatorsCallback() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var json = eval('(' + http_request.responseText + ')');

			var parentEl = document.getElementById(operator_el_id);

			if(json.success == true) {

				parentEl.length = json.val.length;
				parentEl.selectedIndex = 0;
				for(i=0; i<parentEl.length; i++) {
					parentEl.options[i].value = json.id[i];
					parentEl.options[i].text = json.val[i];
					if (json.op_select == json.id[i] && json.id[i] != 0) {
						parentEl.selectedIndex = i;
					}
				}
			} else {
				parentEl.length = 1;
				parentEl.options[0].text = json.message;
			}
		}
	}
}

function ZJSupdateIntPrefix(country_id) {
	var parameters="mode=" + country_id;
	makePOSTRequest('/ajax/ajax-get-country-data.php', parameters, ZJSupdateIntPrefixCallback);
}

function ZJSupdateIntPrefixCallback() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var json = eval('(' + http_request.responseText + ')');
			if(json.success == true) {
				document.getElementById('int_prefix_span').innerHTML = '+' + json.int_prefix;
				$('v_phone_number').set('maxlength', json.phone_number_length);
				var number = $('v_phone_number').get('value');
				$('v_phone_number').set('value', number.substring(0, json.phone_number_length));
				$('v_phonenumber_description').innerHTML = 'Must be ' + json.phone_number_length + ' digits.';
			}
		}
	}
}

function ZJSswitchCountry (ctype,country_id,op_select) {
	ZJSgetPhoneOperators(ctype,country_id,op_select,'v_carrier');
	setTimeout('ZJSupdateIntPrefix('+country_id+')', 500);
}


function ZJSdeleteGuestbookComment(post_id, poster_id, rk, rt) {
	var parameters	= 'gb_user=' + poster_id + '-' + post_id + '-' + rk + '-' + rt;
	makePOSTRequest('/ajax/ajax-guestbook.php', parameters, ZJSdeleteGuestbookCommentCallback);
}

function ZJSdeleteGroupComment(post_id, poster_id, rk, rt, group_id) {
	var parameters	= 'gb_group=' + poster_id + '-' + post_id + '-' + rk + '-' + rt + '-' + group_id;
	makePOSTRequest('/ajax/ajax-guestbook.php', parameters, ZJSdeleteGuestbookCommentCallback);
}



function ZJSdeleteGuestbookCommentCallback() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var json = eval('(' + http_request.responseText + ')');
			if(json.success == true) {
				$('comm_ztext_' + json.gb_id).dispose();
			} else {
				alert(json.message);
			}
		}
	}
}

function ZJSToggleDisplay(obj,scroll_to){
	if ($(obj).style.display=='none'){
		$(obj).style.display='block';
		if (scroll_to) ZJSscrollWindow(obj);
	}else{
		$(obj).style.display='none';
	}
};


function ZJSscrollWindow(obj){
	if(arguments.length != 2)
		offset = -100;
	else
		offset = -arguments[1];
	var myScroll = new Fx.Scroll(window, {'fps':35, offset: { 'x': 0, 'y': offset }});
	//return; alert($(obj).getPosition().y);
	myScroll.toElement(obj);
}


function zedgeCode(myValue, myValue2) {

		myField = $('zeditor');
		var pos = myField.selectionStart;
		var scrollPos = myField.scrollTop ;

		//IE support
		if (document.selection) {
			myField.focus();
			sel = document.selection.createRange();
			if (myValue2){
				sel.text = myValue+sel.text+myValue2;
			}else{
				sel.text = myValue;
			}
		}

		//MOZILLA/NETSCAPE support
		else if (myField.selectionStart || myField.selectionStart == '0') {
			var startPos = myField.selectionStart;
			var endPos = myField.selectionEnd;

			if (myValue2){
				myField.value = myField.value.substring(0, startPos)+ myValue + myField.value.substring(startPos, endPos) + myValue2 + myField.value.substring(endPos, myField.value.length);
			}else{
				myField.value = myField.value.substring(0, startPos)+ myValue + myField.value.substring(endPos, myField.value.length);
			}

		} else {
			if (myValue2){
				myField.value += myValue+myValue2;
			}else{
				myField.value += myValue;
			}
		}
		myField.scrollTop = scrollPos;
		myField.focus();
	}

function ZJSBlindTArea(obj){
	obj.style.color="#999999";
	obj.readOnly=true;
	obj.blur();
}

function ZJSUnblindTArea(obj){
	obj.style.color="#000000";
	obj.readOnly=false;
	obj.focus();
}

// Does the ZEditor Ajax request. And validation of:
// title_min_length, title_max_length, title_min_words,	body_min_length, body_max_length, body_min_words
function doZeditorAjax(button,params) {

	var zerror='';
	if ($defined($('zeditor_title'))){
			if ($('zeditor_title').value.length<zeditor_validation["title_min_length"]) zerror+="The title must be minimum "+zeditor_validation["title_min_length"]+" characters.\n";
			if ($('zeditor_title').value.length>zeditor_validation["title_max_length"]) zerror+="The title can be maximum "+zeditor_validation["title_max_length"]+" characters.\n";
			if (ZJSCountWords($('zeditor_title').value)<zeditor_validation["title_min_words"]) zerror+="The title must have at least "+zeditor_validation["title_min_words"]+" words.\n";
	}
	if ($defined($('zeditor'))){
			if ($('zeditor').value.length<zeditor_validation["body_min_length"]) zerror+="The message must be minimum "+zeditor_validation["body_min_length"]+" characters.\n";
			if ($('zeditor').value.length>zeditor_validation["body_max_length"]) zerror+="The message can be maximum "+zeditor_validation["body_max_length"]+" characters.\n";
			if (ZJSCountWords($('zeditor').value)<zeditor_validation["body_min_words"]) zerror+="The message must have at least "+zeditor_validation["body_min_words"]+" words.\n";
	}

	if(zerror!='') {
		alert(zerror);
		return false;
	} else {
		var text=trim($('zeditor').value);
		ZJSBlindTArea($('zeditor'));
		button.focus();
		if ($defined($('zeditor_preview'))) $('zeditor_preview').disabled=true;
		if ($defined($('zeditor_submit'))) $('zeditor_submit').disabled=true;
		if ($defined($('zeditor_title'))) params+='&title='+encodeURIComponent($('zeditor_title').value);
		if (params.length!=0 && params.charAt(0)!='&') params='&'+params;
		makePOSTRequest('/ajax/ajax-zeditor.php', 'text='+encodeURIComponent(text)+params, doZeditorCallback);
	}
	return true;
}


function doZeditorCallback() {
	if(http_request.readyState == 4 && http_request.status == 200) {
		try {
			var json = eval('(' + http_request.responseText + ')');

		} catch (e){
			alert(http_request.responseText);
			return false;
		}
		if (json.success){
			ZJSUnblindTArea($('zeditor'));
			if ($defined($('zeditor_preview'))) $('zeditor_preview').disabled=false;
			if ($defined($('zeditor_submit'))) $('zeditor_submit').disabled=false;

			if ($('zeditor_msg').style.display!="block")
				$('zeditor_msg').style.display="block";

			$('zeditor_msg').innerHTML=json.html;
			json.scroll_to = 'zeditor_msg';

			if (json.was_preview != true){
				if($chk($('zeditor_container'))) $('zeditor_container').dispose();
				if($chk($('signlink'))) $('signlink').dispose();
				if($chk($('no_comments'))) $('no_comments').dispose();
			}

			if ($defined(json.hide_elements)){
				var s=json.hide_elements.length;
				for (x=0;x<s;x++) $(json.hide_elements[x]).style.display="none";
				}

			if ($defined(json.show_elements)){
				var s=json.show_elements.length;
				for (x=0;x<s;x++) $(json.show_elements[x]).style.display="block";
				}

			if ($defined(json.replace_html)){
				var s=json.replace_html.length;
				for (x=0;x<s;x++) $(json.replace_html[x].id).innerHTML=json.replace_html[x].html;
				}

			if ($defined(json.inject)){
				var s=json.inject.length;
				for (x=0;x<s;x++) $(json.inject[x].id).inject(json.inject[x].inject_to,json.inject[x].pos);
			}

			if ($defined(json.scroll_to)) ZJSscrollWindow(json.scroll_to);

			//if ($defined(json.debug)) console.log(json.debug);

			if($defined(json.redirect_url)) {
				// Redirects the user to a given URL
				if($defined(json.redirect_time)) {
					// Redirects to json.redirect_url after {json.redirect_time / 1000) seconds
					(function(){ window.location = json.redirect_url; }).delay(json.redirect_time);
				} else {
					// Redirects to json.redirect_url after {default} 5 seconds
					(function(){ window.location = json.redirect_url; }).delay(5000);
				}
			}

			return true;
		}else{
			//TODO disable alert, show div instead
			alert(json.error_message);
			return false;
		}
	}
}



//Todo: Domain name in images
function ZShowEmoticons(server_name){
	showLayer('zeditor_emoticons','zeditor',60,-280);
	if ($('zeditor_emoticons').innerHTML.length>50) return;
	$('zeditor_emoticons').innerHTML="<p class=\"med\"><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :D ');hideLayer('zeditor_emoticons');return false;\"><img title='Very Happy' src='http://"+server_name+"/static/smileys/mw_grin.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :) ');hideLayer('zeditor_emoticons');return false;\"><img title='Smile' src='http://"+server_name+"/static/smileys/mw_smile1.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :( ');hideLayer('zeditor_emoticons');return false;\"><img title='Sad' src='http://"+server_name+"/static/smileys/mw_sad.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :shock: ');hideLayer('zeditor_emoticons');return false;\"><img title='Shocked/Suprised' src='http://"+server_name+"/static/smileys/mw_ohmy.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :??: ');hideLayer('zeditor_emoticons');return false;\"><img title='Confused' src='http://"+server_name+"/static/smileys/mw_confused.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :cool: ');hideLayer('zeditor_emoticons');return false;\"><img title='Cool' src='http://"+server_name+"/static/smileys/mw_smirk.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :lol: ');hideLayer('zeditor_emoticons');return false;\"><img title='Laughing' src='http://"+server_name+"/static/smileys/mw_laugh.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :mad: ');hideLayer('zeditor_emoticons');return false;\"><img title='Mad' src='http://"+server_name+"/static/smileys/mw_evilmad.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :razz: ');hideLayer('zeditor_emoticons');return false;\"><img title='Razz' src='http://"+server_name+"/static/smileys/mw_tongue.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :blush: ');hideLayer('zeditor_emoticons');return false;\"><img title='Embaressed' src='http://"+server_name+"/static/smileys/mw_blush.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :cry: ');hideLayer('zeditor_emoticons');return false;\"><img title='Crying' src='http://"+server_name+"/static/smileys/mw_cry.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :evil: ');hideLayer('zeditor_emoticons');return false;\"><img title='Evil smile' src='http://"+server_name+"/static/smileys/mw_evil.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :roll: ');hideLayer('zeditor_emoticons');return false;\"><img title='Rolling Eyes' src='http://"+server_name+"/static/smileys/mw_rolleyes.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :wink: ');hideLayer('zeditor_emoticons');return false;\"><img title='Wink' src='http://"+server_name+"/static/smileys/mw_wink.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :s: ');hideLayer('zeditor_emoticons');return false;\"><img title='Nah' src='http://"+server_name+"/static/smileys/mw_nah.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' #-o ');hideLayer('zeditor_emoticons');return false;\"><img title='Doh!' src='http://"+server_name+"/static/smileys/mw_slap.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :!: ');hideLayer('zeditor_emoticons');return false;\"><img title='Exclamation' src='http://"+server_name+"/static/smileys/mw_excl.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :?: ');hideLayer('zeditor_emoticons');return false;\"><img title='Question' src='http://"+server_name+"/static/smileys/mw_question.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :arrowleft: ');hideLayer('zeditor_emoticons');return false;\"><img title='Arrow Left' src='http://"+server_name+"/static/smileys/mw_arrow2.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :arrowright: ');hideLayer('zeditor_emoticons');return false;\"><img title='Arrow Right' src='http://"+server_name+"/static/smileys/mw_arrow.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :wall: ');hideLayer('zeditor_emoticons');return false;\"><img title='Wall' src='http://"+server_name+"/static/smileys/mw_wall.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :sick: ');hideLayer('zeditor_emoticons');return false;\"><img title='Sick' src='http://"+server_name+"/static/smileys/mw_sick.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :thumbsup: ');hideLayer('zeditor_emoticons');return false;\"><img title='Thumbs Up' src='http://"+server_name+"/static/smileys/mw_thumbsup.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :thumbsdown: ');hideLayer('zeditor_emoticons');return false;\"><img title='Thumbs Down' src='http://"+server_name+"/static/smileys/mw_thumbsdown.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :rant: ');hideLayer('zeditor_emoticons');return false;\"><img title='Rant' src='http://"+server_name+"/static/smileys/mw_rant2.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :wave: ');hideLayer('zeditor_emoticons');return false;\"><img title='Wave' src='http://"+server_name+"/static/smileys/mw_wave.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :nod: ');hideLayer('zeditor_emoticons');return false;\"><img title='Nod' src='http://"+server_name+"/static/smileys/mw_yes.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :disagree: ');hideLayer('zeditor_emoticons');return false;\"><img title='Disagree' src='http://"+server_name+"/static/smileys/mw_no.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :fist: ');hideLayer('zeditor_emoticons');return false;\"><img title='Fist' src='http://"+server_name+"/static/smileys/mw_fist.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :-k ');hideLayer('zeditor_emoticons');return false;\"><img title='Think' src='http://"+server_name+"/static/smileys/mw_hmmm.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :woot ');hideLayer('zeditor_emoticons');return false;\"><img title='Woot' src='http://"+server_name+"/static/smileys/mw_w00t.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :beer: ');hideLayer('zeditor_emoticons');return false;\"><img title='Beer' src='http://"+server_name+"/static/smileys/mw_beer2.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :oops: ');hideLayer('zeditor_emoticons');return false;\"><img title='Oops' src='http://"+server_name+"/static/smileys/mw_oops.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :please: ');hideLayer('zeditor_emoticons');return false;\"><img title='Please' src='http://"+server_name+"/static/smileys/mw_please.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :sorry: ');hideLayer('zeditor_emoticons');return false;\"><img title='Sorry' src='http://"+server_name+"/static/smileys/mw_sorry.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :spam: ');hideLayer('zeditor_emoticons');return false;\"><img title='Spam' src='http://"+server_name+"/static/smileys/mw_spam.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :...: ');hideLayer('zeditor_emoticons');return false;\"><img title='Dots' src='http://"+server_name+"/static/smileys/mw_dots.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :offtopic: ');hideLayer('zeditor_emoticons');return false;\"><img title='Off Topic' src='http://"+server_name+"/static/smileys/mw_offtopic.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :hi: ');hideLayer('zeditor_emoticons');return false;\"><img title='Hi' src='http://"+server_name+"/static/smileys/mw_hi.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :angel: ');hideLayer('zeditor_emoticons');return false;\"><img title='Angel' src='http://"+server_name+"/static/smileys/z_angel.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :angry: ');hideLayer('zeditor_emoticons');return false;\"><img title='Angry' src='http://"+server_name+"/static/smileys/z_angry.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :beer2: ');hideLayer('zeditor_emoticons');return false;\"><img title='Beer mug' src='http://"+server_name+"/static/smileys/z_beer2.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :bow: ');hideLayer('zeditor_emoticons');return false;\"><img title='Bow' src='http://"+server_name+"/static/smileys/z_bow.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :busy: ');hideLayer('zeditor_emoticons');return false;\"><img title='Busy' src='http://"+server_name+"/static/smileys/z_busy.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :call: ');hideLayer('zeditor_emoticons');return false;\"><img title='Call' src='http://"+server_name+"/static/smileys/z_call.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :cash: ');hideLayer('zeditor_emoticons');return false;\"><img title='Cash' src='http://"+server_name+"/static/smileys/z_cash.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :chuckle: ');hideLayer('zeditor_emoticons');return false;\"><img title='Chuckle' src='http://"+server_name+"/static/smileys/z_chuckle.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :clap: ');hideLayer('zeditor_emoticons');return false;\"><img title='Clap' src='http://"+server_name+"/static/smileys/z_clap.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :cry2: ');hideLayer('zeditor_emoticons');return false;\"><img title='Crying (alternate)' src='http://"+server_name+"/static/smileys/z_cry2.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :devil: ');hideLayer('zeditor_emoticons');return false;\"><img title='Devil' src='http://"+server_name+"/static/smileys/z_devil.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :disagree2: ');hideLayer('zeditor_emoticons');return false;\"><img title='Disagree (alternate)' src='http://"+server_name+"/static/smileys/z_disagree2.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :disco: ');hideLayer('zeditor_emoticons');return false;\"><img title='Disco' src='http://"+server_name+"/static/smileys/z_disco.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :doh: ');hideLayer('zeditor_emoticons');return false;\"><img title='Doh!' src='http://"+server_name+"/static/smileys/z_doh.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :embarassed: ');hideLayer('zeditor_emoticons');return false;\"><img title='Embarassed' src='http://"+server_name+"/static/smileys/z_embarassed.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :emo: ');hideLayer('zeditor_emoticons');return false;\"><img title='Emo' src='http://"+server_name+"/static/smileys/z_emo.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :envy: ');hideLayer('zeditor_emoticons');return false;\"><img title='Envy' src='http://"+server_name+"/static/smileys/z_envy.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :explode: ');hideLayer('zeditor_emoticons');return false;\"><img title='Explode' src='http://"+server_name+"/static/smileys/z_explode.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :fever: ');hideLayer('zeditor_emoticons');return false;\"><img title='Fever' src='http://"+server_name+"/static/smileys/z_fever.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :gameover: ');hideLayer('zeditor_emoticons');return false;\"><img title='Game over' src='http://"+server_name+"/static/smileys/z_gameover.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :geek: ');hideLayer('zeditor_emoticons');return false;\"><img title='Geek' src='http://"+server_name+"/static/smileys/z_geek.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :gift: ');hideLayer('zeditor_emoticons');return false;\"><img title='Gift' src='http://"+server_name+"/static/smileys/z_gift.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :happy: ');hideLayer('zeditor_emoticons');return false;\"><img title='Happy' src='http://"+server_name+"/static/smileys/z_happy.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :hardwork: ');hideLayer('zeditor_emoticons');return false;\"><img title='Hard work' src='http://"+server_name+"/static/smileys/z_hardwork.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :inlove: ');hideLayer('zeditor_emoticons');return false;\"><img title='In love' src='http://"+server_name+"/static/smileys/z_inlove.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :kiss: ');hideLayer('zeditor_emoticons');return false;\"><img title='Kiss' src='http://"+server_name+"/static/smileys/z_kiss.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :nah: ');hideLayer('zeditor_emoticons');return false;\"><img title='Nah' src='http://"+server_name+"/static/smileys/z_nah.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :pirate: ');hideLayer('zeditor_emoticons');return false;\"><img title='Pirate' src='http://"+server_name+"/static/smileys/z_pirate.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :rollingeyes: ');hideLayer('zeditor_emoticons');return false;\"><img title='Rolling eyes' src='http://"+server_name+"/static/smileys/z_rollingeyes.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :romantic: ');hideLayer('zeditor_emoticons');return false;\"><img title='Romantic' src='http://"+server_name+"/static/smileys/z_romantic.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :sad: ');hideLayer('zeditor_emoticons');return false;\"><img title='Sad' src='http://"+server_name+"/static/smileys/z_sad.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :sherlock: ');hideLayer('zeditor_emoticons');return false;\"><img title='Sherlock' src='http://"+server_name+"/static/smileys/z_sherlock.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :shutup: ');hideLayer('zeditor_emoticons');return false;\"><img title='Shutup' src='http://"+server_name+"/static/smileys/z_shutup.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :sick2: ');hideLayer('zeditor_emoticons');return false;\"><img title='Sick (alternate)' src='http://"+server_name+"/static/smileys/z_sick2.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :sleep: ');hideLayer('zeditor_emoticons');return false;\"><img title='Sleep' src='http://"+server_name+"/static/smileys/z_sleep.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :smile: ');hideLayer('zeditor_emoticons');return false;\"><img title='Smile' src='http://"+server_name+"/static/smileys/z_smile.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :strong: ');hideLayer('zeditor_emoticons');return false;\"><img title='Strong' src='http://"+server_name+"/static/smileys/z_strong.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :study: ');hideLayer('zeditor_emoticons');return false;\"><img title='Study' src='http://"+server_name+"/static/smileys/z_study.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :sunglasses: ');hideLayer('zeditor_emoticons');return false;\"><img title='Sunglasses' src='http://"+server_name+"/static/smileys/z_sunglasses.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :surprised: ');hideLayer('zeditor_emoticons');return false;\"><img title='Surprised' src='http://"+server_name+"/static/smileys/z_surprised.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :sweat: ');hideLayer('zeditor_emoticons');return false;\"><img title='Sweat' src='http://"+server_name+"/static/smileys/z_sweat.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :thinking: ');hideLayer('zeditor_emoticons');return false;\"><img title='Thinking' src='http://"+server_name+"/static/smileys/z_thinking.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :thumbsup2: ');hideLayer('zeditor_emoticons');return false;\"><img title='Thumbsup (alternate)' src='http://"+server_name+"/static/smileys/z_thumbsup2.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :toungeout: ');hideLayer('zeditor_emoticons');return false;\"><img title='Tounge out' src='http://"+server_name+"/static/smileys/z_toungeout.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :wait: ');hideLayer('zeditor_emoticons');return false;\"><img title='Wait a minute' src='http://"+server_name+"/static/smileys/z_wait.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :wink2: ');hideLayer('zeditor_emoticons');return false;\"><img title='Wink (alternate)' src='http://"+server_name+"/static/smileys/z_wink.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :wrestler: ');hideLayer('zeditor_emoticons');return false;\"><img title='Wrestler' src='http://"+server_name+"/static/smileys/z_wrestler.gif' alt='' /></a><a href=\"JavaScript:void(0);\" onclick=\"zedgeCode(' :yawn: ');hideLayer('zeditor_emoticons');return false;\"><img title='Yawn' src='http://"+server_name+"/static/smileys/z_yawn.gif' alt='' /></a></p><p style=\"margin-bottom:0px;\"><a onclick=\"hideLayer('zeditor_emoticons');return false;\" href=\"javascript:void(0);\">[Close]</a></p>";
	return false;
}

/** Handle controls in the input img url zeditor layer
 */
function ZJSImgPromptHandler(code,res){
	if(code==1){ //ok
		if ( ZJSIsUrl(res) ) {
			zedgeCode('[img]'+res+'[/img]');
		}
		hideLayer('zeditor_image');
	}
	else if(code==2){ //preview
		if ( ZJSIsUrl(res) ) {
			var img='<img style="width:128px;" src="' + res + '" />';
			$('img_preview').set('html', img);
		}else{
			$('img_preview').set('html', '<br \><br \>Enter valid URL');
		}
	}
	else{ //cancel
		hideLayer('zeditor_image');
	}
}

/** Primitive valid URL checker
 */
function ZJSIsUrl(s) {
	var regexp = /(ftp|http|https):\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/
	return regexp.test(s);
}


//	Do verification on telephone number and verification code
function doCheckSMS(obj, obj_target, submit_btn) {
	obj_target	= $(obj_target);

	allowed_chars	= ac_numb + '()- ';		// defined in /js/zedge.js

	// First remove all illegal chars
	new_val	= '';
	for(i = 0; i < obj.value.length; i++) {
		if(allowed_chars.indexOf(obj.value.charAt(i), 0) != -1)	new_val	+= obj.value.charAt(i);
	}
	if(obj.value != new_val)	obj.value	= new_val;

	if( $defined( $( 'v_phone_number' ) ) ) {
		var length = $('v_phone_number').get('maxlength');
	} else {
		var length = $('v_verification_code').get('maxlength');
	}

	if(obj.value.length >= length) {
		if(obj.value.length > length) {
		    obj.value	= obj.value.substring(0, length);
		}

	  	obj_target.innerHTML	= obj.value.length + ' / ' + length;
		obj_target.innerHTML	= 'Must be ' + length + ' digits';

	  	$(submit_btn).disabled	= false;
		if( $(submit_btn).hasClass('disabled')){
			if( $defined( $('v_carrier') ) ){
				if( !ZJSCheckCarrierError(0) && $( 'v_carrier' ).get( 'value' ) > 0 ) {
					$(submit_btn).removeClass('disabled');
				}
			} else {
				$(submit_btn).removeClass('disabled');
			}
		}

	} else {

		obj_target.innerHTML	= 'Must be ' + length + ' digits';

		$(submit_btn).disabled	= true;
		if( !$(submit_btn).hasClass('disabled') ){
			$(submit_btn).addClass('disabled');
		}
	}
}
function ZJSCheckCarrierError(option) {
   var carrier = $( 'v_carrier' ).get( 'value' );
   if( carrier == 641 || carrier == 642 || carrier == 608 || carrier == 706 || carrier == 621 || carrier == 632 || carrier == 640 || carrier == 612 || carrier == 618 || carrier == 619) {
	   if( option == 1 ) {
		   $( 'sbox-window' ).setStyle( 'height', 'auto' );
		   $( 'errorMessage' ).set('html', '<div class="notify_error">Oops. "' +
		   $( 'v_carrier' )[$('v_carrier').selectedIndex].innerHTML +
		   '" customers have problems receiving text messages from us. The "Mobile web" download option should work better for you.</div>' );
		   $( 'errorMessage' ).slide( 'hide' ).setStyle( 'display', 'block').slide( 'in' );
		   ZJSToggleButton('sendcode', false);
	   }
	   return true;
   } else {
	   if( option == 1 ) {
		   $( 'errorMessage' ).slide( 'hide' );
		   if(ZJSCheckSendToPhoneForm(true)) {
			   ZJSToggleButton('sendcode', true);
		   }
	   }
	   return false;
   }
}
function ZJSCheckSendToPhoneForm(fromCarrierCheck) {
	var errorMsg = false;
	if( !$('v_country').get( 'value' )  > 0 ) {
		errorMsg = '<div class="notify_error">Please select country.</div>';
	} else if( $('v_phone_number').value.length != $('v_phone_number').get('maxlength')) {
		ZJSToggleButton('sendcode', false);
		return false;
	} else if( !$('v_carrier').get( 'value' ) > 0 ) {
		errorMsg = '<div class="notify_error">Please select carrier.</div>';
	} else if( !fromCarrierCheck ) {
		if( ZJSCheckCarrierError(0) ) {
			errorMsg = 'carrier';
		}
	}

	if( errorMsg  && errorMsg != 'carrier' ) {
		$( 'sbox-window' ).setStyle( 'height', 'auto' );
		$( 'errorMessage' ).set( 'html', errorMsg );
		$( 'errorMessage' ).slide( 'hide' ).setStyle( 'display', 'block').slide( 'in' );
		ZJSToggleButton('sendcode', false);
		return false;
	} else if( !errorMsg ) {
		$( 'errorMessage' ).slide( 'hide' );
		ZJSToggleButton('sendcode', true);
		return true;
	}
}

/**
 * Function to disable the lightbox closing for "time" seconds
 */
function ZJSDisableLightboxClose(time) {
	SqueezeBox.toggleListeners();
	$( 'sbox-btn-close' ).setStyle( 'display', 'none' );
	ZJSToggleButton( 's', false);
	ZJSToggleButton( 'cancelButton', false);

	if( time > 2 ) {
		(function(){
			$( 'hiddenSendSMS' ).click();
		}).delay( (time - 2) * 1000);
	} else {
		$( 'hiddenSendSMS' ).click();
	}
	if( time > 0 ) {
		(function(){
			$( 'sbox-btn-close' ).setStyle( 'display', 'block' );
			SqueezeBox.toggleListeners('addEvent');
		}).delay(time * 1000);
	}
}

function ZJSShowSendToPhoneAd(ctype){
	var spinnerImg = new Element( 'img', { 'src': 'http://app.zedge.net/static/images/icons/ajax-loader.gif', 'class': 'spinnerImg' } );
	var textElement = new Element( 'span', {'html': 'Sending, please wait...', 'class': 'statusText'} );
	var spanElement	= new Element( 'span', {'html': 'What\'s next?', 'class': 'whatNext'} );
	var listElement1 = new Element( 'li', {'html': 'Open the text message we sent to your phone', 'class': 'number1' } );
	var listElement2 = new Element( 'li', {'html': 'Click the link included in the message', 'class': 'number2' } );
	var listElement3 = new Element( 'li', {'html': 'Hit "Download to phone" and save the item on your phone', 'class': 'number3' } );
	var ulElement = new Element( 'ul' );
	ulElement.adopt(listElement1, listElement2, listElement3);

	if( !$( 'sendPhoneIllustration' ).hasClass( 'step4' ) ) {
		$( 'sendPhoneIllustration' ).addClass( 'step4' );
	}
	if( !$$( '.communication' )[0].hasClass( 'step4' ) ) {
		$$( '.communication' )[0].addClass( 'step4' );
	}

	$( 'sendPhoneIllustration' ).empty();
	$( 'sendPhoneIllustration' ).adopt( spinnerImg, textElement, spanElement, ulElement );

	$( 'adOverlay' ).setStyle( 'display', 'block' );
}

function doToolItemSWFAjax(div_id, userid, ctype, rand, server_id, ext)
{
	tool_div_id = div_id;
	makePOSTRequest('/ajax/ajax-add-temp-file.php', 'userid='+userid+'&ctype='+ctype+'&rand='+rand+'&server_id='+server_id+'&ext='+ext, doToolItemSWFCallback);
}

function doToolItemSWFCallback()
{
	if(http_request.readyState == 4) {
		if(http_request.status == 200) {
			response = http_request.responseText;

			var json	= eval('(' + response + ')');

			if(typeof tool_div_id != 'undefined' && typeof json.success != 'undefined' && json.success)
			{
				$('item_id'+tool_div_id).set('value', json.item_id);
				$('ctype'+tool_div_id).set('value', json.ctype);
				$('swf_button'+tool_div_id).removeEvents();
				$('swf_button'+tool_div_id).addEvent('onclick', function() {doSWFAjax(tool_div_id)});

				doSWFAjax(tool_div_id);
			}
		}
	}
}

function doSWFAjax(div_id) {
	//ajax_update_div	= 'status_container'+div_id;
	var from_name=trim($('from_name'+div_id).value);
	var message=trim($('share_friends'+div_id).value);
	var mail1=trim($('mail1'+div_id).value);
	var mail2=trim($('mail2'+div_id).value);
	var mail3=trim($('mail3'+div_id).value);
	var ctype=trim($('ctype'+div_id).value);
	var item_id=trim($('item_id'+div_id).value);
	if(	false) {
		alert('Please enter only valid email addresses.');
		return false;
	} else {
		var status_container = $('status_container'+div_id);
		status_container.innerHTML = '<div id="alert_1" class="notify_info">Sending emails...</div>';
		if(typeof div_id != 'undefined' && div_id != '')
		{
			//ZJSFlipElementToolTray(status_container, count);
		}
		else
		{
			//ZJSFlipElementDisableSiblings(status_container);
		}
		ajax_slide_out_delay = 5;
		makePOSTRequest('/ajax/ajax-share-friends.php', 'div_id='+encodeURIComponent(div_id)+'&from_name='+encodeURIComponent(from_name)+'&mail[1]='+encodeURIComponent(mail1)+'&mail[2]='+encodeURIComponent(mail2)+'&mail[3]='+encodeURIComponent(mail3)+'&message='+encodeURIComponent(message)+'&ctype='+encodeURIComponent(ctype)+'&item_id='+encodeURIComponent(item_id), ZJSdoGenericCallback);

	}
	return true;
}

function ZJSFFilterSelectable(cat_dropdown_id, ffriendly_yes_id, ffriendly_no_id)
{
	var babes_category = 14;
	var hunks_category = 15;
	var ffriendly_yes = $(ffriendly_yes_id);
	var ffriendly_no = $(ffriendly_no_id);
	var ffriendly_parent = ffriendly_no.getParent();
	var category = $(cat_dropdown_id).value;

	if(category == babes_category || category == hunks_category)
	{
		ffriendly_parent.slide('out');
		if(typeof ffriendly_yes.prev_state == "undefined" || ffriendly_yes.prev_state == "keep_selected")
		{
			ffriendly_yes.prev_state = ffriendly_yes.checked;
		}
		ffriendly_no.checked = true;
		ffriendly_yes.disabled = true;
		ffriendly_no.disabled = true;
	}
	else
	{
		if(ffriendly_parent.getStyle('display') == 'none')
		{
			ffriendly_parent.slide('hide');
			ffriendly_parent.setStyle('display', 'block');
		}
		ffriendly_parent.slide('in');
		//Only change checked state if we move away from babes/hunks
		if(typeof ffriendly_yes.prev_state != "undefined" && ffriendly_yes.prev_state != "keep_selected")
		{
			if(ffriendly_yes.prev_state) ffriendly_yes.checked = true;
			else ffriendly_no.checked = true;
			ffriendly_yes.prev_state = "keep_selected";
		}
		ffriendly_yes.disabled = false;
		ffriendly_no.disabled = false;
	}
}


//	Generic function to show a message in a div.
function ZJSShowMessage(delay, div, message) {
	$(div).set('html', message);
	if($(div).getStyle('display') == 'none') {
		$(div).slide('hide');
		$(div).setStyle('display', 'block');
	}
	$(div).slide('in');
	var slider = new Fx.Slide($(div));
	(function() { slider.slideOut('vertical') }).delay(delay*1000);
}

function ZJSSiteGuardReport(ctype, itemid, source, rk, rt) {
	if($('lst_sg_reason')) {
		var suggestBan	= 0;
		if($defined($('chk_suggest_ban')) && $('chk_suggest_ban').checked) {
			suggestBan	= 1;
		}

		reason_obj	= $('lst_sg_reason');
		reason		= reason_obj.options[reason_obj.selectedIndex].value;

		if($chk(reason)) {
			$('sg_state1').dispose();
			$('sgReasonPopup').dispose();

			ajax_update_div			= 'siteguard_message';
			ajax_slide_out_delay	= 5;
			var parameters			= 'flag-item=' + ctype + '-' + itemid + '-' + reason + '-' + source + '-' + rk + '-' + rt + '&suggestBan=' + suggestBan;

			makePOSTRequest('/ajax/ajax-flag-item.php', parameters, ZJSdoGenericCallback);

		} else {
			alert('Please choose a reason first.');
		}
	}
}

function ZJSPROReport(ctype, itemid, rk, rt) {
	ajax_update_div			= 'pro_report_message';
	ajax_slide_out_delay	= 5;
	var parameters			= 'pro-report=' + ctype + '-' + itemid + '&rk=' + rk + '&rt=' + rt;
	makePOSTRequest('/ajax/ajax-pro-report.php', parameters, ZJSdoGenericCallback);

	$('pro_report_link').dispose();
}

var MooTabs = Class( {
	Implements : [ Options, Events ],


	Options : {
		active : 'active',

		/* Events */
		onAction : Class.empty,
		onStart : Class.empty,
		onLoaded : Class.empty,
		onFailure : Class.empty
	},


	// Initialize
	initialize : function ( tabs, container, options ) {
		this.setOptions( options );
		this.container = $( container );
		this.tabs = $( tabs ).getElements( 'a' );

		// Mouse event
		this.tabs.each( function ( a, index ) {
			if ( a.hasClass( this.Options.active ) ) this.active = index;
			a.addEvent( 'click', function ( event ) {
				event.stop();
				if ( $defined( this.active ) ) {
					if ( index == this.active ) return;
					this.tabs[this.active].removeClass( 'active' );
				}
				this.active = index;
				this.tabs[this.active].addClass( 'active' );
				this.loadHtml( index );
			}.bind( this ) );
		}.bind( this ) );
	},


	// Load html
	loadHtml : function ( index ) {
		new Request.HTML( {
			useCache : true,
			ghost : true,
			onComplete : function ( responseTree, responseElements, responseHTML, responseJavaScript ) {
				this.container.set( 'html', responseHTML );
				this.fireEvent( 'onLoaded', new Array( responseTree, responseElements, responseHTML, responseJavaScript, index ) );
			}.bind( this ),
			onFailure : function ( instance ) {
				this.fireEvent( 'onFailure', new Array( instance, index ) );
			}.bind( this ),
			onRequest : function () {
				this.fireEvent( 'onStart', index );
			}.bind( this )
		} ).get( this.tabs[index].get( 'href' ) );
	}
} );



/**
 *	@class		CTabsUploads
 *	@author		Erik Kjelling
 */
var CTabsUploads = new Class( {
	tobj:'',
	processing: false,
	initialize: function( tobj ){
		this.tobj = tobj;
		tobj.tabs.each( function(element) {
			if(typeof element == 'object' && $(element.id)){
				$( element.id).addEvent( 'click', (function() {
					if(this.processing) return;
					$(element.id).blur();
					if(!$(element.id).hasClass('active') ) {
						this.processing = true;
						var req = new Request({ url:tobj.url, method:'get' });
						req.addEvent( 'onComplete', (function() {
							var res = JSON.decode(req.response.text);
							if(res.result==true){
								$('uploadsbox_body').empty();
								new Element('div', {'html':res.body.html, 'class':''}).inject('uploadsbox_body');
								new Element('div', {'class':'clear'}).inject('uploadsbox_body');
								element.html = $('uploadsbox_body').get('html');
								$('upload_items').getElement('.active').removeClass('active');
								$( element.id ).addClass( 'active' );
								$( element.id ).getNext().setStyle( 'visibility', 'hidden' );
							}else {
								$( element.id ).getNext().setStyle( 'visibility', 'hidden' );
							}
							// for ringtones
							if(res.cache_flash_players && res.cache_flash_players.length > 0) {
								element.js_cache = res.cache_flash_players;
								element.rtp_count = res.cache_flash_players.length;
								element.jsRefreshRTP = function () {
										for (j=0; j<element.rtp_count; j++) {
											$(element.js_cache[j].id).set('html', element.js_cache[j].obj);
										}
									};
							} else {
								element.jsRefreshRTP = function () { return false; };
							}
							element.jsRefreshRTP();
							this.processing = false;
						}).bind(this));
						if( ! $chk(element.html) ) {
							$( element.id ).getNext().setStyle( 'visibility', 'visible' );
							req.send( "ctype="+element.ctype+"&uid="+tobj.uid+"&usr="+tobj.usr+"&uls="+element.uls+(tobj.is_partner?"&is_partner":"") +(tobj.show_hidden ? "&show_hidden":"") );
						}
						else {
							$('upload_items').getElement('.active').removeClass('active');
							var temp = $('uploadsbox_body').get('html');
							$('uploadsbox_body').set('html', unescape(element.html));
							$( element.id ).addClass( 'active' );
							if (typeof element.jsRefreshRTP == 'function')
								element.jsRefreshRTP();
							this.processing = false;
						}
					}

				}).bind(this) )
			}
		},this );
	}
});

/**
*	@class		Tabs class
*	@author		Maxim Rubis
*/

var Tabs = new Class( {
	_tabs: '',
	_divid: '',

	initialize: function(_tabs, _divid)
	{
		this._tabs = _tabs;
		this._divid = _divid;

		this._tabs.each(function( element ) {
			if ( $( element.id ) ) {
				$( element.id ).addEvent( 'click', function ( ) {
					this.blur();
					if ( !$( element.id ).getProperty( 'class' ).test( 'active' ) ) {
						var req = new Request();
						req.addEvent( 'onComplete', function() {
							if ( this.response.text.substr( 0, 9 ) != 'Exception' ) {
								$( _divid ).setProperty( 'html', this.response.text );
								_tabs.each( function( el ) { $( el.id ).removeClass( 'active' ) });
								$( element.id ).addClass( 'active' );
							}
						} );
						req.send( { url: element.url, method: 'get' } );
					}
				} );
			}
		} );
	}
} );
var tabs = function () {
	/*
	Description:
		Uses mootabs on all unordered lists with the class .tabs

	Author:
		Henrik Kjelsberg
	*/
	// Array of ids to lists that is to be affected
	var tabLists = new Array('fm', 'fp');
	var containerList = new Array( 'browse', 'people' );

	tabLists.each( function( el, index) {
		if( $defined( $(el) ) ) {
			var container = $( containerList[index] + '-httpreqcontainer' );

			// Create tabs
			new MooTabs( el, container, {
				onLoaded : function ( nodes, elements, html, javascript, i ) {

					if ( $defined( $( containerList[index] + '-overlay' ) ) ) $( containerList[index] + '-overlay' ).setStyle( 'display', 'none' );
					/*
					// Caching
					if ( !this.container.getParent().getElement( '.cache' + index ) ) {
						new Element( 'div', { 'class' : 'cache' + index } ).set( 'html', html ).inject( this.container.getParent() ).setStyle( 'display', 'none' );
					}
					*/
					//embedflash();
					//ringtoneplayer();
				},
				onStart : function ( i ) {
					/*
					// Cached?
					if ( this.container.getParent().getElement( '.cache' + index ) ) {
						var cacheelement = this.container.getParent().getElement( '.cache' + index ).clone();
						cacheelement.set( 'class', this.container.get( 'class' ) ).replaces( this.container ).setStyle( 'display', 'block' );
					}
					*/

					if ( $defined( $( containerList[index] + '-overlay' ) ) ) $( containerList[index] + '-overlay' ).setStyle( 'display', 'block' );
				},
				onFailure : function () {
					//alert( 'Your browser is to old for Zedge &amp; it\'s blingy interface!' );
				}
			} );
		}
	});

}


/**
 *	@class		CTabsRelated - ajax box on view content item page
 *	@author		Erik Kjelling
 */
/*TODO if request in progress, disable all click events from init */
var CTabsRelated = new Class( {
	cache:'',
	tabs:'',
	related:'',
	initialize: function(tabs, related, cache){
		this.tabs = tabs;
		this.related = related;
		this.cache = cache;
		this.tabs.each( function(element) {
			if($(element.id)){
				/*console.log(element.id);*/
				var test = element.id;
				js_cache = ''; // for ringtones
				rtp_count = 0; // for ringtones
				/*alert(test);*/
				$(test).addEvent('click', function() {
					this.blur();
					if(!$(element.id).hasClass('active') ) {
					var req = new Request();
					req.addEvent( 'onComplete', function() {
						var res = JSON.decode(this.response.text);
						if(res.result==true){
							$('relatedbox_body').empty();
							var rows = res.body.html;
							for(var i=0; i<rows.length; i++){
								new Element('div', {'html':rows[i], 'class':''}).inject('relatedbox_body');
							};
							new Element('div', {'class':'clear'}).inject('relatedbox_body');
							$('related_items').getElement('.active').removeClass('active');
							$( element.id ).addClass( 'active' );
							$( element.id ).getNext().setStyle( 'visibility', 'hidden' );
						}else {
							$( element.id ).getNext().setStyle( 'visibility', 'hidden' );
						}
						// for ringtones
						if (res.cache_flash_players.length > 0) {
							js_cache = res.cache_flash_players;
							rtp_count = res.cache_flash_players.length;
							for (j=0; j<rtp_count; j++) {
								$(res.cache_flash_players[j].id).set('html', res.cache_flash_players[j].obj);
							}
						}
					});
					if( ! $chk(cache) ) {
						/*console.log('no cache, sending request');*/
						cache = $('relatedbox_body').get('html');
						$( element.id ).getNext().setStyle( 'visibility', 'visible' );
						req.send( { url: element.url, method: 'get' } );
					} else {
						/*console.log('cache exists, swapping content...');*/
						$('related_items').getElement('.active').removeClass('active');
						var temp = $('relatedbox_body').get('html');
						$('relatedbox_body').set('html', cache);
						cache = temp;
						$( element.id ).addClass( 'active' );
						// for ringtones
						if (rtp_count>0 && js_cache!='') {
							if (this.id=='related_tab_2'){
								for (j=0; j<rtp_count; j++) {
									$(js_cache[j].id).set('html', js_cache[j].obj);
								}
							} else {
								rtpResetFlash();
							}
						}
					}
					}
				}
				);
			}
		});
	}
});


/**
 *	@class		CTabsNew
 *	@author		Erik Kjelling
 */
var CTabsNew = new Class( {
	tabs:'',
	divid:'',
	processing: false,
	initialize: function(tabs, container){
		this.tabs = tabs;
		this.container = container;
		this.processing = false;
		this.tabs.each( function(element) {
			if($(element.id)){
				$(element.id).addEvent('click', (function() {
					if(this.processing) return;
					$(element.id).blur();
					if(!$(element.id).hasClass('active') ) {
					$( element.id ).getNext().setStyle( 'visibility', 'visible' );
					this.processing = true;
					var req = new Request();
					req.addEvent( 'onComplete', (function() {
						var res = JSON.decode(req.response.text);
						if(res.result==true){
							$(container).getElement('.header_link').setProperty('html', res.header.link);
							$(container).getElement('.header_info').setProperty('html', res.header.info);
							$(container).getElement('.itembox_body').setProperty('html', res.body.html);
							$(container).getElement('.itembox_footer_link').setProperty('html', res.footer.link);
							if($chk($(container).getElement('.active'))){
								$(container).getElement('.active').removeClass('active');
							}
							if($defined(element.content_type)){
								$('contentType').value = element.content_type;
								if($(container).getElement('.box')){
									if(element.content_type==4){
										$(container).getElement('.box').addClass('ringtones');
									}
									else{
										if($(container).getElement('.box').hasClass('ringtones')){
											$(container).getElement('.box').removeClass('ringtones');
										}
									}
								}
							}
							$( element.id ).addClass( 'active' );
						}
						else
						{
						}
						$( element.id ).getNext().setStyle( 'visibility', 'hidden' );
						this.processing = false;
					}).bind(this));
					req.send( { url: element.url, method: 'get' } );
					}
				}).bind(this) )
			}
		},this);
	}
});


/**
*	@class		CTabs
*	@author		Erik Kjelling, Maxim Rubis
*/
var CTabs = new Class( {
	_tabs: '',
	_divid: '',
	initialize: function(_tabs, _divid)	{
		this._tabs = _tabs;
		this._divid = _divid;
		this._tabs.each(function( element ) {
			if ( $( element.id ) ) {
				$( element.id ).addEvent( 'click', function ( ) {
					this.blur();
					if ( ! $( element.id ).hasClass('active') ) {

						/*TODO add layer with spinning load icon; remove when done*/

						var req = new Request();
						req.addEvent( 'onComplete', function() {
							var res = JSON.decode( this.response.text );
							/*console.log(res);*/
							if ( res.result==true ) {
								$('itembox_header_link').setProperty( 'html', res.header.link );
								/*$('itembox_header_info').setProperty( 'html', res.header.link );*/
								$('itembox_body1').setProperty( 'html', res.body.html1 );
								$('itembox_body2').setProperty( 'html', res.body.html2 );
								/*$('itembox_footer_info').setProperty( 'html', res.footer.info );*/
								$('itembox_footer_link').setProperty( 'html', res.footer.link );

								_tabs.each( function( el ) { $( el.id ).removeClass( 'active' ) });
								$( element.id ).addClass( 'active' );
							}
						} );
						req.send( { url: element.url, method: 'get' } );
					}
				} );
			}
		} );
	}
} );


/** The ajaxified phone selector core
 *
 */
var zoomed;
var Phones = new Class( {
	phone: '',
	processing: '',
	ctype: 0,

	initialize: function( container, selbox_brands, selbox_models, phoneselgo, spinner, ctype, do_redirect, do_save) {
		if ( !( this.selbox_brands = $( selbox_brands ) ) ) return false;
		if ( !( this.selbox_models = $( selbox_models ) ) ) return false;
		if ( !( this.phoneselgo = $( phoneselgo ) ) ) return false;
		this.ctype = ctype;
		if( $defined(do_save)) {
			this.do_save = do_save;
		}else {
			this.do_save = false;
		}
		this.container	= $( container );
		this.section	= this.selbox_brands.title;

		this.selbox_models.removeChild( this.selbox_models.firstChild );
		if(do_redirect) this.phoneselgo.addEvent( 'click', ( function () { this.change() } ).bind( this ) );
		this.selbox_brands.addEvent( 'change', ( function () { this.populate() } ).bind( this ) );

		// Updates the image of the chosen phone in the lightbox
		if($defined($('selectedPhone'))){
			zoomed = false;
			$('phone_select_models').addEvent('change', function () {
				changePhoneImage();
			});
            $('selectedPhone').addEvent('click', function () {
				togglePhoneZoom();
			})
		}
		$$( 'input.blackbutton' ).each( function ( el ) {
			el.addEvent( 'mouseover', function () { this.addClass( 'hover' ) } );
			el.addEvent( 'mouseout', function () { this.removeClass( 'hover' ) } );
		} );
		// get operators
		var req = new Request( { url : '/ajax/ajax-get-phones.php?ctype=' + this.ctype,
			onComplete: ( function ( phones ) { this.phones = JSON.decode( phones );
			this.processing = this.phones.slice();
			this.selbox_brands.options.length = 0;
			var option = new Element( 'option' ).setProperties( { 'value' : '', 'html' : 'Choose a brand'} ).inject( this.selbox_brands );

            if(this.ctype != 3) {
                    // Add most popular phone brands first
                    option = new Element( 'option' ).setProperties( { 'id': 'brandId2', 'value' : '2', 'html' : 'Nokia'} ).inject( this.selbox_brands );
                    option = new Element( 'option' ).setProperties( { 'id': 'brandId1', 'value' : '1', 'html' : 'Sony Ericsson'} ).inject( this.selbox_brands );
                    option = new Element( 'option' ).setProperties( { 'id': 'brandId5', 'value' : '5', 'html' : 'Samsung'} ).inject( this.selbox_brands );
                    option = new Element( 'option' ).setProperties( { 'id': 'brandId4', 'value' : '4', 'html' : 'Motorola'} ).inject( this.selbox_brands );
                    option = new Element( 'option' ).setProperties( { 'id': 'brandId9', 'value' : '9', 'html' : 'LG'} ).inject( this.selbox_brands );
                    option = new Element( 'optgroup' ).setProperties( { 'label' : '-----------------'} ).inject( this.selbox_brands );
            }

             // Add rest of phone brands
			this.phones.each( ( function ( el ) {
                                var option = new Element( 'option' ).setProperties( {
                                	'id': 'brandId'+el.id, 'value' : el.id, 'html' : el.brand } ).inject( this.selbox_brands );
			} ).bind( this ) );
            if(this.ctype != 3 && psel_brand > 0){
                    $('brandId'+psel_brand).set( 'selected', 'selected');
                    this.populate();
            }
		} ).bind( this ) } ).post();
	},

	populate: function () {
        if( psel_phone == 0 ){
			resetPhoneImage();
		}
        var req = new Request( { url : '/ajax/ajax-get-phones.php?brand='+this.selbox_brands.get('value') + '&ctype=' + this.ctype + '&country=' + country,
			onComplete: ( function ( phones ) {
				this.phones = JSON.decode( phones );
				this.processing = this.phones.slice();
				this.selbox_models.options.length = 0;
                this.selbox_models.empty();
				var option = new Element( 'option' ).setProperties( { 'value' : '', 'html' : 'Select model'} ).inject( this.selbox_models );
                var counter = 0;
				this.phones.each( ( function ( el ) {
                    //This checks if the 6th element is 0. Then we have a top 5 list for phones in this country
                    // Hence an optgroup is inserted below the top group.
                    if(counter == 5 && el.id == 0){
                        var option = new Element( 'optgroup' ).setProperties( {'label' : '-----------------'}).inject( this.selbox_models );
                    } else {
                        var option = new Element( 'option' ).setProperties(
                            {'id':'modelId'+el.id, 'value':el.id, 'html':el.model, 'class':'_'+el.id_mapped }
				        ).inject( this.selbox_models );
                    }
                    counter += 1;
				} ).bind( this ) );
				if(this.ctype != 3 && psel_phone > 0){
				        if( $( 'modelId'+psel_phone ) ) {
				                $('modelId'+psel_phone).set( 'selected', 'selected' );
				        }
				}
				$( 'phone_select_models' ).removeAttribute('disabled');

				if(this.ctype != 3){
					if($( 'phone_select_brands' ).get( 'value' ) == 2){
						$( 'nokiaHelp' ).setStyle( 'display', 'block' );
						$( 'genericHelp' ).setStyle( 'padding-top', '53px' );
					} else {
						$( 'nokiaHelp' ).setStyle( 'display', 'none' );
						$( 'genericHelp' ).setStyle( 'padding-top', '62px' );
					}
				}
			} ).bind( this ) } ).post();
	}

	/*,

	change: function () {
		var value = this.selbox_models.get( 'value' );
		this.phone = this.selbox_brands.options[this.selbox_brands.selectedIndex].get( 'text' ) + '-' + this.selbox_models.options[this.selbox_models.selectedIndex].get( 'text' );
		var uri = '/' + this.section + '/' + value + '/' + makeURLString( this.phone ) + '-' + this.section + '/';
		if( this.do_save ) uri = uri+"?updPhone"
		window.location.href = uri;
	}*/

} );

function togglePhoneZoom(){
	var pid = $('phone_select_models').options[$('phone_select_models').selectedIndex].get("class").substring(1);
    var imgFx = new Fx.Morph($('phoneselectorImage'), {duration: 300, transition: Fx.Transitions.Circ.easeOut});
    var divFx = new Fx.Morph($('selectedPhone'), {duration: 300, transition: Fx.Transitions.Circ.easeOut});
	if(zoomed){
        divFx.start({
            'height': 100,
            'width': 100
        });
        imgFx.start({
            'height': 92,
            'width': 70,
            'padding': '4px 15px'
        });

        $( 'zoomer' ).set('src', 'http://app.zedge.net/static/images/lightbox/magnifier_plus.gif');

        zoomed = false;
	} else {
        divFx.start({
            'height': 200,
            'width': 200
        });
        imgFx.start({
            'height': 184,
            'width': 140,
            'padding': '8px 30px'
        });

        $( 'zoomer' ).set('src', 'http://app.zedge.net/static/images/lightbox/magnifier_minus.gif');
        zoomed = true;
	}
}

/*
 * Enables or disables the selectboxes in the phone select lightbox
 */
function togglePhoneSelects(){
	if( $( 'phoneMissingCheck' ).checked ){
		$( 'selectedPhone' ).fade( 'out' );
		$( 'phone_select_brands' ).setAttribute( 'disabled', 'disabled' );
		$( 'phone_select_models' ).setAttribute( 'disabled', 'disabled' );
		$( 'phonesel_go' ).setAttribute( 'value', 'Done');
	} else {
		$( 'selectedPhone' ).fade( 'in' );
		$( 'phone_select_brands' ).removeAttribute( 'disabled' );
		if($( 'phone_select_models' ).options.length > 1){
			$( 'phone_select_models' ).removeAttribute( 'disabled' );
		}
		$( 'phonesel_go' ).setAttribute( 'value', 'Select phone');
	}
}

/*
 * Update the image of the chosen phone in the phone select lightbox
 */
var phoneImage;
function changePhoneImage(){
	$( 'zoomer' ).setStyle( 'display', 'none');
    $( 'lightboxSpinner' ).setStyle( 'display', 'block');
	$('phoneselectorImage').fade('hide').fade('out');
	var pid = $('phone_select_models').options[$('phone_select_models').selectedIndex].get("class").substring(1);
	if(pid!="0"){var url = "http://app.zedge.net/static/images/phones/l/" + pid + "-l.jpg";}
	else{var url = "http://app.zedge.net/static/images/phones/default-l.jpg";}
	if(zoomed){
        phoneImage = new Asset.image(url, {'id': 'phoneselectorImage', 'class': 'large', onload: function() {

        this.replaces($('phoneselectorImage'));
        $( 'lightboxSpinner' ).setStyle( 'display', 'none');
        $('phoneselectorImage').fade('in');
    }});
    } else {
        phoneImage = new Asset.image(url, {'id': 'phoneselectorImage', 'class': 'normal', onload: function() {

        this.replaces($('phoneselectorImage'));
        $( 'lightboxSpinner' ).setStyle( 'display', 'none');
        $('phoneselectorImage').fade('in');
    }});
    }


    $( 'zoomer' ).setStyle( 'display', 'block');
}

function resetPhoneImage() {
    var url = 'http://app.zedge.net/static/images/dummies/phone.png';
    phoneImage = new Asset.image(url, {'id': 'phoneselectorImage', 'class': 'normal', onload: function () {
            this.replaces($('phoneselectorImage'));
            $( 'zoomer' ).setStyle( 'display', 'none');
    }});
}

/*
 * Function to get the phone data from the quicklinks in the phone select lightbox
 */
function zlibQuicklinkPhone(brand, model, ctype){
	$( 'brandId'+brand ).set( 'selected', 'selected');
	var req = new Request( { url : '/ajax/ajax-get-phones.php?brand='+$( 'phone_select_brands' ).get('value') + '&ctype=' + ctype, onComplete: ( function ( phones ) {
		this.phones = JSON.decode( phones );
		this.processing = this.phones.slice();
		$( 'phone_select_models' ).options.length = 0;
		var option = new Element( 'option' ).setProperties( { 'value' : '', 'html' : 'Select model'} ).inject( $( 'phone_select_models' ) );
		this.phones.each( ( function ( el ) {
            if(el.id == model){
                var option = new Element( 'option' ).setProperties(
					{'id':'modelId'+el.id, 'value':el.id, 'html':el.model, 'class':'_'+el.id_mapped, 'selected': 'selected' }
					).inject( $( 'phone_select_models' ) );
            } else {
                var option = new Element( 'option' ).setProperties(
					{'id':'modelId'+el.id, 'value':el.id, 'html':el.model, 'class':'_'+el.id_mapped }
					).inject( $( 'phone_select_models' ) );
            }

		} ).bind( this ) );
		$( 'phone_select_models' ).removeAttribute('disabled');
		changePhoneImage();
	} ).bind( this ) } ).post();
        $( 'phoneMissingCheck' ).checked = false;
        $( 'phone_select_brands' ).removeAttribute( 'disabled' );
}


var Lightbox = new Class({
	onDone: '',

	initialize: function(options){
		this.options = $extend({
			width: 395,
			height: 250
		}, options || {});

		this.overlay = new Element('div', {'id': 'lbOverlay'}).inject(document.body);
		this.overlay.set('opacity', 0);
		this.overlay.set('tween', {duration: 'short'});

		this.center = new Element('div', {'id': 'lbCenter', 'styles': {'width': this.options.width, 'height': this.options.height, 'background':'none', 'marginLeft': -(this.options.width/2)}}).inject(document.body);
		this.center.set('opacity', 0);
		this.center.set('tween', {duration: 'short'});
	},

	show: function(html, onDone){
		this.setup(true);
		//$$('body').setStyle( 'overflow', 'hidden' );
        this.onDone = onDone;

        if($defined($('phoneselectorImage'))){
        	resetPhoneImage();
    	}
		this.center.setProperty('html', html);

		if( $defined(onDone) ){
			this.center.get('tween').addEvent("onComplete", onDone);
		}

		this.center.setStyles({top: document.getScroll().y + (document.getCoordinates().height / 4)});
		this.overlay.setStyles({'top': 0, 'height': document.getScrollSize().y});

		// animate
		this.overlay.tween('opacity', 0.7);
		this.center.tween('opacity', 1);

        if($defined($('cancelLink'))) {
            $( 'cancelLink' ).onclick = this.close.bind(this);
        }

        if($defined($('closeLink'))) {
        	$('closeLink').onclick = this.close.bind(this);
        }

        if($defined($('buttonConfirm'))) {
        	//$('buttonConfirm').onclick = zjsOwnershipConfirmed(this);//
        	//$('buttonConfirm').addEvent('click', zjsOwnershipConfirmClose );
        	//$('buttonConfirm').addEvent('click', this.close.bind(this); );
        	//$('buttonConfirm').addEvent('click', zjsCheckRegFormPartner(); );

        }

		$$( 'body' ).addClass( 'body-overlayed' );

        if($defined($('buttonNo'))){
            $$( '.buttons a' ).each( function ( el ) {
                el.addEvent( 'mouseover', function () { this.addClass( 'hover' ) } );
                el.addEvent( 'mouseout', function () { this.removeClass( 'hover' ) } );
            } );
            $('buttonNo').onclick = this.close.bind(this);
        }
		return true;
	},

	close: function(){
		this.overlay.tween('opacity', 0);
		this.center.tween('opacity', 0);
		this.overlay.empty();
        this.center.empty();
		this.setup(false);
		//$$('body').setStyle( 'overflow', 'visible' );
        $$( 'body' ).removeClass( 'body-overlayed' );
		return false;
	},

	setup: function(open){
		/*var elements = $A(document.getElementsByTagName('object'));
		elements.extend(document.getElementsByTagName(Browser.Engine.trident ? 'select' : 'embed'));
		elements.each(function(el){
			if (open) el.lbBackupStyle = el.style.visibility;
			el.style.visibility = open ? 'hidden' : el.lbBackupStyle;
		});*/
	}
});

/**
 * Gets the age of a human born on a particular date
 *
 * @param Integer year The year part of the birthdate (full year, four digits)
 * @param Integer month The month part of the birthdate (jan = 1)
 * @param Integer day The day part of the birthdate
 *
 * @return Integer The age in years, rounded down
 */
function zjsGetAge(year, month, day)
{
	var now = new Date;
	var years = now.getFullYear() - year;
	var months = now.getMonth() - (month - 1);
	var days = now.getDate() - day;
	if(months < 0 || (months == 0 && days < 0)) years--; //The birthday this year is in the future

	return years;
}

function zjsIsUnsignedInteger(s){
	return (s.toString().search(/^[0-9]+$/) == 0);
}

/**
 * A simple valid date checker. Handles leap years too.
 */
function zjsIsValidDate( y, m, d ) {
    var o = new Date(y, --m, d);
    return o.getFullYear() == y && o.getMonth() == m && o.getDate() == d;
}
/**
* Change content of Help-lightbox
*/
function zjsChangeContent(element, content) {
	$$( '.pillMenu li' ).each( function ( el ) {
		el.removeClass( 'active' );
		el.removeClass( 'lastActive' );
		el.removeClass( 'firstActive' );
	});

	if( element.hasClass( 'first' ) && !element.hasClass ( 'firstActive' ) ) {
		element.addClass ( 'firstActive' );
	} else if ( element.hasClass( 'last' ) && !element.hasClass( 'lastActive' ) ) {
		element.addClass( 'lastActive' );
	} else if ( !element.hasClass( 'active' ) ) {
		element.addClass( 'active' );
	}

	$$( '.subContent' ).each( function( el ) {
		el.setStyle('display', 'none');
	});
	$( content ).setStyle('display', 'block');
}

/**
 * Enable Skip button on smiley ad page
 */
function zjsSmileySkipEnable(){
	$('skip_button').set('class','bigblackbutton');
	$('skip_button').href = $('skip_url').value;
}
/**
 * flash background color on element
 * Element needs to have background color set
 * @param el element or id of element to highlight
 *
 */
function zjsHighlightBackground (el, toColor ) {
	el = $(el);
	currentColor = el.getStyle( 'background-color' );
	var morpher = new Fx.Morph( el, {link:"chain", fps:"50", duration: "800"} );
	morpher.start( {'background-color': toColor } );
	morpher.start( {'background-color': toColor } );
	morpher.start( {'background-color': currentColor } );
}

function zjsCheckSearchText(id) {
	if($defined($( 'txt_query' ))) {
		var limit = 2;

		var ctype = false;
		if($('contentType').match('select')) ctype = $('contentType').getFirst('option[selected]').get('value');
		else ctype = $('contentType').get('value');

		if( ctype == 19) {
				var limit = 4;
		} else if(ctype == 20) {
				var limit = 3;
			}

		$('searchChars').set('html', limit);
		if( $( 'txt_query' ).get( 'value' ).length < limit || $( 'txt_query' ).get( 'value' ) == keywords[ctype] ) {
			if( $( 'txt_query' ).get( 'value' ) != keywords[ctype] ) {
				$('searchTooltip').setStyle('display', 'block');
			}
			if( !$(id).hasClass('disabled') ){
				$(id).addClass('disabled');
			}
			$(id).set( 'disabled', 'disabled' );
		} else {
			$('searchTooltip').setStyle('display', 'none');
			if( $(id).hasClass('disabled') ) {
				$(id).removeClass('disabled');
			}
			$(id).set( 'disabled', '' );
		}
	}
}

function zjsCheckBeforeSearch() {
	if( $defined( $('txt_query') ) ) {
		var ctype = false;
		if($('contentType').match('select')) ctype = $('contentType').getFirst('option[selected]').get('value');
		else ctype = $('contentType').get('value');

		if( $('txt_query').get( 'value' ) == keywords[ctype] ) {
			return false;
		}
		return true;
	}
}
/**
 * Remove default search text when search field gets focus
 */
function zjsSearchFieldFocus(location) {
	if( location == null && $defined( $('txt_query') )  && $defined( $( 'contentType' ) ) ) {
		var ctype = false;
		if($('contentType').match('select')) ctype = $('contentType').getFirst('option[selected]').get('value');
		else ctype = $('contentType').get('value');

		if( $( 'txt_query' ).get( 'value' ) == keywords[ctype]) {
			$( 'txt_query' ).set( 'value','');
		}
		$('txt_query').setStyle('color', '#000');
	} else if( $defined( $('selectorSearch') ) ) {
		$('selectorSearch').set('value', '');
	}
}

/**
 * Insert default search text when search field loses focus
 */
function zjsSearchFieldBlur(id, index) {
	$(id).set('value', keywords[index]);
}

/**
 * Set default search text for chosen content type, unless user has entered searchtext
 */
function zjsUpdateDefaultSearch(oldCtype, newCtype) {
	if( $defined( $('txt_query') )  && $defined( $( 'contentType' ) ) ) {
		if( $( 'txt_query' ).get( 'value' ) == '' || (oldCtype != newCtype && $( 'txt_query' ).get( 'value' ) == keywords[oldCtype] ) ) {
			$( 'txt_query' ).setStyle( 'color', '#ccc' );
			$( 'txt_query' ).set( 'value', keywords[newCtype] );
		}
	}
}

/**
 * Enables/disables search suggestions based on content type and other info
 */
function zjsSetSuggestionSwitch(ctype) {
	// Switching for the suggestionbox
	if( $( 'suggestionSwitch' ) ) {
		// Always enable for VIDEO and RINGTONE
		if( ctype == 4 || ctype == 9 ){
			$( 'suggestionSwitch' ).set( 'value', 'enabled' );
		}
		// Do not show for WALLPAPER unless phone has wallpaper class
		else if( ctype == 1 && $( 'phone_wall_class' ).get( 'value' ) > 0 ) {
			$( 'suggestionSwitch' ).set( 'value', 'enabled' );
		}
		// Do not show for THEME unless phone has theme class
		else if( ctype == 2 && $( 'phone_theme_class' ).get( 'value' ) > 0 ) {
			$( 'suggestionSwitch' ).set( 'value', 'enabled' );
		}
		// Otherwise, don't show
		else {
			$( 'suggestionSwitch' ).set( 'value', 'disabled' );
		}
	}
}

var formTooltips = new Array();
/**
 * When form fields gets focus, the background color is set to white and
 * the tooltip is shown. If the field had an error, this is reset.
 */
function zjsFocusFormfield(element, tooltip) {
	element.style.background = '#fff';
	if( $defined( $(tooltip) ) ) {
		if( $(tooltip).getStyle('display') == 'none' ) {
			$(tooltip).setStyle( 'display', 'block' );
			$(tooltip).set( 'tween', { duration: '200'});
		}
		$(tooltip).tween( 'opacity', '0.9' );
	}
	if(  element.type != 'select-one' &&  element.type != 'textarea' && element.hasClass( 'error' ) ) {
		element.removeClass( 'error' );
	}
}
/**
 * When form field loses focus, the tooltip is hidden, the tooltip text is reset
 * to default(in case there was an error message) and the field gradient is
 * reinserted as background.
 */
function zjsBlurFormfield(element, tooltip, delay) {
	if( $defined( $(tooltip) ) ) {
		if( delay ) {
			(function() {zjsResetTooltip(element, tooltip)}).delay('200');
		} else {
			zjsResetTooltip(element, tooltip);
		}
	}
	if( element.type == 'text' || element.type == 'password' ) {
		element.setStyle( 'background' , 'url(http://app.zedge.net/static/image/layout/form/field-gradient.png) repeat-x left top' );
	}
}
/**
 * Reset the tooltip to default color and message
 */
function zjsResetTooltip(element, tooltip) {
	$(tooltip).setStyle( 'opacity', '0' );
	if( $(tooltip).hasClass( 'field_msg_error' ) ) {
		$(tooltip).removeClass( 'field_msg_error' );
		$(tooltip).addClass( 'field_msg' );
	}
	if( formTooltips[element.id] != null ) {
		var span = $(tooltip).getElement( 'span.message' );
		span.set( 'html', formTooltips[element.id] );
	}
}


/**	Flag a item
 */
function ZJSFlagItem(ctype, itemid, reason, source, rk, rt) {
	$('flag_item_link').dispose();

	ajax_update_div			= 'flag_item_message';
	ajax_slide_out_delay	= 5;
	var parameters			= 'flag-item=' + ctype + '-' + itemid + '-' + reason + '-' + source + '-' + rk + '-' + rt + '&suggestBan=0';
	makePOSTRequest('/ajax/ajax-flag-item.php', parameters, ZJSdoGenericCallback);
}

var formFieldRule = new Array();
/**
 * Validates the form sent as parameter, according to specified formFieldRules
 */
function zjsValidateForm(form){
	var result = new Array();
	for (n=0; n < formFieldRule.length; n++) {
		validator = new Validator (formFieldRule[n].id, formFieldRule[n].fn, formFieldRule[n].params);
		$(formFieldRule[n].id).fireEvent('validate');

		var formField = $(formFieldRule[n].id);
		if ( validator.result.valid==false ) {
			validator.result.id = formFieldRule[n].id;
			result.include( validator.result );
			if( $defined(formField) ){
				if( formField.get( 'type' ) != 'checkbox' ) {
					formField.addClass('error');
					formField.setStyle( 'background', '#F5CACA' );
				} else {
					formField.getParent().addClass( 'error' );
				}
			}
			if( $defined( $( formFieldRule[n].id + 'Tooltip' ) ) ) {
				$( formFieldRule[n].id + '_msg' ).set( 'html', validator.result.msg );
				$( formFieldRule[n].id + 'Tooltip' ).removeClass( 'field_msg' );
				$( formFieldRule[n].id + 'Tooltip' ).addClass( 'field_msg_error' );
			}
		}
		else {
			if( $defined(formField) ){
				if( formField.get( 'type' ) != 'checkbox' ) {
					formField.removeClass('error');
				} else {
					formField.getParent().removeClass( 'error' );
				}
			}
			if( $defined( $( formFieldRule[n].id + 'Tooltip' ) ) ) {
				$( formFieldRule[n].id + 'Tooltip' ).removeClass( 'field_msg_error' );
				$( formFieldRule[n].id + 'Tooltip' ).addClass( 'field_msg' );
			}
		}
	}
	if ( result.length > 0 ) {
		var notif = '<div class="notify_error">';
		notif = notif + 'Something was wrong. Please check the marked fields and make the necessary corrections.' + '</div>';
		if( !$('formStatusBox') ) {
			errorBox = new Element('div', {'id': 'formStatusBox'});
			errorBox.inject( form, 'top' );
		}
		$('formStatusBox').setProperty('html', notif);
		ZJSscrollWindow($('formStatusBox'));
		return false;
	}
	else {
		if( $('formStatusBox') ) $('formStatusBox').setProperty('html', '');
		return true;
	}
	return false;
}

/**
 * Class used for validation of form fields
 */
var Validator = new Class ({

	initialize: function (field, event, params) {
		this.result = {"msg":"", "valid":true};
		add_event = eval('this.'+event+'($(field)'+params+')');
		$(field).addEvents( {
			'validate': function () { add_event }
		} );
	},

	checkUsername: function (field, min, max, async_validate) {
		var info = $( field ).getPrevious();
		info.fade( 'out' );
		var val = field.value;
		if (val == ""){
			this.result = {"msg":"Pick a username","valid":false};
		}
		else if ( (val.length < min) || (val.length > max) || (!isValid(val,ac_lwr+ac_numb+ac_upr)) ) {
			this.result = {"msg":"Min. " + min + " characters, no symbols, no spaces","valid":false};
		}
		else if( $defined(async_validate) ){
			zjsCheckUsernameAvailability(field, true);
		}
		return this.result;
	},

	checkEmail: function (field, async_validate) {
		var val = field.value;
		var emailFilter=/^.+@.+\..{2,4}$/;
		var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]\ ]/
		var info = $( field ).getPrevious();
		info.fade( 'out' );

		if ( val=="" ) {
			this.result = {"msg":"Specify your e-mail address", "valid":false};
		}
		else if ( !emailFilter.test(val) ) {
			this.result = {"msg":"Enter a valid e-mail address", "valid":false};
		}
		else if (val.match(illegalChars)) {
			this.result = {"msg":"The e-mail address contains illegal characters.", "valid":false};
		}
		else if( $defined( async_validate ) ){
			zjsCheckEmailAvailability(field, true);
		}
		return this.result;
	},

	checkDOB: function (field) {
		var is_date =  true;
		field.getChildren().each( function(el) {
			if (el.value == 0) {
				is_date = false;
			}
		});

		if ( !(is_date) ) {
			this.result = {"msg":"Specify your date of birth.","valid":false};
		}
		else if ( ! zjsIsValidDate(field.childNodes[3].value, field.childNodes[0].value, field.childNodes[1].value)) {
			this.result = {"msg":"Enter a valid date.","valid":false};
		}
		return this.result;
	},


	checkPassword: function (field, min, max) {
		var val = field.value;
		if (val == "" ) {
			return this.result = {"msg":"Specify your password","valid":false};
		}
		if (val.length < min) {
			return this.result = {"msg":"Min " + min + " characters","valid":false};
		}
		if (val.length > max) {
			return this.result = {"msg":"Max " + max + " characters","valid":false};
		}
		if (!isValid(val,ac_lwr+ac_numb)) {
			return this.result = {"msg":"No symbols, caps or spaces","valid":false};
		}
	},

	checkVerifyPassword: function (field, field_two) {
		var val = field.value;
		var val_two = $(field_two).value;
		if(val != val_two) {
			return this.result = {"msg":"Passwords do not match","valid":false};
		}
	},

	checkRadio: function (field, custom_msg) {
		var is_checked = false;
		if (field.checked) {
			is_checked = true;
		} else {
			var parent = field.getParent();
			parent.getChildren().each( function(el) {
				if (el.name == field.name && el.checked) {
					is_checked = true;
				}
			});
		}
		if ( !(is_checked) ) {
			this.result = {"msg":custom_msg,"valid":false};
		}
		return this.result;
	},

	checkSelectValue: function (field, errVal, custom_msg) {
		var val = field.value;
		if (val == errVal) {
			this.result = {"msg":custom_msg,"valid":false};
		}
		return this.result;
	},

	checkCheckbox: function (field, custom_msg) {
		var is_checked = false;
		if (field.checked) {
			is_checked = true;
		}
		if (field.id == 'r_no_phonemodel') {  // TO-DO: more elegant handling for phone model checkbox
			if (!is_checked) {
				$('r_phone_brand').removeProperty( 'disabled' );
				$('r_phone_model').removeProperty( 'disabled' );
				if ($('r_phone_model').value > 0) {
					return this.result = {"msg":"","valid":true};
				}
			} else {
				$('r_phone_brand').setProperty( 'disabled', 'disabled' );
				$('r_phone_model').setProperty( 'disabled', 'disabled' );
				ZJSoutputRegisterStatus('','reg_div_phonebrand','');
				is_checked = true;
			}
		}
		if ( !(is_checked) ) {
			this.result = {"msg":custom_msg,"valid":false};
		}
		return this.result;
	},

	checkStreamInput: function (field, min, max) {
		var val = field.value;
		if (val.length < min || val.length > max) {
			return this.result = {"msg":"Minimum " + min + " characters.","valid":false};
		}
	}

});



function zjsUpdateSearchTabs(target, ctype){
	if(typeof(activemenu) == "undefined"){
		return true;
	}
	var is_ie6 = false;
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
		var ieversion=new Number(RegExp.$1);
		if (ieversion<=8){
			 is_ie6 = true;
		}
	}
	var title = target.title.toLowerCase();
	$('tabSearchButton').value = 'Search '+ title;
	zjsUpdateDefaultSearch( $('contentType').get('value'),ctype);
	$('contentType').value = ctype;
	zjsSetSuggestionSwitch(ctype);
	if(is_ie6){
		activemenu.setAttribute("className","");
		target.setAttribute("className","active");
	}
	else{
		activemenu.removeClass( 'active' );
		target.addClass('active');
	}
	activemenu = target;
}


// -------------------------------------------------------------------------------
// JS-file: squeezebox.js
// -------------------------------------------------------------------------------

/**
 * SqueezeBox - Expandable Lightbox
 *
 * Allows to open various content as modal,
 * centered and animated box.
 *
 * Dependencies: MooTools 1.2 trunk (04/2008)
 *
 * Inspired by
 *  ... Lokesh Dhakar	- The original Lightbox v2
 *
 * @version		1.1 rc2
 *
 * @license		MIT-style license
 * @author		Harald Kirschner <mail [at] digitarald.de>
 * @copyright	Author
 */
var SqueezeBox = {

	presets: {
		size: {x: 600, y: 450},
		sizeLoading: {x: 200, y: 150},
		marginInner: {x: 20, y: 20},
		marginImage: {x: 50, y: 75},
		handler: false,
		target: null,
		closable: true,
		closeBtn: true,
		zIndex: 65555,
		overlayOpacity: 0.7,
		classWindow: '',
		classOverlay: '',
		overlayFx: {},
		resizeFx: {},
		contentFx: {},
		parse: false, // 'rel'
		parseSecure: false,
		ajaxOptions: {},
		onOpen: $empty,
		onClose: $empty,
		onUpdate: $empty,
		onResize: $empty,
		onMove: $empty,
		onShow: $empty,
		onHide: $empty,
		onLoaded: $empty,
		cancelBtn: $empty
	},

	initialize: function(presets) {
		if (this.options) return this;
		this.presets = $merge(this.presets, presets);
		this.options = {};
		this.setOptions(this.presets).build();
		this.bound = {
			window: this.reposition.bind(this, [null]),
			scroll: this.checkTarget.bind(this),
			close: this.close.bind(this),
			key: this.onKey.bind(this)
		};
		this.isOpen = this.isLoading = false;
		return this;
	},

	build: function() {
		this.overlay = new Element('div', {
			id: 'sbox-overlay',
			styles: {display: 'none', zIndex: this.options.zIndex}
		});
		this.content = new Element('div', {id: 'sbox-content'});
		this.closeBtn = new Element('a', {id: 'sbox-btn-close', href: '#'});
		this.win = new Element('div', {
			id: 'sbox-window',
			styles: {display: 'none', zIndex: this.options.zIndex + 2}
		}).adopt(this.closeBtn, this.content);
		this.fx = {
			overlay: new Fx.Tween(this.overlay, $merge({
				property: 'opacity',
				onStart: Events.prototype.clearChain,
				duration: 150,
				link: 'cancel'
			}, this.options.overlayFx)).set(0),
			win: new Fx.Morph(this.win, $merge({
				onStart: Events.prototype.clearChain,
				unit: 'px',
				duration: 150,
				transition: Fx.Transitions.Quint.easeOut,
				link: 'cancel',
				unit: 'px'
			}, this.options.resizeFx)),
			content: new Fx.Tween(this.content, $merge({
				property: 'opacity',
				duration: 150,
				link: 'cancel'
			}, this.options.contentFx)).set(0)
		};

		$(document.body).adopt(this.overlay, this.win);
	},

	assign: function(to, options) {
		return to.addEvent('click', function() {
			return !SqueezeBox.fromElement(this, options);
		});
	},

	fromElement: function(from, options) {
		this.initialize();
		if (this.element) this.trash();
		this.element = $(from);
		this.setOptions($merge(this.presets, options || {}));
		if (this.element && this.options.parse) {
			var obj = this.element.getProperty(this.options.parse);
			if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj);
		}
		this.assignOptions();
		this.url = ((this.element) ? (this.options.url || this.element.get('href')) : from) || '';
		var handler = this.options.handler;
		if (handler) return this.setContent(handler, this.parsers[handler].call(this, true));
		var ret = false;
		this.parsers.some(function(parser, key) {
			var content = parser.call(this);
			if (content) {
				ret = this.setContent(key, content);
				return true;
			}
			return false;
		}, this);
		return ret;
	},

	assignOptions: function() {
		this.overlay.set('class', this.options.classOverlay);
		this.win.set('class', this.options.classWindow);
		// Check to see if the lightbox is scrollable or not
		if( !this.win.hasClass('scrollable') ) {
			this.win.addEvent('mousewheel', function( event ) {
				event.stop();
			});
		}
		if (Browser.Engine.trident4) this.win.addClass('sbox-window-ie6');
	},

	close: function(e) {
		var stoppable = ($type(e) == 'event');
		if (stoppable) e.stop();
		if (!this.isOpen || (stoppable && !$lambda(this.options.closable).call(this, e))) return this;
		this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this));
		this.win.setStyle('display', 'none');
		this.trash();
		this.toggleListeners();
		this.isOpen = false;
		this.fireEvent('onClose', [this.content]);
		return this;
	},

	trash: function() {
		this.element = this.asset = null;
		this.options = {};
		this.removeEvents().setOptions(this.presets).callChain();
	},

	onError: function() {
		this.asset = null;
		this.setContent('string', 'Error during loading');
	},

	setContent: function(handler, content) {
		if (!this.handlers[handler]) return false;
		this.content.className = 'sbox-content-' + handler;
		this.applyTimer = this.applyContent.delay(this.fx.overlay.options.duration, this, this.handlers[handler].call(this, content));
		if (this.overlay.retrieve('opacity')) return this;
		this.toggleOverlay(true);
		this.fx.overlay.start(this.options.overlayOpacity);
		return this.reposition();
	},

	applyContent: function(content, size) {
		this.applyTimer = $clear(this.applyTimer);
		this.hideContent();
		if (!content) {
			this.toggleLoading(true);
		} else {
			if (this.isLoading) this.toggleLoading(false);
			this.fireEvent('onUpdate', [this.content], 20);
		}
		this.content.empty();
		if (['string', 'array', false].contains($type(content))) this.content.set('html', content || '');
		else this.content.adopt(content);
		this.callChain();
		if (!this.isOpen) {
			this.toggleListeners(true);
			this.resize(size, true);
			this.isOpen = true;
			this.fireEvent('onOpen', [this.content]);
		} else {
			this.resize(size);
		}
	},

	resize: function(size, instantly) {
		var box = document.getSize(), scroll = document.getScroll();
		this.size = $merge((this.isLoading) ? this.options.sizeLoading : this.options.size, size);
		var to = {
			width: this.size.x,
			height: this.size.y,
			left: (scroll.x + (box.x - this.size.x - this.options.marginInner.x) / 2).toInt(),
			top: (scroll.y + (box.y - this.size.y - this.options.marginInner.y) / 2).toInt()
		};
		$clear(this.showTimer || null);
		this.hideContent();
		if (!instantly) {
			this.fx.win.start(to).chain(this.showContent.bind(this));
		} else {
			this.win.setStyles(to).setStyle('display', '');
			this.showTimer = this.showContent.delay(50, this);
		}
		return this.reposition();
	},

	toggleListeners: function(state) {
		var fn = (state) ? 'addEvent' : 'removeEvent';
		this.closeBtn[fn]('click', this.bound.close);
		this.overlay[fn]('click', this.bound.close);
		document[fn]('keydown', this.bound.key)[fn]('mousewheel', this.bound.scroll);
		window[fn]('resize', this.bound.window)[fn]('scroll', this.bound.window);
	},

	toggleLoading: function(state) {
		this.isLoading = state;
		this.win[(state) ? 'addClass' : 'removeClass']('sbox-loading');
		if (state) this.fireEvent('onLoading', [this.win]);
	},

	toggleOverlay: function(state) {
		this.overlay.setStyle('display', (state) ? '' : 'none');
		$(document.body)[(state) ? 'addClass' : 'removeClass']('body-overlayed');
	},

	showContent: function() {
		if (this.content.get('opacity')) this.fireEvent('onShow', [this.win]);
		this.fx.content.start(1);
	},

	hideContent: function() {
		if (!this.content.get('opacity')) this.fireEvent('onHide', [this.win]);
		this.fx.content.set(0);
	},

	onKey: function(e) {
		switch (e.key) {
			case 'esc': this.close(e);
			case 'up': case 'down': return false;
		}
	},

	checkTarget: function(e) {
		return this.content.hasChild(e.target);
	},

	reposition: function() {
		var size = document.getSize(), scroll = document.getScroll();
		this.overlay.setStyles({
			left: scroll.x + 'px',
			top: scroll.y + 'px',
			width: size.x + 'px',
			height: size.y + 'px'
		});
		this.win.setStyles({
			left: (scroll.x + (size.x - this.win.offsetWidth) / 2).toInt() + 'px',
			top: (scroll.y + (size.y - this.win.offsetHeight) / 2).toInt() + 'px'
		});
		return this.fireEvent('onMove', [this.overlay, this.win]);
	},

	removeEvents: function(type){
		if (!this.$events) return this;
		if (!type) this.$events = null;
		else if (this.$events[type]) this.$events[type] = null;
		return this;
	},

	extend: function(properties) {
		return $extend(this, properties);
	},

	handlers: new Hash(),

	parsers: new Hash()

};

SqueezeBox.extend(new Events($empty)).extend(new Options($empty)).extend(new Chain($empty));

SqueezeBox.parsers.extend({

	image: function(preset) {
		return (preset || (/\.(?:jpg|png|gif)$/i).test(this.url)) ? this.url : false;
	},

	clone: function(preset) {
		if ($(this.options.target)) return $(this.options.target);
		if (this.element && !this.element.parentNode) return this.element;
		var bits = this.url.match(/#([\w-]+)$/);
		return (bits) ? $(bits[1]) : (preset ? this.element : false);
	},

	ajax: function(preset) {
		return (preset || (this.url && !(/^(?:javascript|#)/i).test(this.url))) ? this.url : false;
	},

	iframe: function(preset) {
		return (preset || this.url) ? this.url : false;
	},

	string: function(preset) {
		return true;
	}
});

SqueezeBox.handlers.extend({

	image: function(url) {
		var size, tmp = new Image();
		this.asset = null;
		tmp.onload = tmp.onabort = tmp.onerror = (function() {
			tmp.onload = tmp.onabort = tmp.onerror = null;
			if (!tmp.width) {
				this.onError.delay(10, this);
				return;
			}
			var box = document.getSize();
			box.x -= this.options.marginImage.x;
			box.y -= this.options.marginImage.y;
			size = {x: tmp.width, y: tmp.height};
			for (var i = 2; i--;) {
				if (size.x > box.x) {
					size.y *= box.x / size.x;
					size.x = box.x;
				} else if (size.y > box.y) {
					size.x *= box.y / size.y;
					size.y = box.y;
				}
			}
			size.x = size.x.toInt();
			size.y = size.y.toInt();
			this.asset = $(tmp);
			tmp = null;
			this.asset.setProperties({width: size.x, height: size.y});
			if (this.isOpen) this.applyContent(this.asset, size);
		}).bind(this);
		tmp.src = url;
		if (tmp && tmp.onload && tmp.complete) tmp.onload();
		return (this.asset) ? [this.asset, size] : null;
	},

	clone: function(el) {
		return el.clone();
	},

	adopt: $arguments(0),

	ajax: function(url) {
		this.asset = new Request.HTML($merge({
			method: 'get'
		}, this.options.ajaxOptions)).addEvents({
			onSuccess: function(resp) {
				this.applyContent(resp);
				this.asset = null;
				this.fireEvent('onLoaded');
				$$( 'input.blackbutton' ).each( function ( el ) {
					el.addEvent( 'mouseover', function () { this.addClass( 'hover' ) } );
					el.addEvent( 'mouseout', function () { this.removeClass( 'hover' ) } );
				} );
			}.bind(this),
			onFailure: this.onError.bind(this)
		});
		this.asset.send.delay(10, this.asset, [{url: url}]);
	},

	iframe: function(url) {
		return new Element('iframe', $merge({
			src: url,
			frameBorder: 0,
			width: this.options.size.x,
			height: this.options.size.y
		}, this.options.iframeOptions));
	},

	string: function(str) {
		return str;
	}

});

SqueezeBox.handlers.url = SqueezeBox.handlers.ajax;
SqueezeBox.parsers.url = SqueezeBox.parsers.ajax;
SqueezeBox.parsers.adopt = SqueezeBox.parsers.clone;


// -------------------------------------------------------------------------------
// JS-file: search-suggest.js
// -------------------------------------------------------------------------------

var sug_curr_sel = -1;
var sug_kw_size = 0;
var sug_mouse_over = false;
var sug_keypresses = 0;
var sug_current_requests = 0;
var sug_total_requests = 0;
var sug_prev_request = '';
var sug_ctype = 4;
var sug_cclass = 12;
var is_sug_search = 0;
var sug_pages = new Array(); sug_pages[1] = 'wallpapers'; sug_pages[2] = 'themes'; sug_pages[4] = 'ringtones'; sug_pages[9] = 'videos';
var sug_last_no_result = false;
var sug_cache = { };
var sug_cache_size = 0;
var sug_cache_limit = 100;
var sug_typed_string = '';
var sug_populate_time = false;

// Hides suggestion box
function hideSuggest(){
	$('result').style.display='none';
	$('result').innerHTML='';
	sug_curr_sel = -1;
	sug_kw_size = 0;
}

// Handles certain key events
function doSugKey(e){
	key = (window.event) ? event.keyCode : e.keyCode;
	// Arrow Down
	if (key == 40 && sug_kw_size > 0 && sug_curr_sel!=(sug_kw_size-1)){
		setSuggestionSelection(sug_curr_sel+1);
	// Arrow Up
	}else if (key == 38 && sug_kw_size != 0){
		if(sug_curr_sel == 0) {
			$('txt_query').set('value', sug_typed_string);
			setSuggestionSelection(-1);
		}
		else if(sug_curr_sel > 0) setSuggestionSelection(sug_curr_sel-1);
	// Enter
	}else if (key == 13 && is_sug_search == 1){
		//doSuggestSearch();
	}else {
		is_sug_search = 0;
	}
	return true;
}

// Initiates ajax requests
function doSuggest(e){
	if( $( 'suggestionSwitch' ).get( 'value' ) == 'disabled' ) {
		return;
	}
	key = 0;
	key = (window.event) ? event.keyCode : e.keyCode;
	if ((key > 36 && key <41) || key == 13){
		return false;
	}
	sug_keypresses++;
	sug_typed_string = $('txt_query').get('value');
	setTimeout(sendAjaxSuggest,200);
}

// Changes selected position within the suggestion box
function setSuggestionSelection(position){
	if (sug_curr_sel == position) return;
	if (sug_kw_size==0 || position > sug_kw_size) return false;
	if (sug_curr_sel != -1)	{
		$('kw_'+sug_curr_sel).className='sug_p';
		$('sugg_items_'+sug_curr_sel).style.color='#999';
	}
	sug_curr_sel = position;

	if(sug_curr_sel >= 0) {
		$('kw_'+sug_curr_sel).className='sug_p_sel';
		$('txt_query').value=$('kwt_'+sug_curr_sel).innerHTML;
		$('sugg_items_'+sug_curr_sel).style.color='#eee';
		is_sug_search = 1;
	}

	$('txt_query').focus();
}

// Executes the actual search
function doSuggestSearch(){
	if($('suggestionSwitch')) {
		if($('suggestionSwitch').get('value') == 'disabled') {
			return false;
		}

		if($('txt_query').value != '') {
			if($('phone_url').get('value') != '') {
				window.location	= '/' + sug_pages[$('contentType').value] + '/' + $('phone_url').get('value') + sug_pages[$('contentType').value] + '/0-0-1-' + encodeURIComponent($('txt_query').value)+'/?searchphr=' + encodeURIComponent($('txt_query').value) + '&searchcat=' + sug_pages[$('contentType').value] + '&sug-search=' + is_sug_search;
			} else {
				window.location	= '/' + sug_pages[$('contentType').value] + '/0-0-1-' + encodeURIComponent($('txt_query').value)+'/?searchphr=' + encodeURIComponent($('txt_query').value) + '&searchcat=' + sug_pages[$('contentType').value] + '&sug-search=' + is_sug_search;
			}

		}
	}
	return false;
}

// Sends Ajax request
function sendAjaxSuggest(){
	sug_keypresses--;
	if (sug_keypresses!=0) return false;
	var keyword = $('txt_query').value;
	if (keyword == sug_prev_request) return false;
	sug_prev_request = keyword;
	//Do not do a request if the start of the word has already returned an empty result
	if(sug_last_no_result && keyword.indexOf(sug_last_no_result) == 0) return false;
	if (keyword!=''){
		if($defined(sug_cache[keyword]) && sug_cache[keyword].cache_time < new Date().getTime() + 10*60*1000) {
			populateSuggestBox(sug_cache[keyword]);
		} else {
			if (sug_current_requests == 1) {
				http_request.abort();
			}
			sug_current_requests++;
			var country = $('country').value;
			var ctype = $('contentType').value;
			if( ctype == 1 ) {
				sug_cclass = $( 'phone_wall_class' ).get( 'value' )
			} else if( ctype == 2 ) {
				sug_cclass = $( 'phone_theme_class' ).get( 'value' )
			}
			makePOSTRequest('/ajax/ajax-keyword-suggest.php', 'kw='+encodeURIComponent(keyword)+'&country='+encodeURIComponent(country)+'&ctype='+encodeURIComponent(ctype)+'&class='+encodeURIComponent(sug_cclass)+'&count=15&req='+encodeURIComponent(sug_total_requests), suggestCallback);
			sug_total_requests++;
		}
	}else{
		hideSuggest();
	}
	return false;
}

// Ajax callback function
function suggestCallback(){
	sug_current_requests--;
	if (http_request.readyState == 4 && http_request.status == 200) {
		try {
			var json = eval('(' + http_request.responseText + ')');
		} catch (e){
			return false;
		}
		if (json.success!=="undefined" && json.success==true){
			populateSuggestBox(json);

			json.cache_time = new Date().getTime();
			sug_cache[json.keyword] = json;
			sug_cache_size++;

			//Prune oldest keyword if larger than max cache size
			if(sug_cache_size > sug_cache_limit)
			{
				var oldest_keyword = '';
				var oldest_timestamp = new Date().getTime();

				for(var i in sug_cache) {
					if(sug_cache[i].cache_time < oldest_timestamp) {
						oldest_keyword = sug_cache[i].keyword;
						oldest_timestamp = sug_cache[i].cache_time;
					}
				}

				delete sug_cache[oldest_keyword];
				sug_cache_size--;
			}
		}
	}
}

function populateSuggestBox(json) {
	sug_kw_size=0;
	sug_curr_sel=-1;
	res_obj = $('result');
	if (json.data==false){
		var s=1;
		res_obj.style.height=((s*21)+0)+'px';
		res_obj.innerHTML='<p class="sug_p" style="font-style:italic;color:#ccc;">No suggestions</p>';
		$('result').style.display='block';
		sug_last_no_result = json.keyword;
	}else{
		var s = json.data.length;
		res_obj.style.height=((s*21)+0)+'px';
		var html_temp = ''
		for (x=0;x<s;x++){
			html_temp+='<p onmouseout="sug_mouse_over=0;" onmouseover="if(new Date().getTime() > sug_populate_time + 100) { setSuggestionSelection('+x+');sug_mouse_over=1; }" onclick="sug_mouse_over=1;setSuggestionSelection('+x+');doSuggestSearch();" id="kw_'+x+'" class="sug_p"><span class="floatLeft" id="kwt_'+x+'">'+json.data[x].keyword+'</span><span id="sugg_items_'+x+'" class="suggestRight floatRight">'+json.data[x].result_size+' items</span></p>';
		}
		res_obj.innerHTML = html_temp;
		var html_temp = '';
		sug_kw_size=s;
		$('result').style.display='block';
	}
	sug_populate_time = new Date().getTime();
}

// -------------------------------------------------------------------------------
// JS-file: ringtone-player.js
// -------------------------------------------------------------------------------
var rtp_playing="none";

function rtpMakeCall(str)
{
	if ($(rtp_playing))
    	$(rtp_playing).rtpAsFunction('stopplay');
}

function rtpJsFunction(aString)
{
	if((rtp_playing!="none")&&(rtp_playing!=aString))
	{
		rtpMakeCall(rtp_playing);
	}
    rtp_playing=aString;
}

function rtpRefresh(rt_player)
{
	rt_player.rtpAsRefresh('over');
}



//
// Activity Stream
//
function zjsGetStreamItems(e,p){
	var el = $( e );
	if( el.get('text')=='View less' ){
		el.set('text','View all');
		$(e+'_slider').slide('out');
		return true;
	} else if(el.get('text')=='View all' && $(e+'_slider').get('html') != '') {
		el.set('text','View less');
		$(e+'_slider').slide('in');
		return true;
	} else {
		r = new Request.JSON({
			url: '/ajax/ajax-stream-more.php',
			data: 'p='+p
		});
		r.addEvent( 'onComplete', function(j) {
			if ( j ) {
				$(e+'_slider').set('html', j.html);
				$(e+'_slider').slide('hide');
				$(e+'_slider').setStyle('display', 'block');
				$(e+'_slider').slide('in');
				el.set('text','View less');
				//Insert ringtoneplayers
				if ( j.embeds ) {
					for( x in j.embeds){
						$(x).set('html', j.embeds[x]);
					}
				}
			}
		} );
		r.send();
	}
}
var selectorSelected = new Hash();

/**
 * Helpbox in secondlevelbox
 */
function zjsToggleSecondLevelHelp( id ){
	var helpSlide = new Fx.Slide( $(id), { duration: 200 } );
	var class_name = 'helpTextOpen';
	if(($(id).hasClass(class_name) )) {
		helpSlide.show();
	}
	else {
		helpSlide.hide();
		$(id).setStyle('display', 'block');
	}
	$(id).toggleClass(class_name);
	helpSlide.toggle();
}

/**
 * Populate selected items in selector
 */
function zjsAddSelectedItem(id) {
	children = $('selectorSelectedItems').getElements('li.selectorListItem');
	if (children.length < $( 'selectedListLimit' ).get( 'value' ) ) {
		$( 'selectorOverlay' ).setStyle( 'display', 'block' );
		selectorSelected.set(id, 'true');
		
		var selected = $( 'li-' + id);
		var link = $( 'add-' + id);
		
		link.set( 'html', 'Remove' );
		link.onclick = function() { zjsRemoveSelectedItem('' + id + ''); };
		
		$( 'selectorSelectedItems' ).grab(selected);
		zjsUpdateSelectorLists();
		
		if( $( 'selectedListBox' ).getStyle( 'display' ) == 'none' ) {
			$( 'selectedListBox' ).setStyle( 'display', 'block' );
		}
		$( 'selectorOverlay' ).setStyle( 'display', 'none' );
		
	}
}

/**
 * Remove the selected item from the selected list and reinsert it in the selector list
 */
function zjsRemoveSelectedItem(id) {
	selectorSelected.erase(id);
	var item = $( 'li-' + id );
	var ctype = id.substr(id.lastIndexOf('-') + 1);
	var checked = false;
	$$( '.selectorCtypeCheck' ).each( function(elem) {
		if( elem.checked ) checked = true;
	} );
	
	if( !checked || ($defined( $( 'check' + ctype )) && $('check' + ctype).checked) ) {
		
		$( 'selectorList' ).grab( item );
		
		var link = $( 'add-' + id);
		link.set('html', 'Add');
		link.onclick = function() { zjsAddSelectedItem('' + id + '');};
	
	} else {
		item.dispose();
	}
	
	zjsUpdateSelectorLists();
	
	if( $('selectorSelectedItems').get( 'html') == '' ) {
		$( 'selectedListBox' ).setStyle( 'display', 'none' );
	}
}

/*
 * Generic selector
 */
function ajaxSelectorFilter(container, filter) {
	if(filter != 'false' && $('getMoreLink').hasClass('disabled')) {
		$('getMoreLink').removeClass('disabled');
	}
	if(!$('getMoreLink').hasClass('disabled')) {
		$( 'selectorOverlay' ).setStyle( 'display', 'block' );
		ajax_update_div	= container;
	
		var ctypes = '';
		if ($defined($('checkpeople'))) {
		    ctypes += '19'; 
		    if ($defined($('checkgroup'))) {
		        ctypes += '+' + $('checkgroup').get('value');
		    }
		} else {
            $$('input.selectorCtypeCheck').each(
                function(el) {
                    if(el.get('checked')) {
                        ctypes += el.getAttribute('id').substring(5)+'+';
                    }
                }
            );
        }
		var start = $( 'selectorRangeStart' ).get( 'value' );
		var limit = $( 'selectorRangeLimit' ).get( 'value' );
		var parameters = 'start='+start+'&ctypes='+ctypes+'&limit='+limit;
		
		if( filter == 'filter' ) {
			start = 0;
			parameters = 'start='+start+'&ctypes='+ctypes+'&limit='+limit+'&filter=on';
		}
		else if( filter != 'false' ) {
			start = 0;
			parameters = 'start='+start+'&ctypes='+ctypes+'&limit='+limit+'&search='+$('selectorSearch').get('value');
			if( $('selectorSearch').get('value') == '' ) {
				zjsSearchFieldBlur( 'selectorSearch', 0 );
			}
		}
		if( selectorSelected.getLength() > 0 ) {
			parameters += '&except=';
			selectorSelected.each( function( value, key) {
				parameters += key + ',';
			});
		}
		if( $( 'selectorExclude' ) && $( 'selectorExclude' ).get( 'value' ) != 0) {
			parameters += '&exclude=' + $( 'selectorExclude' ).get( 'value' );
		}
		r = new Request.JSON({
			url: '/ajax/ajax-get-filtered-items.php',
			data: parameters
		});
		r.addEvent('onComplete', function(json) {
			if(json.message && $defined( $(ajax_update_div) )) {
				var items = '';
				var start = parseInt($( 'selectorRangeStart' ).get( 'value' )) + parseInt(json.found_items);
				if(json.filter) {
				    if (json.found_items == 0) {
				        $(ajax_update_div).set( 'html', json.message );
				    } else {
                        for( var item = 0; item < json.message.length; item++ ) {
                            items += json.message[item];
                        }
                        $(ajax_update_div).set( 'html', items );
                    }
					$( 'selectorRangeStart' ).set( 'value', 10 );
					$( 'selectorMode' ).set( 'value', 'normal' );
				}
				else {
					for( var item = 0; item < json.message.length; item++ ) {
						items += json.message[item];
					}
					if( $( 'selectorMode' ).get( 'value' ) ==  'normal'  ) {
						$(ajax_update_div).set( 'html', $(ajax_update_div).get('html') + items );
					} else {
						$(ajax_update_div).set( 'html', items );
					}
					$( 'selectorRangeStart' ).set( 'value', (parseInt(start)));
					$( 'selectorMode' ).set( 'value', 'normal' );
				}
				zjsUpdateSelectorLists();
				if( parseInt( json.total_count - start) <= 0 || json.found_items == 0 ) {
					$('getMoreLink').addClass( 'disabled' );
				}
				if( json.rtplayer != null ) {
					for( var rtplayer in json.rtplayer ) {
						$( 'ringtone-' + rtplayer ).set( 'html', json.rtplayer[rtplayer] );
					}
				}
			}
			$( 'selectorOverlay' ).setStyle( 'display', 'none' );
		});
		r.send();
	}
}

function zjsSelectorShowClear(){
    if ($defined($('clearSearchHelper'))) {
        if ($('selectorSearch').get('value') != '' && $('clearSearchHelper').getStyle('display') != 'block') {
            $('clearSearchHelper').setStyle('display', 'block');
        } else if ($('selectorSearch').get('value') == '') {
            $('clearSearchHelper').setStyle('display', 'none');
        }
    }
}

function checkKeyPress(e){
	key = (window.event) ? event.keyCode : e.keyCode;
	if (key == 13){
		return true;
	}
	return false;
}


function submitGenericSelector(button, form){
	button.disabled=true;
	button.addClass("disabled");
	f = $(form);
	if( selectorSelected.getLength() > 0 ){
		ids = "";
		selectorSelected.each( function( value, key){
			ids += key + ',';
		});
		ids = ids.slice(0, -1);
		$("selectedIds").set('value', ids);
		f.submit();
	}
	else{
		button.disabled=false;
		button.removeClass("disabled");
		return false;
	}
}



/**
 * Update the zebra stripes in the selectorlist
 */
function zjsUpdateSelectorLists() {
	var className = '';
	$$( '#selectorList li.selectorListItem').each( function( li ) {
		if(className == ''){
			if( li.hasClass( 'zebra' ) ) {
				li.removeClass( 'zebra' );
			}
			className = 'zebra';
		} else {
			li.addClass(className);
			className = '';
		}
	});
	var className = '';
	$$( '#selectorSelectedItems li.selectorListItem').each( function( li ) {
		if(className == ''){
			if( li.hasClass( 'zebra' ) ) {
				li.removeClass( 'zebra' );
			}
			className = 'zebra';
		} else {
			li.addClass(className);
			className = '';
		}
	});
}

function profileBoxHandler(event)
{
	var clickedElement = $(event.target);
	if(clickedElement.match('a')) event.stop();
	var isPagination = clickedElement.hasClass('pagLink');
	var isSorting = clickedElement.getParent().hasClass('sortLink');
	var box = clickedElement.getParents('.box')[0];

	if($defined(box))
	{
		var box_id = box.get('id');
		var name = $('profile_owner').get('value');
		if( $defined( $('type_group' ) ) ){
			var type = 1; //Type group
		} else {
			var type = 0; //Type user
		}
		var section = $('profile_section').get('value');
		var page = 0;
		var sort_by = false;
		var my_phone_only = false;

		//Make loader overlay visible
		var overlay = box.getElement('.loaderOverlay');
		if(overlay) {
			var spinner = overlay.getFirst('.loaderOverlaySpinner');
			if(spinner) {
				overlay.setStyle( 'opacity', '0.7' );
				spinner.setStyle( 'display', 'block' );
			}
		}

		if($defined($(box_id+'_sort')))
		{
			//A sort link was clicked, fetch from clicked element
			if(isSorting) sort_by  = clickedElement.getAttribute('rel').toLowerCase();
			//Otherwise just choose the active sort link
			else
			{
				var active_li = $(box_id+'_sort').getFirst('.active');
				if(active_li) sort_by = active_li.getFirst().getAttribute('rel').toLowerCase();
			}

			//Fetch my phone only filter for Mobile stuff boxes
			var filter_checkbox = $(box_id+'_sort').getFirst('.filterCheckbox');
			if(filter_checkbox) my_phone_only = filter_checkbox.getFirst().get('checked');
		}

		//Only fetch the page if a pagination link was clicked, as a sorting or filter change
		//resets to the first page.
		if(isPagination) page = clickedElement.getAttribute('rel').toInt();

		ajaxProfileUpdateBox(box, name, section, page, sort_by, my_phone_only, type);
	}
}

function profileAddHandlers(box_id)
{
	var pagSelector = 'a.pagLink';
	var pagLinks = false;
	//If a box id has been passed, limit to that box only
	if($defined(box_id)) pagLinks = $(box_id).getElements(pagSelector);
	else pagLinks = $$(pagSelector);
	if(pagLinks) pagLinks.addEvent('click', profileBoxHandler);

	var sortSelector = 'li.sortLink a';
	var sortLinks = false;
	//If a box id has been passed, limit to that box only
	if($defined(box_id)) sortLinks = $(box_id).getElements(sortSelector);
	else sortLinks = $$(sortSelector);
	if(sortLinks) sortLinks.addEvent('click', profileBoxHandler);

	var filterSelector = 'li.filterCheckbox input';
	var filterCheckboxes = false;
	//If a box id has been passed, limit to that box only
	if($defined(box_id)) filterCheckboxes = $(box_id).getElements(filterSelector);
	else filterCheckboxes = $$(filterSelector);
	if(filterCheckboxes) filterCheckboxes.addEvent('click', profileBoxHandler);
}

function ajaxProfileUpdateBox(box, name, section, page, sort_by, my_phone_only, type)
{
	var htmlRequest = new Request.HTML({
		url: '/ajax/ajax-profile-dynamic-boxes.php',
		onSuccess: (function(responseTree, responseElements) {
			var new_box = responseElements[0];
			if(new_box) {
				var parent = box.getParent();
				var prevSibling = box.getPrevious();
				box.dispose();
				//Add the replacement after the previous sibling if it has one
				if($defined(prevSibling)) new_box.inject(prevSibling, 'after');
				//Otherwise add it first in the parent container
				else new_box.inject(parent, 'top');

				profileAddHandlers(new_box.get('id'));

				//Also update the guestbook commenters box if changing guestbook page
				if(box.get('id') == 'guestbook' && $defined($('gbcommenters'))) {
					ajaxProfileUpdateBox($('gbcommenters'), name, section, page, false);
				}
			}
		})
		//TODO: add onFailure
	}).post({
		'name': name,
		'section': section,
		'box_id': box.get('id'),
		'page': page,
		'sort_by': sort_by,
		'type': type,
		'my_phone_only': my_phone_only ? 1 : 0 //Only used for wallpaper and theme stuff boxes
	});
}

function ZJShandleFriendRequest(mode, user, ckey, invite, friend) {
	var parameters	= 'data=' + mode +'-' + user + '-' + ckey + '-' + invite + '-' + friend;
	makePOSTRequest('/ajax/ajax-handle-friend-request.php', parameters, ZJShandleFriendRequestCallback);
}

function ZJShandleFriendRequestCallback() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var json = eval('(' + http_request.responseText + ')');
			if(json.success == true) {
				$(json.fr_id).getElement( 'span.accept' ).dispose();
				$(json.fr_id).getElement( 'span.decline' ).dispose();
				$(json.fr_id).set('html', $(json.fr_id).get('html') + json.message);
			} else {
				alert(json.message);
			}
		}
	}
}
/* Function to show hover block */
function ZJSshowHover(element, id, top, right, bottom, left) {
	if( right > 0 ) {
		$( id ).setStyles( {'top': parseInt(element.offsetTop + top), 'left': parseInt(element.offsetLeft - right), 'display': 'block'});
	} else if( left > 0 ) {
		$( id ).setStyles( {'top': parseInt(element.offsetTop + top), 'left': parseInt(element.offsetLeft + left), 'display': 'block'});
	}


}
/* Function to hide hover block */
function ZJShideHover(id) {
	$(id).setStyle( 'display', 'none' );
}

/* onUploadComplete event handler for the iframe uploader on the My Account->Change avatar page */
function updateAvatarCropper(img_src, upload_timestamp, ext, meta) {
	var min_size = $('logo_cropper_cropper0').getSize();
	var min_width = min_size.x;
	var min_height = min_size.y;
	var logo_changed = $('logo_cropper_changed');

	if(
		//This is an image
		$defined(meta['mimetype']) && meta['mimetype'].substring(0, 5) == 'image' &&
		//The minimum width requirement is met
		$defined(meta['img_width']) && meta['img_width'] >= min_width &&
		//The minimum height requirement is met
		$defined(meta['img_height']) && meta['img_height'] >= min_height
	)
	{
		//Fade in cropper
		if( logo_changed.get('value') == 0 ) {
			zjsCropperFadeIn('logo');
			$('logo_cropper_cancel').setStyle('display', 'block');
			$('logoDragOverlay').setStyle('display', 'block');
		}
		$('spinner_logo').setStyle('visibility', 'hidden');
		$('logo_timestamp').set('value', upload_timestamp);
		$('logo_ext').set('value', ext);
		logo_changed.set('value', '1');

		var startScale = Math.max( min_width / meta['img_width'], min_height / meta['img_height'] );
		logo_cropper.options.first_cropper_position = { x:1, y:1, scale:startScale };
		logo_cropper.changeImage(img_src);
	}
	else
	{
		if( logo_changed.get('value') == 1 ) {
			zjsCropperFadeOut('logo');
		}
		$('spinner_logo').setStyle('visibility', 'hidden');
		var span_tooltip2 = $('logoTooltip2');
		span_tooltip2.setStyle('color', '#a00');
		span_tooltip2.setStyle('fontWeight', 'bold');
	}
}

function avatarUploadSubmitHandler() {
	var span_tooltip2 = $('logoTooltip2');
	span_tooltip2.setStyle('color', '#666');
	span_tooltip2.setStyle('fontWeight', 'normal');
	$('spinner_logo').setStyle('visibility', 'visible');
}