/*

 Zedge JS library. (c) 2007 - Kenneth Sundnes - IDT Corp.
 
*/

var http_request = false;
var global_callback;

function zSubmit(page,fromOnChange){
	if (document.getElementById('navPhone')){
		var search=trim(escape(document.getElementById('navSearch').value)).toLowerCase();
		if (!fromOnChange && (page=='wallpapers' || page=='themes') && document.getElementById('navCat').value==0 && search==''){
			alert('Please select a category or do a search.');	
		}else{
			var phone=document.getElementById('navPhone');
			var phone_name=makeURLString(phone.options[phone.options.selectedIndex].text);
			phone=phone.options[phone.options.selectedIndex].value;
			if (fromOnChange){
				var navString='';
			}else{
				var category=document.getElementById('navCat').value;
				var order=document.getElementById('navOrder').options.selectedIndex;	
				if (search!='') search='-'+search;
				var navString=category+'-'+order+'-1'+search+'/';
			}
			window.location='/'+page+'/'+phone+'/'+phone_name+'-'+page+'/'+navString;
		}
	}else if (page=='videos' || page=='ringtones'){
		var category=document.getElementById('navCat').value;
		var order=document.getElementById('navOrder').options.selectedIndex;
		var search=escape(document.getElementById('navSearch').value);
		if (search!='') search='-'+search;
		window.location='/'+page+'/'+category+'-'+order+'-1'+search+'/';
	}
	/*TODO: evaluate if next code block is in use*/
	else{
		var type=document.getElementById('navType');
		type=type.options[type.options.selectedIndex].value;
		var category=document.getElementById('navCat').value;
		var order=document.getElementById('navOrder').options.selectedIndex;
		var search=escape(document.getElementById('navSearch').value);
		if (search!='') search='-'+search;
		var navString=category+'-'+order+'-1'+search+'/';
		window.location='/'+page+'/'+type+'-'+navString;
	}
}


/*	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;
			}	
		}	
	}
}

// Find the x,y location in pixels for a relatively positioned object
// returns an object with .x and .y properties.
function findXY(obj){
	var x=0,y=0;
	while (obj!=null){
		x+=obj.offsetLeft-obj.scrollLeft;
		y+=obj.offsetTop-obj.scrollTop;
		obj=obj.offsetParent;
	}
	return {x:x,y:y};
}


// Find the x,y location in pixels for a relatively positioned object
// returns an object with .x, .y, .w (width) and .h (height) properties.
function FindXYWH(obj){
	var objXY = FindXY(obj);
	return objXY?{ x:objXY.x, y:objXY.y, w:obj.offsetWidth, h:obj.offsetHeight }:{ x:0, y:0, w:0, h:0 };
}

function findXYOpera(obj){
	var x=0,y=0;
	while (obj!=null){
		x+=obj.offsetLeft;
		y+=obj.offsetTop;
		obj=obj.offsetParent;
	}
	return {x:x,y:y};
}

function showLayer(id,parent,dx,dy){
	var obj=document.getElementById(id);
	if (obj.style.visibility!='visible'){
		
		if (ZJSisOpera()){
			if (typeof(parent)=='string') var parent=findXYOpera(document.getElementById(parent));
				else var parent=findXYOpera(parent);
			parent.x-=2;
			
		}else{
			if (typeof(parent)=='string') var parent=findXY(document.getElementById(parent));
				else var parent=findXY(parent);
		}
		if (parent.x==0 && parent.y==0) return;
		obj.style.left=(parent.x+dx)+'px';
		obj.style.top=(parent.y+dy)+'px';
		obj.style.visibility='visible';
	} else {
		obj.style.visibility='hidden';
	}
}

function hideLayer(id){
	document.getElementById(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 updateDownCounter(){
	document.getElementById('d2pccount').innerHTML=parseInt(document.getElementById('d2pccount').innerHTML)+1;
	return true;
}


function zedgeCode(myField, myValue, myValue2) {
		//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.focus();
	}
	
	
function doBlur(obj){
	document.getElementById(obj).innerHTML="";
}

function doArea(obj,obj_target,max_length,allowed_chars){
	
	obj_target=document.getElementById(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+'-,.\"/#!()?+-:*= ';
 
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 countWords(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;
}

function showPCard(uid,parent,dx,dy){
	
	if (typeof(zPCards)=="undefined") return;
	
	if (zPCards[uid][2]=="1") gender="Male";
		else gender="Female";
	obj=document.getElementById('zProfCard');
	obj.innerHTML="<h3 style='margin:0px 0px 10px 0px;'>"+zPCards[uid][0]+"</h3>"+
	"<p style='line-height:17px;margin-bottom:0px;'><img style='float:left;margin-right:12px;width:85px;height:85px;' src='"+zPCards[uid][1]+"'>"+
	"<span style='font-size:13px;color:#555555'>"+
	"<b>Gender:</b> &nbsp;"+gender+"<br/>"+
	"<b>Age:</b> &nbsp;"+zPCards[uid][3]+"<br/>"+
	"<b>Country:</b> &nbsp;"+zPCards[uid][4]+"<br/>"+
	"<b>Phone:</b> &nbsp;"+zPCards[uid][5]+"<br/>"+
	"<b>Online Status:</b> &nbsp;<span>"+zPCards[uid][6]+"</span></span></p>";
	showLayer('zProfCard',parent,dx,dy);
	
}
	
function hidePCard(){
	if (typeof(zPCards)=="undefined") return;
	showLayer('zProfCard',null,0,0);
}

// Makes the flash so we dont have to click it in IE
function createControl(divID, content){
  document.getElementById(divID).innerHTML = content;
}


   	
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,"");
	}
}

function ZJSdoRating(ctype,item_id,vote){
	parameters="rate="+ctype+"-"+item_id+"-"+vote;
	document.getElementById('zpdovote').innerHTML='. . .';
	makePOSTRequest('/ajax/ajax-rating-new.php', parameters, ZJSdoRatingCallback);
}

function ZJSdoRatingCallback(){
	if (http_request.readyState == 4) {
		if (http_request.status == 200){
			var json = eval('(' + http_request.responseText + ')');
			if(json.success == true){
				document.getElementById('zprspan').innerHTML=json.rate_html;
				document.getElementById('zpdovote').innerHTML='<img style="vertical-align:middle;margin-right:7px;width:24px;height:24px;" src="http://app.zedge.net/static/images/check-large.gif"> Thank you for rating!';
			}else{
				//TODO 
				//differntiate on cause of failure
				//1. has already voted
				//2. is not logged in
				if(json.user_logged_in == true){
					document.getElementById('zpdovote').innerHTML='You can only vote once.';
				} else {
					document.getElementById('zpdovote').innerHTML='You must <a href="/sign-in/">sign in</a> to vote.';
				}
			}
		}
	}	
}

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;
}


function ZJSToggleDownLayer(parentobj,dotest){
	obj=document.getElementById('zdDownLayer');
	if (typeof(obj)=="undefined") return;
	if (obj.style.visibility=='visible'){
		hideLayer('zdDownLayer');
	}else{
		if (dotest)	showLayer('zdDownLayer',parentobj, (ZJSisIE()?3:2), -obj.offsetHeight-5);
			else showLayer('zdDownLayer',parentobj, 2, -obj.offsetHeight-5);
	}
}

function gId(obj){
	return document.getElementById(obj);
}

