﻿
var vk_logged, vk_login_hnd, vk_user;

function VK_init_async(callback, initcallback) {
	vk_login_hnd = callback;
	
	window.vkAsyncInit = function() {
		VK.Observer.subscribe('auth.login', function(r) {			
			vk_login_callback(true);
        });
		VK.init({ apiId: "1864844", nameTransportPath: "/xd_receiver.html", status: true });
		if(initcallback) initcallback();
	};
	(function() {
		var el = document.createElement("script");
		el.type = "text/javascript";
		el.charset = "windows-1251";
		el.src = "http://vkontakte.ru/js/api/openapi.js";
		el.async = true;
		document.getElementById("vk_api_transport").appendChild(el);
	}());
}

function VK_login() {
	VK.Auth.login(vk_login_callback, VK.access.PHOTOS | VK.access.FRIENDS);
}


function vk_login_callback(response) {
	if(response == true || response.status == "connected") {
		vk_logged = true;
		VK.Api.call('getUserInfoEx', {}, function(r){
			if(r.response) {
				vk_user = r.response;
				vk_user.uid = vk_user.user_id;
				vk_user.photo_big = vk_user.user_photo;
				vk_user.photo_medium = vk_user.user_photo;
				vk_login_hnd(r.response);
			}
		});	
	} else {
		vk_login_hnd(false);
	}
}


function VK_getFriends(callback) {
	startBlockUI();
	var code = 'return API.getProfiles({uids:API.getFriends(),fields:["uid","first_name","last_name","photo_big","photo_medium"]});';
	VK.Api.call('execute', {'code': code}, function(r){
		$.unblockUI();	
		if(r.response) {
			var f = r.response;
			for(var i=0; i<f.length; i++) {
				f[i].user_name = f[i].first_name+' '+f[i].last_name;
			}
			callback(f);
		}
	});		
}

function VK_getAlbums(callback, uid) {
	startBlockUI();
	if(!uid) uid = vk_user.user_id;
	//alert(uid);
	VK.Api.call('photos.getAlbums', {'uid': uid}, function(r){
		$.unblockUI();
		if(r.response) {
			var vk_albums = r.response;
			var thumbs = []; var tmp_ids = [];
			for(var i=0; i<r.response.length; i++) {
				x = r.response[i];
				thumbs.push(uid+'_'+x.thumb_id);
				tmp_ids[x.thumb_id] = i;
			}
			VK.Api.call('photos.getById', {photos: thumbs.join(',')}, function(r){
				if(r.response) { 
					for(var i=0; i<r.response.length; i++) {
						x = r.response[i];
						vk_albums[tmp_ids[x.pid]].thumb_src = x.src;
					}
					callback(vk_albums);
				}
			});
		}
	});
}


function VK_getPhotos(aid, callback, uid) {
	startBlockUI();
	if(!uid) uid = vk_user.user_id
	VK.Api.call('photos.get', { 'uid': uid, 'aid': aid}, function(r){
		$.unblockUI();
		if(r.response) {  //alert(dump(r.response));
			callback(r.response);
		}
	});
}


function VK_addPhoto(aid) {
	aid = 108836052;
	VK.Api.call('photos.getUploadServer', {'aid': aid}, function(r){
		$.post('/admin/vk/', {upload_url: r.response.upload_url}, function(data){
			if(data) {
				VK.Api.call('photos.save', {'aid':aid, server: data.server, photos_list: data.photos_list, hash: data.hash}, function(r){
					alert(dump(r));
				});
			}
		}, 'json');
	});
	
}






function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}	

